~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/doc-guide/parse-headers.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/doc-guide/parse-headers.rst (Version linux-6.12-rc7) and /Documentation/doc-guide/parse-headers.rst (Version linux-5.8.18)


  1 ===========================                         1 ===========================
  2 Including uAPI header files                         2 Including uAPI header files
  3 ===========================                         3 ===========================
  4                                                     4 
  5 Sometimes, it is useful to include header file      5 Sometimes, it is useful to include header files and C example codes in
  6 order to describe the userspace API and to gen      6 order to describe the userspace API and to generate cross-references
  7 between the code and the documentation. Adding      7 between the code and the documentation. Adding cross-references for
  8 userspace API files has an additional vantage:      8 userspace API files has an additional vantage: Sphinx will generate warnings
  9 if a symbol is not found at the documentation.      9 if a symbol is not found at the documentation. That helps to keep the
 10 uAPI documentation in sync with the Kernel cha     10 uAPI documentation in sync with the Kernel changes.
 11 The :ref:`parse_headers.pl <parse_headers>` pr     11 The :ref:`parse_headers.pl <parse_headers>` provide a way to generate such
 12 cross-references. It has to be called via Make     12 cross-references. It has to be called via Makefile, while building the
 13 documentation. Please see ``Documentation/user     13 documentation. Please see ``Documentation/userspace-api/media/Makefile`` for an example
 14 about how to use it inside the Kernel tree.        14 about how to use it inside the Kernel tree.
 15                                                    15 
 16 .. _parse_headers:                                 16 .. _parse_headers:
 17                                                    17 
 18 parse_headers.pl                                   18 parse_headers.pl
 19 ^^^^^^^^^^^^^^^^                                   19 ^^^^^^^^^^^^^^^^
 20                                                    20 
 21 NAME                                               21 NAME
 22 ****                                               22 ****
 23                                                    23 
 24                                                    24 
 25 parse_headers.pl - parse a C file, in order to     25 parse_headers.pl - parse a C file, in order to identify functions, structs,
 26 enums and defines and create cross-references      26 enums and defines and create cross-references to a Sphinx book.
 27                                                    27 
 28                                                    28 
 29 SYNOPSIS                                           29 SYNOPSIS
 30 ********                                           30 ********
 31                                                    31 
 32                                                    32 
 33 \ **parse_headers.pl**\  [<options>] <C_FILE>      33 \ **parse_headers.pl**\  [<options>] <C_FILE> <OUT_FILE> [<EXCEPTIONS_FILE>]
 34                                                    34 
 35 Where <options> can be: --debug, --help or --u     35 Where <options> can be: --debug, --help or --usage.
 36                                                    36 
 37                                                    37 
 38 OPTIONS                                            38 OPTIONS
 39 *******                                            39 *******
 40                                                    40 
 41                                                    41 
 42                                                    42 
 43 \ **--debug**\                                     43 \ **--debug**\
 44                                                    44 
 45  Put the script in verbose mode, useful for de     45  Put the script in verbose mode, useful for debugging.
 46                                                    46 
 47                                                    47 
 48                                                    48 
 49 \ **--usage**\                                     49 \ **--usage**\
 50                                                    50 
 51  Prints a brief help message and exits.            51  Prints a brief help message and exits.
 52                                                    52 
 53                                                    53 
 54                                                    54 
 55 \ **--help**\                                      55 \ **--help**\
 56                                                    56 
 57  Prints a more detailed help message and exits     57  Prints a more detailed help message and exits.
 58                                                    58 
 59                                                    59 
 60 DESCRIPTION                                        60 DESCRIPTION
 61 ***********                                        61 ***********
 62                                                    62 
 63                                                    63 
 64 Convert a C header or source file (C_FILE), in !!  64 Convert a C header or source file (C_FILE), into a ReStructured Text
 65 included via ..parsed-literal block with cross     65 included via ..parsed-literal block with cross-references for the
 66 documentation files that describe the API. It      66 documentation files that describe the API. It accepts an optional
 67 EXCEPTIONS_FILE with describes what elements w     67 EXCEPTIONS_FILE with describes what elements will be either ignored or
 68 be pointed to a non-default reference.             68 be pointed to a non-default reference.
 69                                                    69 
 70 The output is written at the (OUT_FILE).           70 The output is written at the (OUT_FILE).
 71                                                    71 
 72 It is capable of identifying defines, function     72 It is capable of identifying defines, functions, structs, typedefs,
 73 enums and enum symbols and create cross-refere     73 enums and enum symbols and create cross-references for all of them.
 74 It is also capable of distinguish #define used     74 It is also capable of distinguish #define used for specifying a Linux
 75 ioctl.                                             75 ioctl.
 76                                                    76 
 77 The EXCEPTIONS_FILE contain two types of state     77 The EXCEPTIONS_FILE contain two types of statements: \ **ignore**\  or \ **replace**\ .
 78                                                    78 
 79 The syntax for the ignore tag is:                  79 The syntax for the ignore tag is:
 80                                                    80 
 81                                                    81 
 82 ignore \ **type**\  \ **name**\                    82 ignore \ **type**\  \ **name**\
 83                                                    83 
 84 The \ **ignore**\  means that it won't generat     84 The \ **ignore**\  means that it won't generate cross references for a
 85 \ **name**\  symbol of type \ **type**\ .          85 \ **name**\  symbol of type \ **type**\ .
 86                                                    86 
 87 The syntax for the replace tag is:                 87 The syntax for the replace tag is:
 88                                                    88 
 89                                                    89 
 90 replace \ **type**\  \ **name**\  \ **new_valu     90 replace \ **type**\  \ **name**\  \ **new_value**\
 91                                                    91 
 92 The \ **replace**\  means that it will generat     92 The \ **replace**\  means that it will generate cross references for a
 93 \ **name**\  symbol of type \ **type**\ , but,     93 \ **name**\  symbol of type \ **type**\ , but, instead of using the default
 94 replacement rule, it will use \ **new_value**\     94 replacement rule, it will use \ **new_value**\ .
 95                                                    95 
 96 For both statements, \ **type**\  can be eithe     96 For both statements, \ **type**\  can be either one of the following:
 97                                                    97 
 98                                                    98 
 99 \ **ioctl**\                                       99 \ **ioctl**\
