€•`�Œsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ+/translations/zh_CN/doc-guide/parse-headers”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ+/translations/zh_TW/doc-guide/parse-headers”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ+/translations/it_IT/doc-guide/parse-headers”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ+/translations/ja_JP/doc-guide/parse-headers”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ+/translations/ko_KR/doc-guide/parse-headers”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ+/translations/pt_BR/doc-guide/parse-headers”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ+/translations/sp_SP/doc-guide/parse-headers”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒIncluding uAPI header files”h]”hŒIncluding uAPI header files”…”�”}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³ŒE/var/lib/git/docbuild/linux/Documentation/doc-guide/parse-headers.rst”h´KubhŒ paragraph”“”)�”}”(hXüSometimes, it is useful to include header files and C example codes in order to describe the userspace API and to generate cross-references between the code and the documentation. Adding cross-references for userspace API files has an additional advantage: Sphinx will generate warnings if a symbol is not found at the documentation. That helps to keep the uAPI documentation in sync with the Kernel changes. The :ref:`parse-headers.py ` provides a way to generate such cross-references. During the documentation build, the same parser is used by the ``kernel-include`` directive with the ``:generate-cross-refs:`` option. Please see ``Documentation/userspace-api/media/cec/cec-header.rst`` for an example about how to use it inside the Kernel tree.”h]”(hX�Sometimes, it is useful to include header files and C example codes in order to describe the userspace API and to generate cross-references between the code and the documentation. Adding cross-references for userspace API files has an additional advantage: Sphinx will generate warnings if a symbol is not found at the documentation. That helps to keep the uAPI documentation in sync with the Kernel changes. The ”…”�”}”(hhÍh²hh³Nh´Nubh)�”}”(hŒ':ref:`parse-headers.py `”h]”hŒinline”“”)�”}”(hh×h]”hŒparse-headers.py”…”�”}”(hhÛh²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œstd”Œstd-ref”eh"]”h$]”h&]”uh1hÙhhÕubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œdoc-guide/parse-headers”Œ refdomain”hæŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆŒ reftarget”Œ parse_headers”uh1hh³hÊh´KhhÍubhŒr provides a way to generate such cross-references. During the documentation build, the same parser is used by the ”…”�”}”(hhÍh²hh³Nh´NubhŒliteral”“”)�”}”(hŒ``kernel-include``”h]”hŒkernel-include”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhhÍubhŒ directive with the ”…”�”}”(hhÍh²hh³Nh´Nubhÿ)�”}”(hŒ``:generate-cross-refs:``”h]”hŒ:generate-cross-refs:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhhÍubhŒ option. Please see ”…”�”}”(hhÍh²hh³Nh´Nubhÿ)�”}”(hŒ8``Documentation/userspace-api/media/cec/cec-header.rst``”h]”hŒ4Documentation/userspace-api/media/cec/cec-header.rst”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhhÍubhŒ; for an example about how to use it inside the Kernel tree.”…”�”}”(hhÍh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khh·h²hubhŒtarget”“”)�”}”(hŒ.. _parse_headers:”h]”h}”(h]”h ]”h"]”h$]”h&]”Œrefid”Œ parse-headers”uh1j<h´Khh·h²hh³hÊubh¶)�”}”(hhh]”(h»)�”}”(hŒtools/docs/parse-headers.py”h]”hŒtools/docs/parse-headers.py”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjJh²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒNAME”h]”hŒNAME”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj[h²hh³hÊh´KubhÌ)�”}”(hŒ‹parse-headers.py - parse a C file, in order to identify functions, structs, enums and defines and create cross-references to a Sphinx book.”h]”hŒ‹parse-headers.py - parse a C file, in order to identify functions, structs, enums and defines and create cross-references to a Sphinx book.”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khj[h²hubeh}”(h]”Œname”ah ]”h"]”Œname”ah$]”h&]”uh1hµhjJh²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒUSAGE”h]”hŒUSAGE”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj‚h²hh³hÊh´KubhÌ)�”}”(hŒIparse-headers.py [-h] [-d] [-t] ``FILE_IN`` ``FILE_OUT`` [``FILE_RULES``]”h]”(hŒ parse-headers.py [-h] [-d] [-t] ”…”�”}”(hj“h²hh³Nh´Nubhÿ)�”}”(hŒ ``FILE_IN``”h]”hŒFILE_IN”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj“ubhŒ ”…”�”}”(hj“h²hh³Nh´Nubhÿ)�”}”(hŒ ``FILE_OUT``”h]”hŒFILE_OUT”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj“ubhŒ [”…”�”}”(hj“h²hh³Nh´Nubhÿ)�”}”(hŒ``FILE_RULES``”h]”hŒ FILE_RULES”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj“ubhŒ]”…”�”}”(hj“h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khj‚h²hubeh}”(h]”Œusage”ah ]”h"]”Œusage”ah$]”h&]”uh1hµhjJh²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjßh²hh³hÊh´K"ubhÌ)�”}”(hXDConverts a C header or source file ``FILE_IN`` into a ReStructured Text included via ..parsed-literal block with cross-references for the documentation files that describe the API. It accepts an optional ``FILE_RULES`` file to describe what elements will be either ignored or be pointed to a non-default reference type/name.”h]”(hŒ#Converts a C header or source file ”…”�”}”(hjðh²hh³Nh´Nubhÿ)�”}”(hŒ ``FILE_IN``”h]”hŒFILE_IN”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjðubhŒž into a ReStructured Text included via ..parsed-literal block with cross-references for the documentation files that describe the API. It accepts an optional ”…”�”}”(hjðh²hh³Nh´Nubhÿ)�”}”(hŒ``FILE_RULES``”h]”hŒ FILE_RULES”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjðubhŒj file to describe what elements will be either ignored or be pointed to a non-default reference type/name.”…”�”}”(hjðh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K$hjßh²hubhÌ)�”}”(hŒ&The output is written at ``FILE_OUT``.”h]”(hŒThe output is written at ”…”�”}”(hj"h²hh³Nh´Nubhÿ)�”}”(hŒ ``FILE_OUT``”h]”hŒFILE_OUT”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj"ubhŒ.”…”�”}”(hj"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K*hjßh²hubhÌ)�”}”(hŒŠIt is capable of identifying ``define``, ``struct``, ``typedef``, ``enum`` and enum ``symbol``, creating cross-references for all of them.”h]”(hŒIt is capable of identifying ”…”�”}”(hjBh²hh³Nh´Nubhÿ)�”}”(hŒ ``define``”h]”hŒdefine”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjBubhŒ, ”…”�”}”(hjBh²hh³Nh´Nubhÿ)�”}”(hŒ ``struct``”h]”hŒstruct”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjBubhŒ, ”…”�”}”hjBsbhÿ)�”}”(hŒ ``typedef``”h]”hŒtypedef”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjBubhŒ, ”…”�”}”hjBsbhÿ)�”}”(hŒ``enum``”h]”hŒenum”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjBubhŒ and enum ”…”�”}”(hjBh²hh³Nh´Nubhÿ)�”}”(hŒ ``symbol``”h]”hŒsymbol”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjBubhŒ,, creating cross-references for all of them.”…”�”}”(hjBh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K,hjßh²hubhÌ)�”}”(hŒtIt is also capable of distinguishing ``#define`` used for specifying Linux-specific macros used to define ``ioctl``.”h]”(hŒ%It is also capable of distinguishing ”…”�”}”(hjªh²hh³Nh´Nubhÿ)�”}”(hŒ ``#define``”h]”hŒ#define”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjªubhŒ: used for specifying Linux-specific macros used to define ”…”�”}”(hjªh²hh³Nh´Nubhÿ)�”}”(hŒ ``ioctl``”h]”hŒioctl”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjªubhŒ.”…”�”}”(hjªh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K/hjßh²hubhÌ)�”}”(hŒ:The optional ``FILE_RULES`` contains a set of rules like::”h]”(hŒ The optional ”…”�”}”(hjÜh²hh³Nh´Nubhÿ)�”}”(hŒ``FILE_RULES``”h]”hŒ FILE_RULES”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjÜubhŒ contains a set of rules like:”…”�”}”(hjÜh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K2hjßh²hubhŒ literal_block”“”)�”}”(hŒ’ignore ioctl VIDIOC_ENUM_FMT replace ioctl VIDIOC_DQBUF vidioc_qbuf replace define V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ :c:type:`v4l2_event_motion_det`”h]”hŒ’ignore ioctl VIDIOC_ENUM_FMT replace ioctl VIDIOC_DQBUF vidioc_qbuf replace define V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ :c:type:`v4l2_event_motion_det`”…”�”}”hjþsbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1jüh³hÊh´K4hjßh²hubeh}”(h]”Œsynopsis”ah ]”h"]”Œsynopsis”ah$]”h&]”uh1hµhjJh²hh³hÊh´K"ubh¶)�”}”(hhh]”(h»)�”}”(hŒPOSITIONAL ARGUMENTS”h]”hŒPOSITIONAL ARGUMENTS”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjh²hh³hÊh´K9ubhŒ block_quote”“”)�”}”(hŒn``FILE_IN`` Input C file ``FILE_OUT`` Output RST file ``FILE_RULES`` Exceptions file (optional) ”h]”hŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒ``FILE_IN`` Input C file ”h]”(hŒterm”“”)�”}”(hŒ ``FILE_IN``”h]”hÿ)�”}”(hj<h]”hŒFILE_IN”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j8h³hÊh´K ubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj, ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j2h³hÊh´K�hj) ubah}”(h]”h ]”h"]”h$]”h&]”uh1j-hj% ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÆubeh}”(h]”h ]”h"]”h$]”h&]”j/j0uh1jõh³hÊh´KhjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1j'h³hÊh´Khjh²hubeh}”(h]”Œ description”ah ]”h"]”Œ description”ah$]”h&]”uh1hµhjJh²hh³hÊh´KPubh¶)�”}”(hhh]”(h»)�”}”(hŒEXAMPLES”h]”hŒEXAMPLES”…”�”}”(hj~ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj{ h²hh³hÊh´K“ubjö)�”}”(hhh]”(jì)�”}”(hŒPIgnore a define ``_VIDEODEV2_H`` at ``FILE_IN``:: ignore define _VIDEODEV2_H ”h]”(hÌ)�”}”(hŒ1Ignore a define ``_VIDEODEV2_H`` at ``FILE_IN``::”h]”(hŒIgnore a define ”…”�”}”(hj“ h²hh³Nh´Nubhÿ)�”}”(hŒ``_VIDEODEV2_H``”h]”hŒ _VIDEODEV2_H”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj“ ubhŒ at ”…”�”}”(hj“ h²hh³Nh´Nubhÿ)�”}”(hŒ ``FILE_IN``”h]”hŒFILE_IN”…”�”}”(hj­ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj“ ubhŒ:”…”�”}”(hj“ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K•hj� ubjý)�”}”(hŒignore define _VIDEODEV2_H”h]”hŒignore define _VIDEODEV2_H”…”�”}”hjÅ sbah}”(h]”h ]”h"]”h$]”h&]”j j uh1jüh³hÊh´K—hj� ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jëhjŒ h²hh³hÊh´Nubjì)�”}”(hXbOn an data structure like this enum:: enum foo { BAR1, BAR2, PRIVATE }; It won't generate cross-references for ``PRIVATE``:: ignore symbol PRIVATE At the same struct, instead of creating one cross reference per symbol, make them all point to the ``enum foo`` C type:: replace symbol BAR1 :c:type:\`foo\` replace symbol BAR2 :c:type:\`foo\` ”h]”(hÌ)�”}”(hŒ%On an data structure like this enum::”h]”hŒ$On an data structure like this enum:”…”�”}”(hjÝ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K™hjÙ ubjý)�”}”(hŒ!enum foo { BAR1, BAR2, PRIVATE };”h]”hŒ!enum foo { BAR1, BAR2, PRIVATE };”…”�”}”hjë sbah}”(h]”h ]”h"]”h$]”h&]”j j uh1jüh³hÊh´K›hjÙ ubhÌ)�”}”(hŒ4It won't generate cross-references for ``PRIVATE``::”h]”(hŒ)It won’t generate cross-references for ”…”�”}”(hjù h²hh³Nh´Nubhÿ)�”}”(hŒ ``PRIVATE``”h]”hŒPRIVATE”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjù ubhŒ:”…”�”}”(hjù h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K�hjÙ ubjý)�”}”(hŒignore symbol PRIVATE”h]”hŒignore symbol PRIVATE”…”�”}”hj sbah}”(h]”h ]”h"]”h$]”h&]”j j uh1jüh³hÊh´KŸhjÙ ubhÌ)�”}”(hŒxAt the same struct, instead of creating one cross reference per symbol, make them all point to the ``enum foo`` C type::”h]”(hŒcAt the same struct, instead of creating one cross reference per symbol, make them all point to the ”…”�”}”(hj' h²hh³Nh´Nubhÿ)�”}”(hŒ ``enum foo``”h]”hŒenum foo”…”�”}”(hj/ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj' ubhŒ C type:”…”�”}”(hj' h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K¡hjÙ ubjý)�”}”(hŒGreplace symbol BAR1 :c:type:\`foo\` replace symbol BAR2 :c:type:\`foo\`”h]”hŒGreplace symbol BAR1 :c:type:\`foo\` replace symbol BAR2 :c:type:\`foo\`”…”�”}”hjG sbah}”(h]”h ]”h"]”h$]”h&]”j j uh1jüh³hÊh´K¤hjÙ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jëhjŒ h²hh³hÊh´Nubjì)�”}”(hŒHUse C namespace ``MC`` for all symbols at ``FILE_IN``:: namespace MC ”h]”(hÌ)�”}”(hŒ7Use C namespace ``MC`` for all symbols at ``FILE_IN``::”h]”(hŒUse C namespace ”…”�”}”(hj_ h²hh³Nh´Nubhÿ)�”}”(hŒ``MC``”h]”hŒMC”…”�”}”(hjg h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj_ ubhŒ for all symbols at ”…”�”}”(hj_ h²hh³Nh´Nubhÿ)�”}”(hŒ ``FILE_IN``”h]”hŒFILE_IN”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj_ ubhŒ:”…”�”}”(hj_ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K¨hj[ ubjý)�”}”(hŒ namespace MC”h]”hŒ namespace MC”…”�”}”hj‘ sbah}”(h]”h ]”h"]”h$]”h&]”j j uh1jüh³hÊh´Kªhj[ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jëhjŒ h²hh³hÊh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j/j0uh1jõh³hÊh´K•hj{ h²hubeh}”(h]”Œexamples”ah ]”h"]”Œexamples”ah$]”h&]”uh1hµhjJh²hh³hÊh´K“ubh¶)�”}”(hhh]”(h»)�”}”(hŒBUGS”h]”hŒBUGS”…”�”}”(hj¶ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj³ h²hh³hÊh´K­ubhÌ)�”}”(hŒ9Report bugs to Mauro Carvalho Chehab ”h]”(hŒ&Report bugs to Mauro Carvalho Chehab <”…”�”}”(hjÄ h²hh³Nh´NubhŒ reference”“”)�”}”(hŒmchehab@kernel.org”h]”hŒmchehab@kernel.org”…”�”}”(hjÎ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œmailto:mchehab@kernel.org”uh1jÌ hjÄ ubhŒ>”…”�”}”(hjÄ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K°hj³ h²hubeh}”(h]”Œbugs”ah ]”h"]”Œbugs”ah$]”h&]”uh1hµhjJh²hh³hÊh´K­ubh¶)�”}”(hhh]”(h»)�”}”(hŒ COPYRIGHT”h]”hŒ COPYRIGHT”…”�”}”(hjó h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjð h²hh³hÊh´K´ubhÌ)�”}”(hŒNCopyright (c) 2016, 2025 by Mauro Carvalho Chehab .”h]”(hŒ3Copyright (c) 2016, 2025 by Mauro Carvalho Chehab <”…”�”}”(hj h²hh³Nh´NubjÍ )�”}”(hŒmchehab+huawei@kernel.org”h]”hŒmchehab+huawei@kernel.org”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œ mailto:mchehab+huawei@kernel.org”uh1jÌ hj ubhŒ>.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K·hjð h²hubhÌ)�”}”(hŒELicense GPLv2: GNU GPL version 2 .”h]”(hŒ"License GPLv2: GNU GPL version 2 <”…”�”}”(hj# h²hh³Nh´NubjÍ )�”}”(hŒ!https://gnu.org/licenses/gpl.html”h]”hŒ!https://gnu.org/licenses/gpl.html”…”�”}”(hj+ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j- uh1jÌ hj# ubhŒ>.”…”�”}”(hj# h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K¹hjð h²hubhÌ)�”}”(hŒxThis is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.”h]”hŒxThis is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.”…”�”}”(hjD h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K»hjð h²hubeh}”(h]”Œ copyright”ah ]”h"]”Œ copyright”ah$]”h&]”uh1hµhjJh²hh³hÊh´K´ubeh}”(h]”(Œtools-docs-parse-headers-py”jIeh ]”h"]”(Œtools/docs/parse-headers.py”Œ parse_headers”eh$]”h&]”uh1hµhh·h²hh³hÊh´KŒexpect_referenced_by_name”}”j` j>sŒexpect_referenced_by_id”}”jIj>subeh}”(h]”Œincluding-uapi-header-files”ah ]”h"]”Œincluding uapi header files”ah$]”h&]”uh1hµhhh²hh³hÊh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÊuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hºNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j’ Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÊŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”jI]”j>asŒnameids”}”(jl ji j` jIj_ j\ jj|jÜjÙjjjñjîjþjûjx ju j° j­ jí jê jW jT uŒ nametypes”}”(jl ‰j` ˆj_ ‰j‰j܉j‰jñ‰jþ‰jx ‰j° ‰jí ‰jW ‰uh}”(ji h·jIjJj\ jJj|j[jÙj‚jjßjîjjûjôju jj­ j{ jê j³ jT jð uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”hŒsystem_message”“”)�”}”(hhh]”hÌ)�”}”(hŒ:Enumerated list start value not ordinal-1: "2" (ordinal 2)”h]”hŒ>Enumerated list start value not ordinal-1: “2â€� (ordinal 2)”…”�”}”(hjú h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËhj÷ ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”ŒINFO”Œsource”hÊŒline”Kuh1jõ hjh²hh³hÊh´KlubaŒtransform_messages”]”jö )�”}”(hhh]”hÌ)�”}”(hhh]”hŒ3Hyperlink target "parse-headers" is not referenced.”…”�”}”hj sbah}”(h]”h ]”h"]”h$]”h&]”uh1hËhj ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j Œsource”hÊŒline”Kuh1jõ ubaŒ transformer”NŒ include_log”]”Œ decoration”Nh²hub.