Back to home page

OSCL-LXR

 
 

    


0001 .. include:: ../disclaimer-ita.rst
0002 
0003 .. note:: Per leggere la documentazione originale in inglese:
0004           :ref:`Documentation/doc-guide/index.rst <doc_guide>`
0005 
0006 =========================================
0007 Includere gli i file di intestazione uAPI
0008 =========================================
0009 
0010 Qualche volta è utile includere dei file di intestazione e degli esempi di codice C
0011 al fine di descrivere l'API per lo spazio utente e per generare dei riferimenti
0012 fra il codice e la documentazione. Aggiungere i riferimenti ai file dell'API
0013 dello spazio utente ha ulteriori vantaggi: Sphinx genererà dei messaggi
0014 d'avviso se un simbolo non viene trovato nella documentazione. Questo permette
0015 di mantenere allineate la documentazione della uAPI (API spazio utente)
0016 con le modifiche del kernel.
0017 Il programma :ref:`parse_headers.pl <it_parse_headers>` genera questi riferimenti.
0018 Esso dev'essere invocato attraverso un Makefile, mentre si genera la
0019 documentazione. Per avere un esempio su come utilizzarlo all'interno del kernel
0020 consultate ``Documentation/userspace-api/media/Makefile``.
0021 
0022 .. _it_parse_headers:
0023 
0024 parse_headers.pl
0025 ^^^^^^^^^^^^^^^^
0026 
0027 NOME
0028 ****
0029 
0030 
0031 parse_headers.pl - analizza i file C al fine di identificare funzioni,
0032 strutture, enumerati e definizioni, e creare riferimenti per Sphinx
0033 
0034 SINTASSI
0035 ********
0036 
0037 
0038 \ **parse_headers.pl**\  [<options>] <C_FILE> <OUT_FILE> [<EXCEPTIONS_FILE>]
0039 
0040 Dove <options> può essere: --debug, --usage o --help.
0041 
0042 
0043 OPZIONI
0044 *******
0045 
0046 
0047 
0048 \ **--debug**\
0049 
0050  Lo script viene messo in modalità verbosa, utile per il debugging.
0051 
0052 
0053 \ **--usage**\
0054 
0055  Mostra un messaggio d'aiuto breve e termina.
0056 
0057 
0058 \ **--help**\
0059 
0060  Mostra un messaggio d'aiuto dettagliato e termina.
0061 
0062 
0063 DESCRIZIONE
0064 ***********
0065 
0066 Converte un file d'intestazione o un file sorgente C (C_FILE) in un testo
0067 ReStructuredText incluso mediante il blocco ..parsed-literal
0068 con riferimenti alla documentazione che descrive l'API. Opzionalmente,
0069 il programma accetta anche un altro file (EXCEPTIONS_FILE) che
0070 descrive quali elementi debbano essere ignorati o il cui riferimento
0071 deve puntare ad elemento diverso dal predefinito.
0072 
0073 Il file generato sarà disponibile in (OUT_FILE).
0074 
0075 Il programma è capace di identificare *define*, funzioni, strutture,
0076 tipi di dato, enumerati e valori di enumerati, e di creare i riferimenti
0077 per ognuno di loro. Inoltre, esso è capace di distinguere le #define
0078 utilizzate per specificare i comandi ioctl di Linux.
0079 
0080 Il file EXCEPTIONS_FILE contiene due tipi di dichiarazioni:
0081 \ **ignore**\  o \ **replace**\ .
0082 
0083 La sintassi per ignore è:
0084 
0085 ignore \ **tipo**\  \ **nome**\
0086 
0087 La dichiarazione \ **ignore**\  significa che non verrà generato alcun
0088 riferimento per il simbolo \ **name**\  di tipo \ **tipo**\ .
0089 
0090 
0091 La sintassi per replace è:
0092 
0093 replace \ **tipo**\  \ **nome**\  \ **nuovo_valore**\
0094 
0095 La dichiarazione \ **replace**\  significa che verrà generato un
0096 riferimento per il simbolo \ **name**\ di tipo \ **tipo**\ , ma, invece
0097 di utilizzare il valore predefinito, verrà utilizzato il valore
0098 \ **nuovo_valore**\ .
0099 
0100 Per entrambe le dichiarazioni, il \ **tipo**\  può essere uno dei seguenti:
0101 
0102 
0103 \ **ioctl**\
0104 
0105  La dichiarazione ignore o replace verrà applicata su definizioni di ioctl
0106  come la seguente:
0107 
0108  #define        VIDIOC_DBG_S_REGISTER    _IOW('V', 79, struct v4l2_dbg_register)
0109 
0110 
0111 
0112 \ **define**\
0113 
0114  La dichiarazione ignore o replace verrà applicata su una qualsiasi #define
0115  trovata in C_FILE.
0116 
0117 
0118 
0119 \ **typedef**\
0120 
0121  La dichiarazione ignore o replace verrà applicata ad una dichiarazione typedef
0122  in C_FILE.
0123 
0124 
0125 
0126 \ **struct**\
0127 
0128  La dichiarazione ignore o replace verrà applicata ai nomi di strutture
0129  in C_FILE.
0130 
0131 
0132 
0133 \ **enum**\
0134 
0135  La dichiarazione ignore o replace verrà applicata ai nomi di enumerati
0136  in C_FILE.
0137 
0138 
0139 
0140 \ **symbol**\
0141 
0142  La dichiarazione ignore o replace verrà applicata ai nomi di valori di
0143  enumerati in C_FILE.
0144 
0145  Per le dichiarazioni di tipo replace, il campo \ **new_value**\  utilizzerà
0146  automaticamente i riferimenti :c:type: per \ **typedef**\ , \ **enum**\  e
0147  \ **struct**\. Invece, utilizzerà :ref: per \ **ioctl**\ , \ **define**\  e
0148  \ **symbol**\. Il tipo di riferimento può essere definito esplicitamente
0149  nella dichiarazione stessa.
0150 
0151 
0152 ESEMPI
0153 ******
0154 
0155 
0156 ignore define _VIDEODEV2_H
0157 
0158 
0159 Ignora una definizione #define _VIDEODEV2_H nel file C_FILE.
0160 
0161 ignore symbol PRIVATE
0162 
0163 
0164 In un enumerato come il seguente:
0165 
0166 enum foo { BAR1, BAR2, PRIVATE };
0167 
0168 Non genererà alcun riferimento per \ **PRIVATE**\ .
0169 
0170 replace symbol BAR1 :c:type:\`foo\`
0171 replace symbol BAR2 :c:type:\`foo\`
0172 
0173 
0174 In un enumerato come il seguente:
0175 
0176 enum foo { BAR1, BAR2, PRIVATE };
0177 
0178 Genererà un riferimento ai valori BAR1 e BAR2 dal simbolo foo nel dominio C.
0179 
0180 
0181 BUGS
0182 ****
0183 
0184 Riferire ogni malfunzionamento a Mauro Carvalho Chehab <mchehab@s-opensource.com>
0185 
0186 
0187 COPYRIGHT
0188 *********
0189 
0190 
0191 Copyright (c) 2016 by Mauro Carvalho Chehab <mchehab@s-opensource.com>.
0192 
0193 Licenza GPLv2: GNU GPL version 2 <http://gnu.org/licenses/gpl.html>.
0194 
0195 Questo è software libero: siete liberi di cambiarlo e ridistribuirlo.
0196 Non c'è alcuna garanzia, nei limiti permessi dalla legge.