100                                                   100 
101  The ignore or replace statement will apply to    101  The ignore or replace statement will apply to ioctl definitions like:
102                                                   102 
103  #define        VIDIOC_DBG_S_REGISTER    _IOW(    103  #define        VIDIOC_DBG_S_REGISTER    _IOW('V', 79, struct v4l2_dbg_register)
104                                                   104 
105                                                   105 
106                                                   106 
107 \ **define**\                                     107 \ **define**\
108                                                   108 
109  The ignore or replace statement will apply to    109  The ignore or replace statement will apply to any other #define found
110  at C_FILE.                                       110  at C_FILE.
111                                                   111 
112                                                   112 
113                                                   113 
114 \ **typedef**\                                    114 \ **typedef**\
115                                                   115 
116  The ignore or replace statement will apply to    116  The ignore or replace statement will apply to typedef statements at C_FILE.
117                                                   117 
118                                                   118 
119                                                   119 
120 \ **struct**\                                     120 \ **struct**\
121                                                   121 
122  The ignore or replace statement will apply to    122  The ignore or replace statement will apply to the name of struct statements
123  at C_FILE.                                       123  at C_FILE.
124                                                   124 
125                                                   125 
126                                                   126 
127 \ **enum**\                                       127 \ **enum**\
128                                                   128 
129  The ignore or replace statement will apply to    129  The ignore or replace statement will apply to the name of enum statements
130  at C_FILE.                                       130  at C_FILE.
131                                                   131 
132                                                   132 
133                                                   133 
134 \ **symbol**\                                     134 \ **symbol**\
135                                                   135 
136  The ignore or replace statement will apply to    136  The ignore or replace statement will apply to the name of enum value
137  at C_FILE.                                       137  at C_FILE.
138                                                   138 
139  For replace statements, \ **new_value**\  wil    139  For replace statements, \ **new_value**\  will automatically use :c:type:
140  references for \ **typedef**\ , \ **enum**\      140  references for \ **typedef**\ , \ **enum**\  and \ **struct**\  types. It will use :ref:
141  for \ **ioctl**\ , \ **define**\  and \ **sym    141  for \ **ioctl**\ , \ **define**\  and \ **symbol**\  types. The type of reference can
142  also be explicitly defined at the replace sta    142  also be explicitly defined at the replace statement.
143                                                   143 
144                                                   144 
145                                                   145 
146 EXAMPLES                                          146 EXAMPLES
147 ********                                          147 ********
148                                                   148 
149                                                   149 
150 ignore define _VIDEODEV2_H                        150 ignore define _VIDEODEV2_H
151                                                   151 
152                                                   152 
153 Ignore a #define _VIDEODEV2_H at the C_FILE.      153 Ignore a #define _VIDEODEV2_H at the C_FILE.
154                                                   154 
155 ignore symbol PRIVATE                             155 ignore symbol PRIVATE
156                                                   156 
157                                                   157 
158 On a struct like:                                 158 On a struct like:
159                                                   159 
160 enum foo { BAR1, BAR2, PRIVATE };                 160 enum foo { BAR1, BAR2, PRIVATE };
161                                                   161 
162 It won't generate cross-references for \ **PRI    162 It won't generate cross-references for \ **PRIVATE**\ .
163                                                   163 
164 replace symbol BAR1 :c:type:\`foo\`               164 replace symbol BAR1 :c:type:\`foo\`
165 replace symbol BAR2 :c:type:\`foo\`               165 replace symbol BAR2 :c:type:\`foo\`
166                                                   166 
167                                                   167 
168 On a struct like:                                 168 On a struct like:
169                                                   169 
170 enum foo { BAR1, BAR2, PRIVATE };                 170 enum foo { BAR1, BAR2, PRIVATE };
171                                                   171 
172 It will make the BAR1 and BAR2 enum symbols to    172 It will make the BAR1 and BAR2 enum symbols to cross reference the foo
173 symbol at the C domain.                           173 symbol at the C domain.
174                                                   174 
175                                                   175 
176 BUGS                                              176 BUGS
177 ****                                              177 ****
178                                                   178 
179                                                   179 
180 Report bugs to Mauro Carvalho Chehab <mchehab@k    180 Report bugs to Mauro Carvalho Chehab <mchehab@kernel.org>
181                                                   181 
182                                                   182 
183 COPYRIGHT                                         183 COPYRIGHT
184 *********                                         184 *********
185                                                   185 
186                                                   186 
187 Copyright (c) 2016 by Mauro Carvalho Chehab <mc    187 Copyright (c) 2016 by Mauro Carvalho Chehab <mchehab+samsung@kernel.org>.
188                                                   188 
189 License GPLv2: GNU GPL version 2 <https://gnu.    189 License GPLv2: GNU GPL version 2 <https://gnu.org/licenses/gpl.html>.
190                                                   190 
191 This is free software: you are free to change     191 This is free software: you are free to change and redistribute it.
192 There is NO WARRANTY, to the extent permitted     192 There is NO WARRANTY, to the extent permitted by law.
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php