137912da4SFederico Vaga.. include:: ../disclaimer-ita.rst 237912da4SFederico Vaga 3*1d6f52a7SFederico Vaga:Original: Documentation/doc-guide/index.rst 437912da4SFederico Vaga 537912da4SFederico Vaga========================================= 637912da4SFederico VagaIncludere gli i file di intestazione uAPI 737912da4SFederico Vaga========================================= 837912da4SFederico Vaga 937912da4SFederico VagaQualche volta è utile includere dei file di intestazione e degli esempi di codice C 1037912da4SFederico Vagaal fine di descrivere l'API per lo spazio utente e per generare dei riferimenti 1137912da4SFederico Vagafra il codice e la documentazione. Aggiungere i riferimenti ai file dell'API 1237912da4SFederico Vagadello spazio utente ha ulteriori vantaggi: Sphinx genererà dei messaggi 1337912da4SFederico Vagad'avviso se un simbolo non viene trovato nella documentazione. Questo permette 1437912da4SFederico Vagadi mantenere allineate la documentazione della uAPI (API spazio utente) 1537912da4SFederico Vagacon le modifiche del kernel. 1637912da4SFederico VagaIl programma :ref:`parse_headers.pl <it_parse_headers>` genera questi riferimenti. 1737912da4SFederico VagaEsso dev'essere invocato attraverso un Makefile, mentre si genera la 1837912da4SFederico Vagadocumentazione. Per avere un esempio su come utilizzarlo all'interno del kernel 1954f38fcaSMauro Carvalho Chehabconsultate ``Documentation/userspace-api/media/Makefile``. 2037912da4SFederico Vaga 2137912da4SFederico Vaga.. _it_parse_headers: 2237912da4SFederico Vaga 2337912da4SFederico Vagaparse_headers.pl 2437912da4SFederico Vaga^^^^^^^^^^^^^^^^ 2537912da4SFederico Vaga 2637912da4SFederico VagaNOME 2737912da4SFederico Vaga**** 2837912da4SFederico Vaga 2937912da4SFederico Vaga 3037912da4SFederico Vagaparse_headers.pl - analizza i file C al fine di identificare funzioni, 3137912da4SFederico Vagastrutture, enumerati e definizioni, e creare riferimenti per Sphinx 3237912da4SFederico Vaga 3337912da4SFederico VagaSINTASSI 3437912da4SFederico Vaga******** 3537912da4SFederico Vaga 3637912da4SFederico Vaga 3737912da4SFederico Vaga\ **parse_headers.pl**\ [<options>] <C_FILE> <OUT_FILE> [<EXCEPTIONS_FILE>] 3837912da4SFederico Vaga 3937912da4SFederico VagaDove <options> può essere: --debug, --usage o --help. 4037912da4SFederico Vaga 4137912da4SFederico Vaga 4237912da4SFederico VagaOPZIONI 4337912da4SFederico Vaga******* 4437912da4SFederico Vaga 4537912da4SFederico Vaga 4637912da4SFederico Vaga 4737912da4SFederico Vaga\ **--debug**\ 4837912da4SFederico Vaga 4937912da4SFederico Vaga Lo script viene messo in modalità verbosa, utile per il debugging. 5037912da4SFederico Vaga 5137912da4SFederico Vaga 5237912da4SFederico Vaga\ **--usage**\ 5337912da4SFederico Vaga 5437912da4SFederico Vaga Mostra un messaggio d'aiuto breve e termina. 5537912da4SFederico Vaga 5637912da4SFederico Vaga 5737912da4SFederico Vaga\ **--help**\ 5837912da4SFederico Vaga 5937912da4SFederico Vaga Mostra un messaggio d'aiuto dettagliato e termina. 6037912da4SFederico Vaga 6137912da4SFederico Vaga 6237912da4SFederico VagaDESCRIZIONE 6337912da4SFederico Vaga*********** 6437912da4SFederico Vaga 6537912da4SFederico VagaConverte un file d'intestazione o un file sorgente C (C_FILE) in un testo 6637912da4SFederico VagaReStructuredText incluso mediante il blocco ..parsed-literal 6737912da4SFederico Vagacon riferimenti alla documentazione che descrive l'API. Opzionalmente, 6837912da4SFederico Vagail programma accetta anche un altro file (EXCEPTIONS_FILE) che 6937912da4SFederico Vagadescrive quali elementi debbano essere ignorati o il cui riferimento 7037912da4SFederico Vagadeve puntare ad elemento diverso dal predefinito. 7137912da4SFederico Vaga 7237912da4SFederico VagaIl file generato sarà disponibile in (OUT_FILE). 7337912da4SFederico Vaga 7437912da4SFederico VagaIl programma è capace di identificare *define*, funzioni, strutture, 7537912da4SFederico Vagatipi di dato, enumerati e valori di enumerati, e di creare i riferimenti 7637912da4SFederico Vagaper ognuno di loro. Inoltre, esso è capace di distinguere le #define 7737912da4SFederico Vagautilizzate per specificare i comandi ioctl di Linux. 7837912da4SFederico Vaga 7937912da4SFederico VagaIl file EXCEPTIONS_FILE contiene due tipi di dichiarazioni: 8037912da4SFederico Vaga\ **ignore**\ o \ **replace**\ . 8137912da4SFederico Vaga 8237912da4SFederico VagaLa sintassi per ignore è: 8337912da4SFederico Vaga 8437912da4SFederico Vagaignore \ **tipo**\ \ **nome**\ 8537912da4SFederico Vaga 8637912da4SFederico VagaLa dichiarazione \ **ignore**\ significa che non verrà generato alcun 8737912da4SFederico Vagariferimento per il simbolo \ **name**\ di tipo \ **tipo**\ . 8837912da4SFederico Vaga 8937912da4SFederico Vaga 9037912da4SFederico VagaLa sintassi per replace è: 9137912da4SFederico Vaga 9237912da4SFederico Vagareplace \ **tipo**\ \ **nome**\ \ **nuovo_valore**\ 9337912da4SFederico Vaga 9437912da4SFederico VagaLa dichiarazione \ **replace**\ significa che verrà generato un 9537912da4SFederico Vagariferimento per il simbolo \ **name**\ di tipo \ **tipo**\ , ma, invece 9637912da4SFederico Vagadi utilizzare il valore predefinito, verrà utilizzato il valore 9737912da4SFederico Vaga\ **nuovo_valore**\ . 9837912da4SFederico Vaga 9937912da4SFederico VagaPer entrambe le dichiarazioni, il \ **tipo**\ può essere uno dei seguenti: 10037912da4SFederico Vaga 10137912da4SFederico Vaga 10237912da4SFederico Vaga\ **ioctl**\ 10337912da4SFederico Vaga 10437912da4SFederico Vaga La dichiarazione ignore o replace verrà applicata su definizioni di ioctl 10537912da4SFederico Vaga come la seguente: 10637912da4SFederico Vaga 10737912da4SFederico Vaga #define VIDIOC_DBG_S_REGISTER _IOW('V', 79, struct v4l2_dbg_register) 10837912da4SFederico Vaga 10937912da4SFederico Vaga 11037912da4SFederico Vaga 11137912da4SFederico Vaga\ **define**\ 11237912da4SFederico Vaga 11337912da4SFederico Vaga La dichiarazione ignore o replace verrà applicata su una qualsiasi #define 11437912da4SFederico Vaga trovata in C_FILE. 11537912da4SFederico Vaga 11637912da4SFederico Vaga 11737912da4SFederico Vaga 11837912da4SFederico Vaga\ **typedef**\ 11937912da4SFederico Vaga 12037912da4SFederico Vaga La dichiarazione ignore o replace verrà applicata ad una dichiarazione typedef 12137912da4SFederico Vaga in C_FILE. 12237912da4SFederico Vaga 12337912da4SFederico Vaga 12437912da4SFederico Vaga 12537912da4SFederico Vaga\ **struct**\ 12637912da4SFederico Vaga 12737912da4SFederico Vaga La dichiarazione ignore o replace verrà applicata ai nomi di strutture 12837912da4SFederico Vaga in C_FILE. 12937912da4SFederico Vaga 13037912da4SFederico Vaga 13137912da4SFederico Vaga 13237912da4SFederico Vaga\ **enum**\ 13337912da4SFederico Vaga 13437912da4SFederico Vaga La dichiarazione ignore o replace verrà applicata ai nomi di enumerati 13537912da4SFederico Vaga in C_FILE. 13637912da4SFederico Vaga 13737912da4SFederico Vaga 13837912da4SFederico Vaga 13937912da4SFederico Vaga\ **symbol**\ 14037912da4SFederico Vaga 14137912da4SFederico Vaga La dichiarazione ignore o replace verrà applicata ai nomi di valori di 14237912da4SFederico Vaga enumerati in C_FILE. 14337912da4SFederico Vaga 14437912da4SFederico Vaga Per le dichiarazioni di tipo replace, il campo \ **new_value**\ utilizzerà 14537912da4SFederico Vaga automaticamente i riferimenti :c:type: per \ **typedef**\ , \ **enum**\ e 14637912da4SFederico Vaga \ **struct**\. Invece, utilizzerà :ref: per \ **ioctl**\ , \ **define**\ e 14737912da4SFederico Vaga \ **symbol**\. Il tipo di riferimento può essere definito esplicitamente 14837912da4SFederico Vaga nella dichiarazione stessa. 14937912da4SFederico Vaga 15037912da4SFederico Vaga 15137912da4SFederico VagaESEMPI 15237912da4SFederico Vaga****** 15337912da4SFederico Vaga 15437912da4SFederico Vaga 15537912da4SFederico Vagaignore define _VIDEODEV2_H 15637912da4SFederico Vaga 15737912da4SFederico Vaga 15837912da4SFederico VagaIgnora una definizione #define _VIDEODEV2_H nel file C_FILE. 15937912da4SFederico Vaga 16037912da4SFederico Vagaignore symbol PRIVATE 16137912da4SFederico Vaga 16237912da4SFederico Vaga 16337912da4SFederico VagaIn un enumerato come il seguente: 16437912da4SFederico Vaga 16537912da4SFederico Vagaenum foo { BAR1, BAR2, PRIVATE }; 16637912da4SFederico Vaga 16737912da4SFederico VagaNon genererà alcun riferimento per \ **PRIVATE**\ . 16837912da4SFederico Vaga 16937912da4SFederico Vagareplace symbol BAR1 :c:type:\`foo\` 17037912da4SFederico Vagareplace symbol BAR2 :c:type:\`foo\` 17137912da4SFederico Vaga 17237912da4SFederico Vaga 17337912da4SFederico VagaIn un enumerato come il seguente: 17437912da4SFederico Vaga 17537912da4SFederico Vagaenum foo { BAR1, BAR2, PRIVATE }; 17637912da4SFederico Vaga 17737912da4SFederico VagaGenererà un riferimento ai valori BAR1 e BAR2 dal simbolo foo nel dominio C. 17837912da4SFederico Vaga 17937912da4SFederico Vaga 18037912da4SFederico VagaBUGS 18137912da4SFederico Vaga**** 18237912da4SFederico Vaga 18337912da4SFederico VagaRiferire ogni malfunzionamento a Mauro Carvalho Chehab <mchehab@s-opensource.com> 18437912da4SFederico Vaga 18537912da4SFederico Vaga 18637912da4SFederico VagaCOPYRIGHT 18737912da4SFederico Vaga********* 18837912da4SFederico Vaga 18937912da4SFederico Vaga 19037912da4SFederico VagaCopyright (c) 2016 by Mauro Carvalho Chehab <mchehab@s-opensource.com>. 19137912da4SFederico Vaga 192*1d6f52a7SFederico VagaLicenza GPLv2: GNU GPL version 2 <https://gnu.org/licenses/gpl.html>. 19337912da4SFederico Vaga 19437912da4SFederico VagaQuesto è software libero: siete liberi di cambiarlo e ridistribuirlo. 19537912da4SFederico VagaNon c'è alcuna garanzia, nei limiti permessi dalla legge. 196