162306a36Sopenharmony_ci.. include:: ../disclaimer-ita.rst 262306a36Sopenharmony_ci 362306a36Sopenharmony_ci:Original: Documentation/doc-guide/index.rst 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci========================================= 662306a36Sopenharmony_ciIncludere gli i file di intestazione uAPI 762306a36Sopenharmony_ci========================================= 862306a36Sopenharmony_ci 962306a36Sopenharmony_ciQualche volta è utile includere dei file di intestazione e degli esempi di codice C 1062306a36Sopenharmony_cial fine di descrivere l'API per lo spazio utente e per generare dei riferimenti 1162306a36Sopenharmony_cifra il codice e la documentazione. Aggiungere i riferimenti ai file dell'API 1262306a36Sopenharmony_cidello spazio utente ha ulteriori vantaggi: Sphinx genererà dei messaggi 1362306a36Sopenharmony_cid'avviso se un simbolo non viene trovato nella documentazione. Questo permette 1462306a36Sopenharmony_cidi mantenere allineate la documentazione della uAPI (API spazio utente) 1562306a36Sopenharmony_cicon le modifiche del kernel. 1662306a36Sopenharmony_ciIl programma :ref:`parse_headers.pl <it_parse_headers>` genera questi riferimenti. 1762306a36Sopenharmony_ciEsso dev'essere invocato attraverso un Makefile, mentre si genera la 1862306a36Sopenharmony_cidocumentazione. Per avere un esempio su come utilizzarlo all'interno del kernel 1962306a36Sopenharmony_ciconsultate ``Documentation/userspace-api/media/Makefile``. 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci.. _it_parse_headers: 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ciparse_headers.pl 2462306a36Sopenharmony_ci^^^^^^^^^^^^^^^^ 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ciNOME 2762306a36Sopenharmony_ci**** 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ciparse_headers.pl - analizza i file C al fine di identificare funzioni, 3162306a36Sopenharmony_cistrutture, enumerati e definizioni, e creare riferimenti per Sphinx 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ciSINTASSI 3462306a36Sopenharmony_ci******** 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci\ **parse_headers.pl**\ [<options>] <C_FILE> <OUT_FILE> [<EXCEPTIONS_FILE>] 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ciDove <options> può essere: --debug, --usage o --help. 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ciOPZIONI 4362306a36Sopenharmony_ci******* 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ci\ **--debug**\ 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ci Lo script viene messo in modalità verbosa, utile per il debugging. 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ci\ **--usage**\ 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_ci Mostra un messaggio d'aiuto breve e termina. 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ci\ **--help**\ 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_ci Mostra un messaggio d'aiuto dettagliato e termina. 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ciDESCRIZIONE 6362306a36Sopenharmony_ci*********** 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ciConverte un file d'intestazione o un file sorgente C (C_FILE) in un testo 6662306a36Sopenharmony_ciReStructuredText incluso mediante il blocco ..parsed-literal 6762306a36Sopenharmony_cicon riferimenti alla documentazione che descrive l'API. Opzionalmente, 6862306a36Sopenharmony_ciil programma accetta anche un altro file (EXCEPTIONS_FILE) che 6962306a36Sopenharmony_cidescrive quali elementi debbano essere ignorati o il cui riferimento 7062306a36Sopenharmony_cideve puntare ad elemento diverso dal predefinito. 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_ciIl file generato sarà disponibile in (OUT_FILE). 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_ciIl programma è capace di identificare *define*, funzioni, strutture, 7562306a36Sopenharmony_citipi di dato, enumerati e valori di enumerati, e di creare i riferimenti 7662306a36Sopenharmony_ciper ognuno di loro. Inoltre, esso è capace di distinguere le #define 7762306a36Sopenharmony_ciutilizzate per specificare i comandi ioctl di Linux. 7862306a36Sopenharmony_ci 7962306a36Sopenharmony_ciIl file EXCEPTIONS_FILE contiene due tipi di dichiarazioni: 8062306a36Sopenharmony_ci\ **ignore**\ o \ **replace**\ . 8162306a36Sopenharmony_ci 8262306a36Sopenharmony_ciLa sintassi per ignore è: 8362306a36Sopenharmony_ci 8462306a36Sopenharmony_ciignore \ **tipo**\ \ **nome**\ 8562306a36Sopenharmony_ci 8662306a36Sopenharmony_ciLa dichiarazione \ **ignore**\ significa che non verrà generato alcun 8762306a36Sopenharmony_ciriferimento per il simbolo \ **name**\ di tipo \ **tipo**\ . 8862306a36Sopenharmony_ci 8962306a36Sopenharmony_ci 9062306a36Sopenharmony_ciLa sintassi per replace è: 9162306a36Sopenharmony_ci 9262306a36Sopenharmony_cireplace \ **tipo**\ \ **nome**\ \ **nuovo_valore**\ 9362306a36Sopenharmony_ci 9462306a36Sopenharmony_ciLa dichiarazione \ **replace**\ significa che verrà generato un 9562306a36Sopenharmony_ciriferimento per il simbolo \ **name**\ di tipo \ **tipo**\ , ma, invece 9662306a36Sopenharmony_cidi utilizzare il valore predefinito, verrà utilizzato il valore 9762306a36Sopenharmony_ci\ **nuovo_valore**\ . 9862306a36Sopenharmony_ci 9962306a36Sopenharmony_ciPer entrambe le dichiarazioni, il \ **tipo**\ può essere uno dei seguenti: 10062306a36Sopenharmony_ci 10162306a36Sopenharmony_ci 10262306a36Sopenharmony_ci\ **ioctl**\ 10362306a36Sopenharmony_ci 10462306a36Sopenharmony_ci La dichiarazione ignore o replace verrà applicata su definizioni di ioctl 10562306a36Sopenharmony_ci come la seguente: 10662306a36Sopenharmony_ci 10762306a36Sopenharmony_ci #define VIDIOC_DBG_S_REGISTER _IOW('V', 79, struct v4l2_dbg_register) 10862306a36Sopenharmony_ci 10962306a36Sopenharmony_ci 11062306a36Sopenharmony_ci 11162306a36Sopenharmony_ci\ **define**\ 11262306a36Sopenharmony_ci 11362306a36Sopenharmony_ci La dichiarazione ignore o replace verrà applicata su una qualsiasi #define 11462306a36Sopenharmony_ci trovata in C_FILE. 11562306a36Sopenharmony_ci 11662306a36Sopenharmony_ci 11762306a36Sopenharmony_ci 11862306a36Sopenharmony_ci\ **typedef**\ 11962306a36Sopenharmony_ci 12062306a36Sopenharmony_ci La dichiarazione ignore o replace verrà applicata ad una dichiarazione typedef 12162306a36Sopenharmony_ci in C_FILE. 12262306a36Sopenharmony_ci 12362306a36Sopenharmony_ci 12462306a36Sopenharmony_ci 12562306a36Sopenharmony_ci\ **struct**\ 12662306a36Sopenharmony_ci 12762306a36Sopenharmony_ci La dichiarazione ignore o replace verrà applicata ai nomi di strutture 12862306a36Sopenharmony_ci in C_FILE. 12962306a36Sopenharmony_ci 13062306a36Sopenharmony_ci 13162306a36Sopenharmony_ci 13262306a36Sopenharmony_ci\ **enum**\ 13362306a36Sopenharmony_ci 13462306a36Sopenharmony_ci La dichiarazione ignore o replace verrà applicata ai nomi di enumerati 13562306a36Sopenharmony_ci in C_FILE. 13662306a36Sopenharmony_ci 13762306a36Sopenharmony_ci 13862306a36Sopenharmony_ci 13962306a36Sopenharmony_ci\ **symbol**\ 14062306a36Sopenharmony_ci 14162306a36Sopenharmony_ci La dichiarazione ignore o replace verrà applicata ai nomi di valori di 14262306a36Sopenharmony_ci enumerati in C_FILE. 14362306a36Sopenharmony_ci 14462306a36Sopenharmony_ci Per le dichiarazioni di tipo replace, il campo \ **new_value**\ utilizzerà 14562306a36Sopenharmony_ci automaticamente i riferimenti :c:type: per \ **typedef**\ , \ **enum**\ e 14662306a36Sopenharmony_ci \ **struct**\. Invece, utilizzerà :ref: per \ **ioctl**\ , \ **define**\ e 14762306a36Sopenharmony_ci \ **symbol**\. Il tipo di riferimento può essere definito esplicitamente 14862306a36Sopenharmony_ci nella dichiarazione stessa. 14962306a36Sopenharmony_ci 15062306a36Sopenharmony_ci 15162306a36Sopenharmony_ciESEMPI 15262306a36Sopenharmony_ci****** 15362306a36Sopenharmony_ci 15462306a36Sopenharmony_ci 15562306a36Sopenharmony_ciignore define _VIDEODEV2_H 15662306a36Sopenharmony_ci 15762306a36Sopenharmony_ci 15862306a36Sopenharmony_ciIgnora una definizione #define _VIDEODEV2_H nel file C_FILE. 15962306a36Sopenharmony_ci 16062306a36Sopenharmony_ciignore symbol PRIVATE 16162306a36Sopenharmony_ci 16262306a36Sopenharmony_ci 16362306a36Sopenharmony_ciIn un enumerato come il seguente: 16462306a36Sopenharmony_ci 16562306a36Sopenharmony_cienum foo { BAR1, BAR2, PRIVATE }; 16662306a36Sopenharmony_ci 16762306a36Sopenharmony_ciNon genererà alcun riferimento per \ **PRIVATE**\ . 16862306a36Sopenharmony_ci 16962306a36Sopenharmony_cireplace symbol BAR1 :c:type:\`foo\` 17062306a36Sopenharmony_cireplace symbol BAR2 :c:type:\`foo\` 17162306a36Sopenharmony_ci 17262306a36Sopenharmony_ci 17362306a36Sopenharmony_ciIn un enumerato come il seguente: 17462306a36Sopenharmony_ci 17562306a36Sopenharmony_cienum foo { BAR1, BAR2, PRIVATE }; 17662306a36Sopenharmony_ci 17762306a36Sopenharmony_ciGenererà un riferimento ai valori BAR1 e BAR2 dal simbolo foo nel dominio C. 17862306a36Sopenharmony_ci 17962306a36Sopenharmony_ci 18062306a36Sopenharmony_ciBUGS 18162306a36Sopenharmony_ci**** 18262306a36Sopenharmony_ci 18362306a36Sopenharmony_ciRiferire ogni malfunzionamento a Mauro Carvalho Chehab <mchehab@s-opensource.com> 18462306a36Sopenharmony_ci 18562306a36Sopenharmony_ci 18662306a36Sopenharmony_ciCOPYRIGHT 18762306a36Sopenharmony_ci********* 18862306a36Sopenharmony_ci 18962306a36Sopenharmony_ci 19062306a36Sopenharmony_ciCopyright (c) 2016 by Mauro Carvalho Chehab <mchehab@s-opensource.com>. 19162306a36Sopenharmony_ci 19262306a36Sopenharmony_ciLicenza GPLv2: GNU GPL version 2 <https://gnu.org/licenses/gpl.html>. 19362306a36Sopenharmony_ci 19462306a36Sopenharmony_ciQuesto è software libero: siete liberi di cambiarlo e ridistribuirlo. 19562306a36Sopenharmony_ciNon c'è alcuna garanzia, nei limiti permessi dalla legge. 196