parse-headers.rst 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. .. include:: ../disclaimer-ita.rst
  2. .. note:: Per leggere la documentazione originale in inglese:
  3. :ref:`Documentation/doc-guide/index.rst <doc_guide>`
  4. =========================================
  5. Includere gli i file di intestazione uAPI
  6. =========================================
  7. Qualche volta è utile includere dei file di intestazione e degli esempi di codice C
  8. al fine di descrivere l'API per lo spazio utente e per generare dei riferimenti
  9. fra il codice e la documentazione. Aggiungere i riferimenti ai file dell'API
  10. dello spazio utente ha ulteriori vantaggi: Sphinx genererà dei messaggi
  11. d'avviso se un simbolo non viene trovato nella documentazione. Questo permette
  12. di mantenere allineate la documentazione della uAPI (API spazio utente)
  13. con le modifiche del kernel.
  14. Il programma :ref:`parse_headers.pl <it_parse_headers>` genera questi riferimenti.
  15. Esso dev'essere invocato attraverso un Makefile, mentre si genera la
  16. documentazione. Per avere un esempio su come utilizzarlo all'interno del kernel
  17. consultate ``Documentation/media/Makefile``.
  18. .. _it_parse_headers:
  19. parse_headers.pl
  20. ^^^^^^^^^^^^^^^^
  21. NOME
  22. ****
  23. parse_headers.pl - analizza i file C al fine di identificare funzioni,
  24. strutture, enumerati e definizioni, e creare riferimenti per Sphinx
  25. SINTASSI
  26. ********
  27. \ **parse_headers.pl**\ [<options>] <C_FILE> <OUT_FILE> [<EXCEPTIONS_FILE>]
  28. Dove <options> può essere: --debug, --usage o --help.
  29. OPZIONI
  30. *******
  31. \ **--debug**\
  32. Lo script viene messo in modalità verbosa, utile per il debugging.
  33. \ **--usage**\
  34. Mostra un messaggio d'aiuto breve e termina.
  35. \ **--help**\
  36. Mostra un messaggio d'aiuto dettagliato e termina.
  37. DESCRIZIONE
  38. ***********
  39. Converte un file d'intestazione o un file sorgente C (C_FILE) in un testo
  40. ReStructuredText incluso mediante il blocco ..parsed-literal
  41. con riferimenti alla documentazione che descrive l'API. Opzionalmente,
  42. il programma accetta anche un altro file (EXCEPTIONS_FILE) che
  43. descrive quali elementi debbano essere ignorati o il cui riferimento
  44. deve puntare ad elemento diverso dal predefinito.
  45. Il file generato sarà disponibile in (OUT_FILE).
  46. Il programma è capace di identificare *define*, funzioni, strutture,
  47. tipi di dato, enumerati e valori di enumerati, e di creare i riferimenti
  48. per ognuno di loro. Inoltre, esso è capace di distinguere le #define
  49. utilizzate per specificare i comandi ioctl di Linux.
  50. Il file EXCEPTIONS_FILE contiene due tipi di dichiarazioni:
  51. \ **ignore**\ o \ **replace**\ .
  52. La sintassi per ignore è:
  53. ignore \ **tipo**\ \ **nome**\
  54. La dichiarazione \ **ignore**\ significa che non verrà generato alcun
  55. riferimento per il simbolo \ **name**\ di tipo \ **tipo**\ .
  56. La sintassi per replace è:
  57. replace \ **tipo**\ \ **nome**\ \ **nuovo_valore**\
  58. La dichiarazione \ **replace**\ significa che verrà generato un
  59. riferimento per il simbolo \ **name**\ di tipo \ **tipo**\ , ma, invece
  60. di utilizzare il valore predefinito, verrà utilizzato il valore
  61. \ **nuovo_valore**\ .
  62. Per entrambe le dichiarazioni, il \ **tipo**\ può essere uno dei seguenti:
  63. \ **ioctl**\
  64. La dichiarazione ignore o replace verrà applicata su definizioni di ioctl
  65. come la seguente:
  66. #define VIDIOC_DBG_S_REGISTER _IOW('V', 79, struct v4l2_dbg_register)
  67. \ **define**\
  68. La dichiarazione ignore o replace verrà applicata su una qualsiasi #define
  69. trovata in C_FILE.
  70. \ **typedef**\
  71. La dichiarazione ignore o replace verrà applicata ad una dichiarazione typedef
  72. in C_FILE.
  73. \ **struct**\
  74. La dichiarazione ignore o replace verrà applicata ai nomi di strutture
  75. in C_FILE.
  76. \ **enum**\
  77. La dichiarazione ignore o replace verrà applicata ai nomi di enumerati
  78. in C_FILE.
  79. \ **symbol**\
  80. La dichiarazione ignore o replace verrà applicata ai nomi di valori di
  81. enumerati in C_FILE.
  82. Per le dichiarazioni di tipo replace, il campo \ **new_value**\ utilizzerà
  83. automaticamente i riferimenti :c:type: per \ **typedef**\ , \ **enum**\ e
  84. \ **struct**\. Invece, utilizzerà :ref: per \ **ioctl**\ , \ **define**\ e
  85. \ **symbol**\. Il tipo di riferimento può essere definito esplicitamente
  86. nella dichiarazione stessa.
  87. ESEMPI
  88. ******
  89. ignore define _VIDEODEV2_H
  90. Ignora una definizione #define _VIDEODEV2_H nel file C_FILE.
  91. ignore symbol PRIVATE
  92. In un enumerato come il seguente:
  93. enum foo { BAR1, BAR2, PRIVATE };
  94. Non genererà alcun riferimento per \ **PRIVATE**\ .
  95. replace symbol BAR1 :c:type:\`foo\`
  96. replace symbol BAR2 :c:type:\`foo\`
  97. In un enumerato come il seguente:
  98. enum foo { BAR1, BAR2, PRIVATE };
  99. Genererà un riferimento ai valori BAR1 e BAR2 dal simbolo foo nel dominio C.
  100. BUGS
  101. ****
  102. Riferire ogni malfunzionamento a Mauro Carvalho Chehab <mchehab@s-opensource.com>
  103. COPYRIGHT
  104. *********
  105. Copyright (c) 2016 by Mauro Carvalho Chehab <mchehab@s-opensource.com>.
  106. Licenza GPLv2: GNU GPL version 2 <http://gnu.org/licenses/gpl.html>.
  107. Questo è software libero: siete liberi di cambiarlo e ridistribuirlo.
  108. Non c'è alcuna garanzia, nei limiti permessi dalla legge.