18c2ecf20Sopenharmony_ci.. include:: ../disclaimer-ita.rst 28c2ecf20Sopenharmony_ci 38c2ecf20Sopenharmony_ci.. note:: Per leggere la documentazione originale in inglese: 48c2ecf20Sopenharmony_ci :ref:`Documentation/doc-guide/index.rst <doc_guide>` 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci========================================= 78c2ecf20Sopenharmony_ciIncludere gli i file di intestazione uAPI 88c2ecf20Sopenharmony_ci========================================= 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ciQualche volta è utile includere dei file di intestazione e degli esempi di codice C 118c2ecf20Sopenharmony_cial fine di descrivere l'API per lo spazio utente e per generare dei riferimenti 128c2ecf20Sopenharmony_cifra il codice e la documentazione. Aggiungere i riferimenti ai file dell'API 138c2ecf20Sopenharmony_cidello spazio utente ha ulteriori vantaggi: Sphinx genererà dei messaggi 148c2ecf20Sopenharmony_cid'avviso se un simbolo non viene trovato nella documentazione. Questo permette 158c2ecf20Sopenharmony_cidi mantenere allineate la documentazione della uAPI (API spazio utente) 168c2ecf20Sopenharmony_cicon le modifiche del kernel. 178c2ecf20Sopenharmony_ciIl programma :ref:`parse_headers.pl <it_parse_headers>` genera questi riferimenti. 188c2ecf20Sopenharmony_ciEsso dev'essere invocato attraverso un Makefile, mentre si genera la 198c2ecf20Sopenharmony_cidocumentazione. Per avere un esempio su come utilizzarlo all'interno del kernel 208c2ecf20Sopenharmony_ciconsultate ``Documentation/userspace-api/media/Makefile``. 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_ci.. _it_parse_headers: 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ciparse_headers.pl 258c2ecf20Sopenharmony_ci^^^^^^^^^^^^^^^^ 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_ciNOME 288c2ecf20Sopenharmony_ci**** 298c2ecf20Sopenharmony_ci 308c2ecf20Sopenharmony_ci 318c2ecf20Sopenharmony_ciparse_headers.pl - analizza i file C al fine di identificare funzioni, 328c2ecf20Sopenharmony_cistrutture, enumerati e definizioni, e creare riferimenti per Sphinx 338c2ecf20Sopenharmony_ci 348c2ecf20Sopenharmony_ciSINTASSI 358c2ecf20Sopenharmony_ci******** 368c2ecf20Sopenharmony_ci 378c2ecf20Sopenharmony_ci 388c2ecf20Sopenharmony_ci\ **parse_headers.pl**\ [<options>] <C_FILE> <OUT_FILE> [<EXCEPTIONS_FILE>] 398c2ecf20Sopenharmony_ci 408c2ecf20Sopenharmony_ciDove <options> può essere: --debug, --usage o --help. 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ci 438c2ecf20Sopenharmony_ciOPZIONI 448c2ecf20Sopenharmony_ci******* 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_ci 488c2ecf20Sopenharmony_ci\ **--debug**\ 498c2ecf20Sopenharmony_ci 508c2ecf20Sopenharmony_ci Lo script viene messo in modalità verbosa, utile per il debugging. 518c2ecf20Sopenharmony_ci 528c2ecf20Sopenharmony_ci 538c2ecf20Sopenharmony_ci\ **--usage**\ 548c2ecf20Sopenharmony_ci 558c2ecf20Sopenharmony_ci Mostra un messaggio d'aiuto breve e termina. 568c2ecf20Sopenharmony_ci 578c2ecf20Sopenharmony_ci 588c2ecf20Sopenharmony_ci\ **--help**\ 598c2ecf20Sopenharmony_ci 608c2ecf20Sopenharmony_ci Mostra un messaggio d'aiuto dettagliato e termina. 618c2ecf20Sopenharmony_ci 628c2ecf20Sopenharmony_ci 638c2ecf20Sopenharmony_ciDESCRIZIONE 648c2ecf20Sopenharmony_ci*********** 658c2ecf20Sopenharmony_ci 668c2ecf20Sopenharmony_ciConverte un file d'intestazione o un file sorgente C (C_FILE) in un testo 678c2ecf20Sopenharmony_ciReStructuredText incluso mediante il blocco ..parsed-literal 688c2ecf20Sopenharmony_cicon riferimenti alla documentazione che descrive l'API. Opzionalmente, 698c2ecf20Sopenharmony_ciil programma accetta anche un altro file (EXCEPTIONS_FILE) che 708c2ecf20Sopenharmony_cidescrive quali elementi debbano essere ignorati o il cui riferimento 718c2ecf20Sopenharmony_cideve puntare ad elemento diverso dal predefinito. 728c2ecf20Sopenharmony_ci 738c2ecf20Sopenharmony_ciIl file generato sarà disponibile in (OUT_FILE). 748c2ecf20Sopenharmony_ci 758c2ecf20Sopenharmony_ciIl programma è capace di identificare *define*, funzioni, strutture, 768c2ecf20Sopenharmony_citipi di dato, enumerati e valori di enumerati, e di creare i riferimenti 778c2ecf20Sopenharmony_ciper ognuno di loro. Inoltre, esso è capace di distinguere le #define 788c2ecf20Sopenharmony_ciutilizzate per specificare i comandi ioctl di Linux. 798c2ecf20Sopenharmony_ci 808c2ecf20Sopenharmony_ciIl file EXCEPTIONS_FILE contiene due tipi di dichiarazioni: 818c2ecf20Sopenharmony_ci\ **ignore**\ o \ **replace**\ . 828c2ecf20Sopenharmony_ci 838c2ecf20Sopenharmony_ciLa sintassi per ignore è: 848c2ecf20Sopenharmony_ci 858c2ecf20Sopenharmony_ciignore \ **tipo**\ \ **nome**\ 868c2ecf20Sopenharmony_ci 878c2ecf20Sopenharmony_ciLa dichiarazione \ **ignore**\ significa che non verrà generato alcun 888c2ecf20Sopenharmony_ciriferimento per il simbolo \ **name**\ di tipo \ **tipo**\ . 898c2ecf20Sopenharmony_ci 908c2ecf20Sopenharmony_ci 918c2ecf20Sopenharmony_ciLa sintassi per replace è: 928c2ecf20Sopenharmony_ci 938c2ecf20Sopenharmony_cireplace \ **tipo**\ \ **nome**\ \ **nuovo_valore**\ 948c2ecf20Sopenharmony_ci 958c2ecf20Sopenharmony_ciLa dichiarazione \ **replace**\ significa che verrà generato un 968c2ecf20Sopenharmony_ciriferimento per il simbolo \ **name**\ di tipo \ **tipo**\ , ma, invece 978c2ecf20Sopenharmony_cidi utilizzare il valore predefinito, verrà utilizzato il valore 988c2ecf20Sopenharmony_ci\ **nuovo_valore**\ . 998c2ecf20Sopenharmony_ci 1008c2ecf20Sopenharmony_ciPer entrambe le dichiarazioni, il \ **tipo**\ può essere uno dei seguenti: 1018c2ecf20Sopenharmony_ci 1028c2ecf20Sopenharmony_ci 1038c2ecf20Sopenharmony_ci\ **ioctl**\ 1048c2ecf20Sopenharmony_ci 1058c2ecf20Sopenharmony_ci La dichiarazione ignore o replace verrà applicata su definizioni di ioctl 1068c2ecf20Sopenharmony_ci come la seguente: 1078c2ecf20Sopenharmony_ci 1088c2ecf20Sopenharmony_ci #define VIDIOC_DBG_S_REGISTER _IOW('V', 79, struct v4l2_dbg_register) 1098c2ecf20Sopenharmony_ci 1108c2ecf20Sopenharmony_ci 1118c2ecf20Sopenharmony_ci 1128c2ecf20Sopenharmony_ci\ **define**\ 1138c2ecf20Sopenharmony_ci 1148c2ecf20Sopenharmony_ci La dichiarazione ignore o replace verrà applicata su una qualsiasi #define 1158c2ecf20Sopenharmony_ci trovata in C_FILE. 1168c2ecf20Sopenharmony_ci 1178c2ecf20Sopenharmony_ci 1188c2ecf20Sopenharmony_ci 1198c2ecf20Sopenharmony_ci\ **typedef**\ 1208c2ecf20Sopenharmony_ci 1218c2ecf20Sopenharmony_ci La dichiarazione ignore o replace verrà applicata ad una dichiarazione typedef 1228c2ecf20Sopenharmony_ci in C_FILE. 1238c2ecf20Sopenharmony_ci 1248c2ecf20Sopenharmony_ci 1258c2ecf20Sopenharmony_ci 1268c2ecf20Sopenharmony_ci\ **struct**\ 1278c2ecf20Sopenharmony_ci 1288c2ecf20Sopenharmony_ci La dichiarazione ignore o replace verrà applicata ai nomi di strutture 1298c2ecf20Sopenharmony_ci in C_FILE. 1308c2ecf20Sopenharmony_ci 1318c2ecf20Sopenharmony_ci 1328c2ecf20Sopenharmony_ci 1338c2ecf20Sopenharmony_ci\ **enum**\ 1348c2ecf20Sopenharmony_ci 1358c2ecf20Sopenharmony_ci La dichiarazione ignore o replace verrà applicata ai nomi di enumerati 1368c2ecf20Sopenharmony_ci in C_FILE. 1378c2ecf20Sopenharmony_ci 1388c2ecf20Sopenharmony_ci 1398c2ecf20Sopenharmony_ci 1408c2ecf20Sopenharmony_ci\ **symbol**\ 1418c2ecf20Sopenharmony_ci 1428c2ecf20Sopenharmony_ci La dichiarazione ignore o replace verrà applicata ai nomi di valori di 1438c2ecf20Sopenharmony_ci enumerati in C_FILE. 1448c2ecf20Sopenharmony_ci 1458c2ecf20Sopenharmony_ci Per le dichiarazioni di tipo replace, il campo \ **new_value**\ utilizzerà 1468c2ecf20Sopenharmony_ci automaticamente i riferimenti :c:type: per \ **typedef**\ , \ **enum**\ e 1478c2ecf20Sopenharmony_ci \ **struct**\. Invece, utilizzerà :ref: per \ **ioctl**\ , \ **define**\ e 1488c2ecf20Sopenharmony_ci \ **symbol**\. Il tipo di riferimento può essere definito esplicitamente 1498c2ecf20Sopenharmony_ci nella dichiarazione stessa. 1508c2ecf20Sopenharmony_ci 1518c2ecf20Sopenharmony_ci 1528c2ecf20Sopenharmony_ciESEMPI 1538c2ecf20Sopenharmony_ci****** 1548c2ecf20Sopenharmony_ci 1558c2ecf20Sopenharmony_ci 1568c2ecf20Sopenharmony_ciignore define _VIDEODEV2_H 1578c2ecf20Sopenharmony_ci 1588c2ecf20Sopenharmony_ci 1598c2ecf20Sopenharmony_ciIgnora una definizione #define _VIDEODEV2_H nel file C_FILE. 1608c2ecf20Sopenharmony_ci 1618c2ecf20Sopenharmony_ciignore symbol PRIVATE 1628c2ecf20Sopenharmony_ci 1638c2ecf20Sopenharmony_ci 1648c2ecf20Sopenharmony_ciIn un enumerato come il seguente: 1658c2ecf20Sopenharmony_ci 1668c2ecf20Sopenharmony_cienum foo { BAR1, BAR2, PRIVATE }; 1678c2ecf20Sopenharmony_ci 1688c2ecf20Sopenharmony_ciNon genererà alcun riferimento per \ **PRIVATE**\ . 1698c2ecf20Sopenharmony_ci 1708c2ecf20Sopenharmony_cireplace symbol BAR1 :c:type:\`foo\` 1718c2ecf20Sopenharmony_cireplace symbol BAR2 :c:type:\`foo\` 1728c2ecf20Sopenharmony_ci 1738c2ecf20Sopenharmony_ci 1748c2ecf20Sopenharmony_ciIn un enumerato come il seguente: 1758c2ecf20Sopenharmony_ci 1768c2ecf20Sopenharmony_cienum foo { BAR1, BAR2, PRIVATE }; 1778c2ecf20Sopenharmony_ci 1788c2ecf20Sopenharmony_ciGenererà un riferimento ai valori BAR1 e BAR2 dal simbolo foo nel dominio C. 1798c2ecf20Sopenharmony_ci 1808c2ecf20Sopenharmony_ci 1818c2ecf20Sopenharmony_ciBUGS 1828c2ecf20Sopenharmony_ci**** 1838c2ecf20Sopenharmony_ci 1848c2ecf20Sopenharmony_ciRiferire ogni malfunzionamento a Mauro Carvalho Chehab <mchehab@s-opensource.com> 1858c2ecf20Sopenharmony_ci 1868c2ecf20Sopenharmony_ci 1878c2ecf20Sopenharmony_ciCOPYRIGHT 1888c2ecf20Sopenharmony_ci********* 1898c2ecf20Sopenharmony_ci 1908c2ecf20Sopenharmony_ci 1918c2ecf20Sopenharmony_ciCopyright (c) 2016 by Mauro Carvalho Chehab <mchehab@s-opensource.com>. 1928c2ecf20Sopenharmony_ci 1938c2ecf20Sopenharmony_ciLicenza GPLv2: GNU GPL version 2 <http://gnu.org/licenses/gpl.html>. 1948c2ecf20Sopenharmony_ci 1958c2ecf20Sopenharmony_ciQuesto è software libero: siete liberi di cambiarlo e ridistribuirlo. 1968c2ecf20Sopenharmony_ciNon c'è alcuna garanzia, nei limiti permessi dalla legge. 197