€•”Œ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/sphinx”Œ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/sphinx”Œ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/sphinx”Œ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/sphinx”Œ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/sphinx”Œ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/sphinx”Œ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/sphinx”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒtarget”“”)�”}”(hŒ.. _sphinxdoc:”h]”h}”(h]”h ]”h"]”h$]”h&]”Œrefid”Œ sphinxdoc”uh1hµh´Khhh²hh³Œ>/var/lib/git/docbuild/linux/Documentation/doc-guide/sphinx.rst”ubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ%Using Sphinx for kernel documentation”h]”hŒ%Using Sphinx for kernel documentation”…”�”}”(hhËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhhÆh²hh³hÃh´KubhŒ paragraph”“”)�”}”(hXThe Linux kernel uses `Sphinx`_ to generate pretty documentation from `reStructuredText`_ files under ``Documentation``. To build the documentation in HTML or PDF formats, use ``make htmldocs`` or ``make pdfdocs``. The generated documentation is placed in ``Documentation/output``.”h]”(hŒThe Linux kernel uses ”…”�”}”(hhÛh²hh³Nh´NubhŒ reference”“”)�”}”(hŒ `Sphinx`_”h]”hŒSphinx”…”�”}”(hhåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒSphinx”Œrefuri”Œhttp://www.sphinx-doc.org/”uh1hãhhÛŒresolved”KubhŒ' to generate pretty documentation from ”…”�”}”(hhÛh²hh³Nh´Nubhä)�”}”(hŒ`reStructuredText`_”h]”hŒreStructuredText”…”�”}”(hhüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒreStructuredText”hõŒ(http://docutils.sourceforge.net/rst.html”uh1hãhhÛh÷KubhŒ files under ”…”�”}”(hhÛh²hh³Nh´NubhŒliteral”“”)�”}”(hŒ``Documentation``”h]”hŒ Documentation”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhÛubhŒ9. To build the documentation in HTML or PDF formats, use ”…”�”}”(hhÛh²hh³Nh´Nubj)�”}”(hŒ``make htmldocs``”h]”hŒ make htmldocs”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhÛubhŒ or ”…”�”}”(hhÛh²hh³Nh´Nubj)�”}”(hŒ``make pdfdocs``”h]”hŒ make pdfdocs”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhÛubhŒ+. The generated documentation is placed in ”…”�”}”(hhÛh²hh³Nh´Nubj)�”}”(hŒ``Documentation/output``”h]”hŒDocumentation/output”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhÛubhŒ.”…”�”}”(hhÛh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´KhhÆh²hubh¶)�”}”(hŒ&.. _Sphinx: http://www.sphinx-doc.org/”h]”h}”(h]”Œsphinx”ah ]”h"]”Œsphinx”ah$]”h&]”hõhöuh1hµh´K hhÆh²hh³hÃŒ referenced”Kubh¶)�”}”(hŒ>.. _reStructuredText: http://docutils.sourceforge.net/rst.html”h]”h}”(h]”Œrestructuredtext”ah ]”h"]”Œrestructuredtext”ah$]”h&]”hõj uh1hµh´K hhÆh²hh³hÃjmKubhÚ)�”}”(hX\The reStructuredText files may contain directives to include structured documentation comments, or kernel-doc comments, from source files. Usually these are used to describe the functions and types and design of the code. The kernel-doc comments have some special structure and formatting, but beyond that they are also treated as reStructuredText.”h]”hX\The reStructuredText files may contain directives to include structured documentation comments, or kernel-doc comments, from source files. Usually these are used to describe the functions and types and design of the code. The kernel-doc comments have some special structure and formatting, but beyond that they are also treated as reStructuredText.”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´KhhÆh²hubhÚ)�”}”(hŒØFinally, there are thousands of plain text documentation files scattered around ``Documentation``. Some of these will likely be converted to reStructuredText over time, but the bulk of them will remain in plain text.”h]”(hŒPFinally, there are thousands of plain text documentation files scattered around ”…”�”}”(hjˆh²hh³Nh´Nubj)�”}”(hŒ``Documentation``”h]”hŒ Documentation”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjˆubhŒw. Some of these will likely be converted to reStructuredText over time, but the bulk of them will remain in plain text.”…”�”}”(hjˆh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´KhhÆh²hubh¶)�”}”(hŒ.. _sphinx_install:”h]”h}”(h]”h ]”h"]”h$]”h&]”hÁŒsphinx-install”uh1hµh´KhhÆh²hh³hÃubhÅ)�”}”(hhh]”(hÊ)�”}”(hŒSphinx Install”h]”hŒSphinx Install”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhj³h²hh³hÃh´KubhÚ)�”}”(hŒzThe ReST markups currently used by the Documentation/ files are meant to be built with ``Sphinx`` version 3.4.3 or higher.”h]”(hŒWThe ReST markups currently used by the Documentation/ files are meant to be built with ”…”�”}”(hjÄh²hh³Nh´Nubj)�”}”(hŒ ``Sphinx``”h]”hŒSphinx”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÄubhŒ version 3.4.3 or higher.”…”�”}”(hjÄh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´Khj³h²hubhÚ)�”}”(hŒsThere's a script that checks for the Sphinx requirements. Please see :ref:`sphinx-pre-install` for further details.”h]”(hŒGThere’s a script that checks for the Sphinx requirements. Please see ”…”�”}”(hjäh²hh³Nh´Nubh)�”}”(hŒ:ref:`sphinx-pre-install`”h]”hŒinline”“”)�”}”(hjîh]”hŒsphinx-pre-install”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jðhjìubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œdoc-guide/sphinx”Œ refdomain”jýŒreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆŒ reftarget”Œsphinx-pre-install”uh1hh³hÃh´K!hjäubhŒ for further details.”…”�”}”(hjäh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´K!hj³h²hubhÚ)�”}”(hŒÎMost distributions are shipped with Sphinx, but its toolchain is fragile, and it is not uncommon that upgrading it or some other Python packages on your machine would cause the documentation build to break.”h]”hŒÎMost distributions are shipped with Sphinx, but its toolchain is fragile, and it is not uncommon that upgrading it or some other Python packages on your machine would cause the documentation build to break.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´K$hj³h²hubhÚ)�”}”(hXA way to avoid that is to use a different version than the one shipped with your distributions. In order to do so, it is recommended to install Sphinx inside a virtual environment, using ``virtualenv-3`` or ``virtualenv``, depending on how your distribution packaged Python 3.”h]”(hŒ»A way to avoid that is to use a different version than the one shipped with your distributions. In order to do so, it is recommended to install Sphinx inside a virtual environment, using ”…”�”}”(hj)h²hh³Nh´Nubj)�”}”(hŒ``virtualenv-3``”h]”hŒ virtualenv-3”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj)ubhŒ or ”…”�”}”(hj)h²hh³Nh´Nubj)�”}”(hŒ``virtualenv``”h]”hŒ virtualenv”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj)ubhŒ7, depending on how your distribution packaged Python 3.”…”�”}”(hj)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´K(hj³h²hubhÚ)�”}”(hŒPIn summary, if you want to install the latest version of Sphinx, you should do::”h]”hŒOIn summary, if you want to install the latest version of Sphinx, you should do:”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´K-hj³h²hubhŒ literal_block”“”)�”}”(hŒ€$ virtualenv sphinx_latest $ . sphinx_latest/bin/activate (sphinx_latest) $ pip install -r Documentation/sphinx/requirements.txt”h]”hŒ€$ virtualenv sphinx_latest $ . sphinx_latest/bin/activate (sphinx_latest) $ pip install -r Documentation/sphinx/requirements.txt”…”�”}”hjksbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1jih³hÃh´K0hj³h²hubhÚ)�”}”(hXAfter running ``. sphinx_latest/bin/activate``, the prompt will change, in order to indicate that you're using the new environment. If you open a new shell, you need to rerun this command to enter again at the virtual environment before building the documentation.”h]”(hŒAfter running ”…”�”}”(hj{h²hh³Nh´Nubj)�”}”(hŒ ``. sphinx_latest/bin/activate``”h]”hŒ. sphinx_latest/bin/activate”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj{ubhŒÜ, the prompt will change, in order to indicate that you’re using the new environment. If you open a new shell, you need to rerun this command to enter again at the virtual environment before building the documentation.”…”�”}”(hj{h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´K4hj³h²hubhÅ)�”}”(hhh]”(hÊ)�”}”(hŒ Image output”h]”hŒ Image output”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhj›h²hh³hÃh´K:ubhÚ)�”}”(hŒ�The kernel documentation build system contains an extension that handles images in both GraphViz and SVG formats (see :ref:`sphinx_kfigure`).”h]”(hŒvThe kernel documentation build system contains an extension that handles images in both GraphViz and SVG formats (see ”…”�”}”(hj¬h²hh³Nh´Nubh)�”}”(hŒ:ref:`sphinx_kfigure`”h]”jñ)�”}”(hj¶h]”hŒsphinx_kfigure”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”(jüŒstd”Œstd-ref”eh"]”h$]”h&]”uh1jðhj´ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j Œ refdomain”jÂŒreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆjŒsphinx_kfigure”uh1hh³hÃh´Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´KšhjÛh²hubeh}”(h]”Œ!installing-sphinx-minimal-version”ah ]”h"]”Œ!installing sphinx minimal version”ah$]”h&]”uh1hÄhj³h²hh³hÃh´K‡ubeh}”(h]”(j²Œid1”eh ]”h"]”(Œsphinx install”Œsphinx_install”eh$]”h&]”uh1hÄhhÆh²hh³hÃh´Kj×}”jZj¨sjÙ}”j²j¨subhÅ)�”}”(hhh]”(hÊ)�”}”(hŒ Sphinx Build”h]”hŒ Sphinx Build”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhj_h²hh³hÃh´KŸubhÚ)�”}”(hXThe usual way to generate the documentation is to run ``make htmldocs`` or ``make pdfdocs``. There are also other formats available: see the documentation section of ``make help``. The generated documentation is placed in format-specific subdirectories under ``Documentation/output``.”h]”(hŒ6The usual way to generate the documentation is to run ”…”�”}”(hjph²hh³Nh´Nubj)�”}”(hŒ``make htmldocs``”h]”hŒ make htmldocs”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjpubhŒ or ”…”�”}”(hjph²hh³Nh´Nubj)�”}”(hŒ``make pdfdocs``”h]”hŒ make pdfdocs”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjpubhŒK. There are also other formats available: see the documentation section of ”…”�”}”(hjph²hh³Nh´Nubj)�”}”(hŒ ``make help``”h]”hŒ make help”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjpubhŒP. The generated documentation is placed in format-specific subdirectories under ”…”�”}”(hjph²hh³Nh´Nubj)�”}”(hŒ``Documentation/output``”h]”hŒDocumentation/output”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjpubhŒ.”…”�”}”(hjph²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´K¡hj_h²hubhÚ)�”}”(hX To generate documentation, Sphinx (``sphinx-build``) must obviously be installed. For PDF output you'll also need ``XeLaTeX`` and ``convert(1)`` from ImageMagick (https://www.imagemagick.org).\ [#ink]_ All of these are widely available and packaged in distributions.”h]”(hŒ#To generate documentation, Sphinx (”…”�”}”(hjÆh²hh³Nh´Nubj)�”}”(hŒ``sphinx-build``”h]”hŒ sphinx-build”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÆubhŒB) must obviously be installed. For PDF output you’ll also need ”…”�”}”(hjÆh²hh³Nh´Nubj)�”}”(hŒ ``XeLaTeX``”h]”hŒXeLaTeX”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÆubhŒ and ”…”�”}”(hjÆh²hh³Nh´Nubj)�”}”(hŒ``convert(1)``”h]”hŒ convert(1)”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÆubhŒ from ImageMagick (”…”�”}”(hjÆh²hh³Nh´Nubhä)�”}”(hŒhttps://www.imagemagick.org”h]”hŒhttps://www.imagemagick.org”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”juh1hãhjÆubhŒ). ”…”�”}”(hjÆh²hh³Nh´NubhŒfootnote_reference”“”)�”}”(hŒ[#ink]_”h]”hŒ1”…”�”}”(hjh²hh³Nh´Nubah}”(h]”Œid2”ah ]”h"]”h$]”h&]”Œauto”KhÁŒink”Œdocname”j uh1jhjÆh÷KubhŒA All of these are widely available and packaged in distributions.”…”�”}”(hjÆh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´K¦hj_h²hubhÚ)�”}”(hŒ›To pass extra options to Sphinx, you can use the ``SPHINXOPTS`` make variable. For example, use ``make SPHINXOPTS=-v htmldocs`` to get more verbose output.”h]”(hŒ1To pass extra options to Sphinx, you can use the ”…”�”}”(hj5h²hh³Nh´Nubj)�”}”(hŒ``SPHINXOPTS``”h]”hŒ SPHINXOPTS”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj5ubhŒ! make variable. For example, use ”…”�”}”(hj5h²hh³Nh´Nubj)�”}”(hŒ``make SPHINXOPTS=-v htmldocs``”h]”hŒmake SPHINXOPTS=-v htmldocs”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj5ubhŒ to get more verbose output.”…”�”}”(hj5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´K«hj_h²hubhÚ)�”}”(hŒ‹It is also possible to pass an extra DOCS_CSS overlay file, in order to customize the html layout, by using the ``DOCS_CSS`` make variable.”h]”(hŒpIt is also possible to pass an extra DOCS_CSS overlay file, in order to customize the html layout, by using the ”…”�”}”(hjgh²hh³Nh´Nubj)�”}”(hŒ ``DOCS_CSS``”h]”hŒDOCS_CSS”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjgubhŒ make variable.”…”�”}”(hjgh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´K¯hj_h²hubhÚ)�”}”(hŒàBy default, the "Alabaster" theme is used to build the HTML documentation; this theme is bundled with Sphinx and need not be installed separately. The Sphinx theme can be overridden by using the ``DOCS_THEME`` make variable.”h]”(hŒÇBy default, the “Alabasterâ€� theme is used to build the HTML documentation; this theme is bundled with Sphinx and need not be installed separately. The Sphinx theme can be overridden by using the ”…”�”}”(hj‡h²hh³Nh´Nubj)�”}”(hŒ``DOCS_THEME``”h]”hŒ DOCS_THEME”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‡ubhŒ make variable.”…”�”}”(hj‡h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´K²hj_h²hubhŒnote”“”)�”}”(hŒ©Some people might prefer to use the RTD theme for html output. Depending on the Sphinx version, it should be installed separately, with ``pip install sphinx_rtd_theme``.”h]”hÚ)�”}”(hŒ©Some people might prefer to use the RTD theme for html output. Depending on the Sphinx version, it should be installed separately, with ``pip install sphinx_rtd_theme``.”h]”(hŒˆSome people might prefer to use the RTD theme for html output. Depending on the Sphinx version, it should be installed separately, with ”…”�”}”(hj­h²hh³Nh´Nubj)�”}”(hŒ ``pip install sphinx_rtd_theme``”h]”hŒpip install sphinx_rtd_theme”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj­ubhŒ.”…”�”}”(hj­h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´K¸hj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j§hj_h²hh³hÃh´NubhÚ)�”}”(hXLThere is another make variable ``SPHINXDIRS``, which is useful when test building a subset of documentation. For example, you can build documents under ``Documentation/doc-guide`` by running ``make SPHINXDIRS=doc-guide htmldocs``. The documentation section of ``make help`` will show you the list of subdirectories you can specify.”h]”(hŒThere is another make variable ”…”�”}”(hjÓh²hh³Nh´Nubj)�”}”(hŒ``SPHINXDIRS``”h]”hŒ SPHINXDIRS”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÓubhŒl, which is useful when test building a subset of documentation. For example, you can build documents under ”…”�”}”(hjÓh²hh³Nh´Nubj)�”}”(hŒ``Documentation/doc-guide``”h]”hŒDocumentation/doc-guide”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÓubhŒ by running ”…”�”}”(hjÓh²hh³Nh´Nubj)�”}”(hŒ&``make SPHINXDIRS=doc-guide htmldocs``”h]”hŒ"make SPHINXDIRS=doc-guide htmldocs”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÓubhŒ. The documentation section of ”…”�”}”(hjÓh²hh³Nh´Nubj)�”}”(hŒ ``make help``”h]”hŒ make help”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÓubhŒ: will show you the list of subdirectories you can specify.”…”�”}”(hjÓh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´K¼hj_h²hubhÚ)�”}”(hŒ>To remove the generated documentation, run ``make cleandocs``.”h]”(hŒ+To remove the generated documentation, run ”…”�”}”(hj)h²hh³Nh´Nubj)�”}”(hŒ``make cleandocs``”h]”hŒmake cleandocs”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj)ubhŒ.”…”�”}”(hj)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´KÃhj_h²hubhŒfootnote”“”)�”}”(hŒ²Having ``inkscape(1)`` from Inkscape (https://inkscape.org) as well would improve the quality of images embedded in PDF documents, especially for kernel releases 5.18 and later. ”h]”(hŒlabel”“”)�”}”(hhh]”hŒ1”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jOhjKh²hh³Nh´NubhÚ)�”}”(hŒ±Having ``inkscape(1)`` from Inkscape (https://inkscape.org) as well would improve the quality of images embedded in PDF documents, especially for kernel releases 5.18 and later.”h]”(hŒHaving ”…”�”}”(hj^h²hh³Nh´Nubj)�”}”(hŒ``inkscape(1)``”h]”hŒ inkscape(1)”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj^ubhŒ from Inkscape (”…”�”}”(hj^h²hh³Nh´Nubhä)�”}”(hŒhttps://inkscape.org”h]”hŒhttps://inkscape.org”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jzuh1hãhj^ubhŒw) as well would improve the quality of images embedded in PDF documents, especially for kernel releases 5.18 and later.”…”�”}”(hj^h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´KÅhjKubeh}”(h]”j)ah ]”h"]”Œink”ah$]”h&]”j#aj(Kj*j uh1jIh³hÃh´KÅhj_h²hubhÅ)�”}”(hhh]”(hÊ)�”}”(hŒChoice of Math Renderer”h]”hŒChoice of Math Renderer”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhj˜h²hh³hÃh´KÊubhÚ)�”}”(hŒ`Since kernel release 6.1, mathjax works as a fallback math renderer for html output.\ [#sph1_8]_”h]”(hŒVSince kernel release 6.1, mathjax works as a fallback math renderer for html output. ”…”�”}”(hj©h²hh³Nh´Nubj)�”}”(hŒ [#sph1_8]_”h]”hŒ2”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”Œid3”ah ]”h"]”h$]”h&]”j(KhÁŒsph1-8”j*j uh1jhj©h÷Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´KÌhj˜h²hubhÚ)�”}”(hŒGMath renderer is chosen depending on available commands as shown below:”h]”hŒGMath renderer is chosen depending on available commands as shown below:”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´KÏhj˜h²hubhŒtable”“”)�”}”(hhh]”(hÊ)�”}”(hŒMath Renderer Choices for HTML”h]”hŒMath Renderer Choices for HTML”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉh³hÃh´KÑhj×ubhŒtgroup”“”)�”}”(hhh]”(hŒcolspec”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jíhjêubjî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jíhjêubjî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jíhjêubhŒthead”“”)�”}”(hhh]”hŒrow”“”)�”}”(hhh]”(hŒentry”“”)�”}”(hhh]”hÚ)�”}”(hŒ Math renderer”h]”hŒ Math renderer”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´KÔhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)�”}”(hhh]”hÚ)�”}”(hŒRequired commands”h]”hŒRequired commands”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´KÔhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)�”}”(hhh]”hÚ)�”}”(hŒ Image format”h]”hŒ Image format”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´KÔhjGubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjêubhŒtbody”“”)�”}”(hhh]”(j)�”}”(hhh]”(j)�”}”(hhh]”hÚ)�”}”(hŒimgmath”h]”hŒimgmath”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´KÖhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjoubj)�”}”(hhh]”hÚ)�”}”(hŒ latex, dvipng”h]”hŒ latex, dvipng”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´KÖhj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjoubj)�”}”(hhh]”hÚ)�”}”(hŒ PNG (raster)”h]”hŒ PNG (raster)”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´KÖhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjoubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjlubj)�”}”(hhh]”(j)�”}”(hhh]”hÚ)�”}”(hŒmathjax”h]”hŒmathjax”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´K×hjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj½ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jhj½ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jhj½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjlubeh}”(h]”h ]”h"]”h$]”h&]”uh1jjhjêubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jèhj×ubeh}”(h]”Œid4”ah ]”h"]”h$]”h&]”uh1jÕhj˜h²hh³hÃh´NubhÚ)�”}”(hŒbThe choice can be overridden by setting an environment variable ``SPHINX_IMGMATH`` as shown below:”h]”(hŒ@The choice can be overridden by setting an environment variable ”…”�”}”(hj h²hh³Nh´Nubj)�”}”(hŒ``SPHINX_IMGMATH``”h]”hŒSPHINX_IMGMATH”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubhŒ as shown below:”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´KÚhj˜h²hubjÖ)�”}”(hhh]”(hÊ)�”}”(hŒ$Effect of Setting ``SPHINX_IMGMATH``”h]”(hŒEffect of Setting ”…”�”}”(hj& h²hh³Nh´Nubj)�”}”(hŒ``SPHINX_IMGMATH``”h]”hŒSPHINX_IMGMATH”…”�”}”(hj. h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj& ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÉh³hÃh´KÝhj# ubjé)�”}”(hhh]”(jî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jíhjB ubjî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jíhjB ubj)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”hÚ)�”}”(hŒSetting”h]”hŒSetting”…”�”}”(hjb h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´Kàhj_ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj\ ubj)�”}”(hhh]”hÚ)�”}”(hŒRenderer”h]”hŒRenderer”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´Kàhjv ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj\ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjY ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjB ubjk)�”}”(hhh]”(j)�”}”(hhh]”(j)�”}”(hhh]”hÚ)�”}”(hŒ``SPHINX_IMGMATH=yes``”h]”j)�”}”(hj¤ h]”hŒSPHINX_IMGMATH=yes”…”�”}”(hj¦ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¢ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´KâhjŸ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjœ ubj)�”}”(hhh]”hÚ)�”}”(hŒimgmath”h]”hŒimgmath”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´Kâhj¿ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjœ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj™ ubj)�”}”(hhh]”(j)�”}”(hhh]”hÚ)�”}”(hŒ``SPHINX_IMGMATH=no``”h]”j)�”}”(hjä h]”hŒSPHINX_IMGMATH=no”…”�”}”(hjæ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjâ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´Kãhjß ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÜ ubj)�”}”(hhh]”hÚ)�”}”(hŒmathjax”h]”hŒmathjax”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´Kãhjÿ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÜ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj™ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jjhjB ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jèhj# ubeh}”(h]”Œid5”ah ]”h"]”h$]”h&]”uh1jÕhj˜h²hh³hÃh´NubjJ)�”}”(hŒ2Fallback of math renderer requires Sphinx >=1.8. ”h]”(jP)�”}”(hhh]”hŒ2”…”�”}”(hj4 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jOhj0 h²hh³Nh´NubhÚ)�”}”(hŒ0Fallback of math renderer requires Sphinx >=1.8.”h]”hŒ0Fallback of math renderer requires Sphinx >=1.8.”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´Kæhj0 ubeh}”(h]”jÀah ]”h"]”Œsph1_8”ah$]”h&]”j»aj(Kj*j uh1jIh³hÃh´Kæhj˜h²hubeh}”(h]”jÎah ]”h"]”Œchoice of math renderer”ah$]”h&]”uh1hÄhj_h²hh³hÃh´KÊjmKubeh}”(h]”Œ sphinx-build”ah ]”h"]”Œ sphinx build”ah$]”h&]”uh1hÄhhÆh²hh³hÃh´KŸubhÅ)�”}”(hhh]”(hÊ)�”}”(hŒWriting Documentation”h]”hŒWriting Documentation”…”�”}”(hjh h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhje h²hh³hÃh´KêubhÚ)�”}”(hŒ-Adding new documentation can be as simple as:”h]”hŒ-Adding new documentation can be as simple as:”…”�”}”(hjv h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´Kìhje h²hubhŒenumerated_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒ:Add a new ``.rst`` file somewhere under ``Documentation``.”h]”hÚ)�”}”(hj� h]”(hŒ Add a new ”…”�”}”(hj� h²hh³Nh´Nubj)�”}”(hŒ``.rst``”h]”hŒ.rst”…”�”}”(hj– h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj� ubhŒ file somewhere under ”…”�”}”(hj� h²hh³Nh´Nubj)�”}”(hŒ``Documentation``”h]”hŒ Documentation”…”�”}”(hj¨ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj� ubhŒ.”…”�”}”(hj� h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´Kîhj‹ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰ hj† h²hh³hÃh´NubjŠ )�”}”(hŒMRefer to it from the Sphinx main `TOC tree`_ in ``Documentation/index.rst``. ”h]”hÚ)�”}”(hŒLRefer to it from the Sphinx main `TOC tree`_ in ``Documentation/index.rst``.”h]”(hŒ!Refer to it from the Sphinx main ”…”�”}”(hjÊ h²hh³Nh´Nubhä)�”}”(hŒ `TOC tree`_”h]”hŒTOC tree”…”�”}”(hjÒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒTOC tree”hõŒ7http://www.sphinx-doc.org/en/stable/markup/toctree.html”uh1hãhjÊ h÷KubhŒ in ”…”�”}”(hjÊ h²hh³Nh´Nubj)�”}”(hŒ``Documentation/index.rst``”h]”hŒDocumentation/index.rst”…”�”}”(hjç h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÊ ubhŒ.”…”�”}”(hjÊ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´KïhjÆ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰ hj† h²hh³hÃh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ.”uh1j„ hje h²hh³hÃh´Kîubh¶)�”}”(hŒE.. _TOC tree: http://www.sphinx-doc.org/en/stable/markup/toctree.html”h]”h}”(h]”Œtoc-tree”ah ]”h"]”Œtoc tree”ah$]”h&]”hõjâ uh1hµh´Kñhje h²hh³hÃjmKubhÚ)�”}”(hX‘This is usually good enough for simple documentation (like the one you're reading right now), but for larger documents it may be advisable to create a subdirectory (or use an existing one). For example, the graphics subsystem documentation is under ``Documentation/gpu``, split to several ``.rst`` files, and has a separate ``index.rst`` (with a ``toctree`` of its own) referenced from the main index.”h]”(hŒûThis is usually good enough for simple documentation (like the one you’re reading right now), but for larger documents it may be advisable to create a subdirectory (or use an existing one). For example, the graphics subsystem documentation is under ”…”�”}”(hj h²hh³Nh´Nubj)�”}”(hŒ``Documentation/gpu``”h]”hŒDocumentation/gpu”…”�”}”(hj$ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubhŒ, split to several ”…”�”}”(hj h²hh³Nh´Nubj)�”}”(hŒ``.rst``”h]”hŒ.rst”…”�”}”(hj6 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubhŒ files, and has a separate ”…”�”}”(hj h²hh³Nh´Nubj)�”}”(hŒ ``index.rst``”h]”hŒ index.rst”…”�”}”(hjH h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubhŒ (with a ”…”�”}”(hj h²hh³Nh´Nubj)�”}”(hŒ ``toctree``”h]”hŒtoctree”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubhŒ, of its own) referenced from the main index.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´Kóhje h²hubhÚ)�”}”(hŒþSee the documentation for `Sphinx`_ and `reStructuredText`_ on what you can do with them. In particular, the Sphinx `reStructuredText Primer`_ is a good place to get started with reStructuredText. There are also some `Sphinx specific markup constructs`_.”h]”(hŒSee the documentation for ”…”�”}”(hjr h²hh³Nh´Nubhä)�”}”(hŒ `Sphinx`_”h]”hŒSphinx”…”�”}”(hjz h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒSphinx”hõhöuh1hãhjr h÷KubhŒ and ”…”�”}”(hjr h²hh³Nh´Nubhä)�”}”(hŒ`reStructuredText`_”h]”hŒreStructuredText”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒreStructuredText”hõj uh1hãhjr h÷KubhŒ9 on what you can do with them. In particular, the Sphinx ”…”�”}”(hjr h²hh³Nh´Nubhä)�”}”(hŒ`reStructuredText Primer`_”h]”hŒreStructuredText Primer”…”�”}”(hj¢ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒreStructuredText Primer”hõŒ-http://www.sphinx-doc.org/en/stable/rest.html”uh1hãhjr h÷KubhŒK is a good place to get started with reStructuredText. There are also some ”…”�”}”(hjr h²hh³Nh´Nubhä)�”}”(hŒ$`Sphinx specific markup constructs`_”h]”hŒ!Sphinx specific markup constructs”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ!Sphinx specific markup constructs”hõŒ5http://www.sphinx-doc.org/en/stable/markup/index.html”uh1hãhjr h÷KubhŒ.”…”�”}”(hjr h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´Kúhje h²hubh¶)�”}”(hŒJ.. _reStructuredText Primer: http://www.sphinx-doc.org/en/stable/rest.html”h]”h}”(h]”Œrestructuredtext-primer”ah ]”h"]”Œrestructuredtext primer”ah$]”h&]”hõj² uh1hµh´Kÿhje h²hh³hÃjmKubh¶)�”}”(hŒ\.. _Sphinx specific markup constructs: http://www.sphinx-doc.org/en/stable/markup/index.html”h]”h}”(h]”Œ!sphinx-specific-markup-constructs”ah ]”h"]”Œ!sphinx specific markup constructs”ah$]”h&]”hõjÇ uh1hµh´Mhje h²hh³hÃjmKubhÅ)�”}”(hhh]”(hÊ)�”}”(hŒ0Specific guidelines for the kernel documentation”h]”hŒ0Specific guidelines for the kernel documentation”…”�”}”(hjí h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhjê h²hh³hÃh´MubhÚ)�”}”(hŒ?Here are some specific guidelines for the kernel documentation:”h]”hŒ?Here are some specific guidelines for the kernel documentation:”…”�”}”(hjû h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´Mhjê h²hubhŒ bullet_list”“”)�”}”(hhh]”(jŠ )�”}”(hŒ×Please don't go overboard with reStructuredText markup. Keep it simple. For the most part the documentation should be plain text with just enough consistency in formatting that it can be converted to other formats. ”h]”hÚ)�”}”(hŒÖPlease don't go overboard with reStructuredText markup. Keep it simple. For the most part the documentation should be plain text with just enough consistency in formatting that it can be converted to other formats.”h]”hŒØPlease don’t go overboard with reStructuredText markup. Keep it simple. For the most part the documentation should be plain text with just enough consistency in formatting that it can be converted to other formats.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´Mhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰ hj h²hh³hÃh´NubjŠ )�”}”(hŒgPlease keep the formatting changes minimal when converting existing documentation to reStructuredText. ”h]”hÚ)�”}”(hŒfPlease keep the formatting changes minimal when converting existing documentation to reStructuredText.”h]”hŒfPlease keep the formatting changes minimal when converting existing documentation to reStructuredText.”…”�”}”(hj* h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´M hj& ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰ hj h²hh³hÃh´NubjŠ )�”}”(hŒQAlso update the content, not just the formatting, when converting documentation. ”h]”hÚ)�”}”(hŒPAlso update the content, not just the formatting, when converting documentation.”h]”hŒPAlso update the content, not just the formatting, when converting documentation.”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´Mhj> ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰ hj h²hh³hÃh´NubjŠ )�”}”(hXPPlease stick to this order of heading adornments: 1. ``=`` with overline for document title:: ============== Document title ============== 2. ``=`` for chapters:: Chapters ======== 3. ``-`` for sections:: Section ------- 4. ``~`` for subsections:: Subsection ~~~~~~~~~~ Although RST doesn't mandate a specific order ("Rather than imposing a fixed number and order of section title adornment styles, the order enforced will be the order as encountered."), having the higher levels the same overall makes it easier to follow the documents. ”h]”(hÚ)�”}”(hŒ1Please stick to this order of heading adornments:”h]”hŒ1Please stick to this order of heading adornments:”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´MhjV ubj… )�”}”(hhh]”(jŠ )�”}”(hŒ]``=`` with overline for document title:: ============== Document title ============== ”h]”(hÚ)�”}”(hŒ(``=`` with overline for document title::”h]”(j)�”}”(hŒ``=``”h]”hŒ=”…”�”}”(hjs h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjo ubhŒ" with overline for document title:”…”�”}”(hjo h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´Mhjk ubjj)�”}”(hŒ,============== Document title ==============”h]”hŒ,============== Document title ==============”…”�”}”hj‹ sbah}”(h]”h ]”h"]”h$]”h&]”jyjzuh1jih³hÃh´Mhjk ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‰ hjh ubjŠ )�”}”(hŒ,``=`` for chapters:: Chapters ======== ”h]”(hÚ)�”}”(hŒ``=`` for chapters::”h]”(j)�”}”(hŒ``=``”h]”hŒ=”…”�”}”(hj§ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj£ ubhŒ for chapters:”…”�”}”(hj£ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´MhjŸ ubjj)�”}”(hŒChapters ========”h]”hŒChapters ========”…”�”}”hj¿ sbah}”(h]”h ]”h"]”h$]”h&]”jyjzuh1jih³hÃh´MhjŸ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‰ hjh ubjŠ )�”}”(hŒ*``-`` for sections:: Section ------- ”h]”(hÚ)�”}”(hŒ``-`` for sections::”h]”(j)�”}”(hŒ``-``”h]”hŒ-”…”�”}”(hjÛ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj× ubhŒ for sections:”…”�”}”(hj× h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´MhjÓ ubjj)�”}”(hŒSection -------”h]”hŒSection -------”…”�”}”hjó sbah}”(h]”h ]”h"]”h$]”h&]”jyjzuh1jih³hÃh´M!hjÓ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‰ hjh ubjŠ )�”}”(hŒ3``~`` for subsections:: Subsection ~~~~~~~~~~ ”h]”(hÚ)�”}”(hŒ``~`` for subsections::”h]”(j)�”}”(hŒ``~``”h]”hŒ~”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubhŒ for subsections:”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´M$hj ubjj)�”}”(hŒSubsection ~~~~~~~~~~”h]”hŒSubsection ~~~~~~~~~~”…”�”}”hj' sbah}”(h]”h ]”h"]”h$]”h&]”jyjzuh1jih³hÃh´M&hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‰ hjh ubeh}”(h]”h ]”h"]”h$]”h&]”j j j hj j uh1j„ hjV ubhÚ)�”}”(hX Although RST doesn't mandate a specific order ("Rather than imposing a fixed number and order of section title adornment styles, the order enforced will be the order as encountered."), having the higher levels the same overall makes it easier to follow the documents.”h]”hXAlthough RST doesn’t mandate a specific order (“Rather than imposing a fixed number and order of section title adornment styles, the order enforced will be the order as encountered.â€�), having the higher levels the same overall makes it easier to follow the documents.”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´M)hjV ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‰ hj h²hh³hÃh´NubjŠ )�”}”(hXTFor inserting fixed width text blocks (for code examples, use case examples, etc.), use ``::`` for anything that doesn't really benefit from syntax highlighting, especially short snippets. Use ``.. code-block:: `` for longer code blocks that benefit from highlighting. For a short snippet of code embedded in the text, use \`\`. ”h]”hÚ)�”}”(hXRFor inserting fixed width text blocks (for code examples, use case examples, etc.), use ``::`` for anything that doesn't really benefit from syntax highlighting, especially short snippets. Use ``.. code-block:: `` for longer code blocks that benefit from highlighting. For a short snippet of code embedded in the text, use \`\`.”h]”(hŒXFor inserting fixed width text blocks (for code examples, use case examples, etc.), use ”…”�”}”(hjY h²hh³Nh´Nubj)�”}”(hŒ``::``”h]”hŒ::”…”�”}”(hja h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjY ubhŒe for anything that doesn’t really benefit from syntax highlighting, especially short snippets. Use ”…”�”}”(hjY h²hh³Nh´Nubj)�”}”(hŒ``.. code-block:: ``”h]”hŒ.. code-block:: ”…”�”}”(hjs h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjY ubhŒs for longer code blocks that benefit from highlighting. For a short snippet of code embedded in the text, use ``.”…”�”}”(hjY h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´M.hjU ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰ hj h²hh³hÃh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ*”uh1j h³hÃh´Mhjê h²hubeh}”(h]”Œ0specific-guidelines-for-the-kernel-documentation”ah ]”h"]”Œ0specific guidelines for the kernel documentation”ah$]”h&]”uh1hÄhje h²hh³hÃh´MubhÅ)�”}”(hhh]”(hÊ)�”}”(hŒ The C domain”h]”hŒ The C domain”…”�”}”(hj¤ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhj¡ h²hh³hÃh´M6ubhÚ)�”}”(hŒaThe **Sphinx C Domain** (name c) is suited for documentation of C API. E.g. a function prototype:”h]”(hŒThe ”…”�”}”(hj² h²hh³Nh´NubhŒstrong”“”)�”}”(hŒ**Sphinx C Domain**”h]”hŒSphinx C Domain”…”�”}”(hj¼ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jº hj² ubhŒJ (name c) is suited for documentation of C API. E.g. a function prototype:”…”�”}”(hj² h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´M8hj¡ h²hubjj)�”}”(hŒ0.. c:function:: int ioctl( int fd, int request )”h]”hŒ0.. c:function:: int ioctl( int fd, int request )”…”�”}”hjÔ sbah}”(h]”h ]”h"]”h$]”h&]”jyjzŒforce”‰Œlanguage”Œrst”Œhighlight_args”}”uh1jih³hÃh´M;hj¡ h²hubhÚ)�”}”(hŒ¢The C domain of the kernel-doc has some additional features. E.g. you can *rename* the reference name of a function with a common name like ``open`` or ``ioctl``:”h]”(hŒJThe C domain of the kernel-doc has some additional features. E.g. you can ”…”�”}”(hjç h²hh³Nh´NubhŒemphasis”“”)�”}”(hŒ*rename*”h]”hŒrename”…”�”}”(hjñ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jï hjç ubhŒ: the reference name of a function with a common name like ”…”�”}”(hjç h²hh³Nh´Nubj)�”}”(hŒ``open``”h]”hŒopen”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjç ubhŒ or ”…”�”}”(hjç h²hh³Nh´Nubj)�”}”(hŒ ``ioctl``”h]”hŒioctl”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjç ubhŒ:”…”�”}”(hjç h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´M?hj¡ h²hubjj)�”}”(hŒL.. c:function:: int ioctl( int fd, int request ) :name: VIDIOC_LOG_STATUS”h]”hŒL.. c:function:: int ioctl( int fd, int request ) :name: VIDIOC_LOG_STATUS”…”�”}”hj-sbah}”(h]”h ]”h"]”h$]”h&]”jyjzjâ ‰jã Œrst”jå }”uh1jih³hÃh´MChj¡ h²hubhÚ)�”}”(hŒ¾The func-name (e.g. ioctl) remains in the output but the ref-name changed from ``ioctl`` to ``VIDIOC_LOG_STATUS``. The index entry for this function is also changed to ``VIDIOC_LOG_STATUS``.”h]”(hŒOThe func-name (e.g. ioctl) remains in the output but the ref-name changed from ”…”�”}”(hj=h²hh³Nh´Nubj)�”}”(hŒ ``ioctl``”h]”hŒioctl”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj=ubhŒ to ”…”�”}”(hj=h²hh³Nh´Nubj)�”}”(hŒ``VIDIOC_LOG_STATUS``”h]”hŒVIDIOC_LOG_STATUS”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj=ubhŒ7. The index entry for this function is also changed to ”…”�”}”(hj=h²hh³Nh´Nubj)�”}”(hŒ``VIDIOC_LOG_STATUS``”h]”hŒVIDIOC_LOG_STATUS”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj=ubhŒ.”…”�”}”(hj=h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´MHhj¡ h²hubhÚ)�”}”(hX„Please note that there is no need to use ``c:func:`` to generate cross references to function documentation. Due to some Sphinx extension magic, the documentation build system will automatically turn a reference to ``function()`` into a cross reference if an index entry for the given function name exists. If you see ``c:func:`` use in a kernel document, please feel free to remove it.”h]”(hŒ)Please note that there is no need to use ”…”�”}”(hj�h²hh³Nh´Nubj)�”}”(hŒ ``c:func:``”h]”hŒc:func:”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubhŒ¤ to generate cross references to function documentation. Due to some Sphinx extension magic, the documentation build system will automatically turn a reference to ”…”�”}”(hj�h²hh³Nh´Nubj)�”}”(hŒ``function()``”h]”hŒ function()”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubhŒZ into a cross reference if an index entry for the given function name exists. If you see ”…”�”}”(hj�h²hh³Nh´Nubj)�”}”(hŒ ``c:func:``”h]”hŒc:func:”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubhŒ9 use in a kernel document, please feel free to remove it.”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´MLhj¡ h²hubeh}”(h]”Œ the-c-domain”ah ]”h"]”Œ the c domain”ah$]”h&]”uh1hÄhje h²hh³hÃh´M6ubhÅ)�”}”(hhh]”(hÊ)�”}”(hŒTables”h]”hŒTables”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhjÍh²hh³hÃh´MTubhÚ)�”}”(hŒÜReStructuredText provides several options for table syntax. Kernel style for tables is to prefer *simple table* syntax or *grid table* syntax. See the `reStructuredText user reference for table syntax`_ for more details.”h]”(hŒaReStructuredText provides several options for table syntax. Kernel style for tables is to prefer ”…”�”}”(hjÞh²hh³Nh´Nubjð )�”}”(hŒ*simple table*”h]”hŒ simple table”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jï hjÞubhŒ syntax or ”…”�”}”(hjÞh²hh³Nh´Nubjð )�”}”(hŒ *grid table*”h]”hŒ grid table”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jï hjÞubhŒ syntax. See the ”…”�”}”(hjÞh²hh³Nh´Nubhä)�”}”(hŒ3`reStructuredText user reference for table syntax`_”h]”hŒ0reStructuredText user reference for table syntax”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ0reStructuredText user reference for table syntax”hõŒBhttps://docutils.sourceforge.io/docs/user/rst/quickref.html#tables”uh1hãhjÞh÷KubhŒ for more details.”…”�”}”(hjÞh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´MVhjÍh²hubh¶)�”}”(hŒ{.. _reStructuredText user reference for table syntax: https://docutils.sourceforge.io/docs/user/rst/quickref.html#tables”h]”h}”(h]”Œ0restructuredtext-user-reference-for-table-syntax”ah ]”h"]”Œ0restructuredtext user reference for table syntax”ah$]”h&]”hõjuh1hµh´MZhjÍh²hh³hÃjmKubhÅ)�”}”(hhh]”(hÊ)�”}”(hŒ list tables”h]”hŒ list tables”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhj1h²hh³hÃh´M^ubhÚ)�”}”(hX%The list-table formats can be useful for tables that are not easily laid out in the usual Sphinx ASCII-art formats. These formats are nearly impossible for readers of the plain-text documents to understand, though, and should be avoided in the absence of a strong justification for their use.”h]”hX%The list-table formats can be useful for tables that are not easily laid out in the usual Sphinx ASCII-art formats. These formats are nearly impossible for readers of the plain-text documents to understand, though, and should be avoided in the absence of a strong justification for their use.”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´M`hj1h²hubhÚ)�”}”(hŒfThe ``flat-table`` is a double-stage list similar to the ``list-table`` with some additional features:”h]”(hŒThe ”…”�”}”(hjPh²hh³Nh´Nubj)�”}”(hŒ``flat-table``”h]”hŒ flat-table”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjPubhŒ' is a double-stage list similar to the ”…”�”}”(hjPh²hh³Nh´Nubj)�”}”(hŒ``list-table``”h]”hŒ list-table”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjPubhŒ with some additional features:”…”�”}”(hjPh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´Mfhj1h²hubj )�”}”(hhh]”(jŠ )�”}”(hŒWcolumn-span: with the role ``cspan`` a cell can be extended through additional columns ”h]”hÚ)�”}”(hŒVcolumn-span: with the role ``cspan`` a cell can be extended through additional columns”h]”(hŒcolumn-span: with the role ”…”�”}”(hj‰h²hh³Nh´Nubj)�”}”(hŒ ``cspan``”h]”hŒcspan”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‰ubhŒ2 a cell can be extended through additional columns”…”�”}”(hj‰h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´Mihj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰ hj‚h²hh³hÃh´NubjŠ )�”}”(hŒQrow-span: with the role ``rspan`` a cell can be extended through additional rows ”h]”hÚ)�”}”(hŒProw-span: with the role ``rspan`` a cell can be extended through additional rows”h]”(hŒrow-span: with the role ”…”�”}”(hj³h²hh³Nh´Nubj)�”}”(hŒ ``rspan``”h]”hŒrspan”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj³ubhŒ/ a cell can be extended through additional rows”…”�”}”(hj³h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´Mlhj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰ hj‚h²hh³hÃh´NubjŠ )�”}”(hX auto span rightmost cell of a table row over the missing cells on the right side of that table-row. With Option ``:fill-cells:`` this behavior can changed from *auto span* to *auto fill*, which automatically inserts (empty) cells instead of spanning the last cell. ”h]”hÚ)�”}”(hX auto span rightmost cell of a table row over the missing cells on the right side of that table-row. With Option ``:fill-cells:`` this behavior can changed from *auto span* to *auto fill*, which automatically inserts (empty) cells instead of spanning the last cell.”h]”(hŒqauto span rightmost cell of a table row over the missing cells on the right side of that table-row. With Option ”…”�”}”(hjÝh²hh³Nh´Nubj)�”}”(hŒ``:fill-cells:``”h]”hŒ :fill-cells:”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÝubhŒ this behavior can changed from ”…”�”}”(hjÝh²hh³Nh´Nubjð )�”}”(hŒ *auto span*”h]”hŒ auto span”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jï hjÝubhŒ to ”…”�”}”(hjÝh²hh³Nh´Nubjð )�”}”(hŒ *auto fill*”h]”hŒ auto fill”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jï hjÝubhŒN, which automatically inserts (empty) cells instead of spanning the last cell.”…”�”}”(hjÝh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´MohjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰ hj‚h²hh³hÃh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j— j˜ uh1j h³hÃh´Mihj1h²hubhÚ)�”}”(hŒoptions:”h]”hŒoptions:”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´Mthj1h²hubj )�”}”(hhh]”(jŠ )�”}”(hŒ.``:header-rows:`` [int] count of header rows”h]”hÚ)�”}”(hj@h]”(j)�”}”(hŒ``:header-rows:``”h]”hŒ :header-rows:”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjBubhŒ [int] count of header rows”…”�”}”(hjBh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´Mvhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰ hj;h²hh³hÃh´NubjŠ )�”}”(hŒ/``:stub-columns:`` [int] count of stub columns”h]”hÚ)�”}”(hjeh]”(j)�”}”(hŒ``:stub-columns:``”h]”hŒ:stub-columns:”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjgubhŒ [int] count of stub columns”…”�”}”(hjgh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´Mwhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰ hj;h²hh³hÃh´NubjŠ )�”}”(hŒ8``:widths:`` [[int] [int] ... ] widths of columns”h]”hÚ)�”}”(hjŠh]”(j)�”}”(hŒ ``:widths:``”h]”hŒ:widths:”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŒubhŒ, [[int] [int] ... ] widths of columns”…”�”}”(hjŒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´Mxhjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰ hj;h²hh³hÃh´NubjŠ )�”}”(hŒQ``:fill-cells:`` instead of auto-spanning missing cells, insert missing cells ”h]”hÚ)�”}”(hŒP``:fill-cells:`` instead of auto-spanning missing cells, insert missing cells”h]”(j)�”}”(hŒ``:fill-cells:``”h]”hŒ :fill-cells:”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj±ubhŒ@ instead of auto-spanning missing cells, insert missing cells”…”�”}”(hj±h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´Myhj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰ hj;h²hh³hÃh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j— j˜ uh1j h³hÃh´Mvhj1h²hubhÚ)�”}”(hŒroles:”h]”hŒroles:”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´M{hj1h²hubj )�”}”(hhh]”(jŠ )�”}”(hŒ1``:cspan:`` [int] additional columns (*morecols*)”h]”hÚ)�”}”(hjìh]”(j)�”}”(hŒ ``:cspan:``”h]”hŒ:cspan:”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjîubhŒ [int] additional columns (”…”�”}”(hjîh²hh³Nh´Nubjð )�”}”(hŒ *morecols*”h]”hŒmorecols”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jï hjîubhŒ)”…”�”}”(hjîh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´M}hjêubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰ hjçh²hh³hÃh´NubjŠ )�”}”(hŒ/``:rspan:`` [int] additional rows (*morerows*) ”h]”hÚ)�”}”(hŒ.``:rspan:`` [int] additional rows (*morerows*)”h]”(j)�”}”(hŒ ``:rspan:``”h]”hŒ:rspan:”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj%ubhŒ [int] additional rows (”…”�”}”(hj%h²hh³Nh´Nubjð )�”}”(hŒ *morerows*”h]”hŒmorerows”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jï hj%ubhŒ)”…”�”}”(hj%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´M~hj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰ hjçh²hh³hÃh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j— j˜ uh1j h³hÃh´M}hj1h²hubhÚ)�”}”(hXGThe example below shows how to use this markup. The first level of the staged list is the *table-row*. In the *table-row* there is only one markup allowed, the list of the cells in this *table-row*. Exceptions are *comments* ( ``..`` ) and *targets* (e.g. a ref to ``:ref:`last row ``` / :ref:`last row `).”h]”(hŒ[The example below shows how to use this markup. The first level of the staged list is the ”…”�”}”(hj_h²hh³Nh´Nubjð )�”}”(hŒ *table-row*”h]”hŒ table-row”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jï hj_ubhŒ . In the ”…”�”}”(hj_h²hh³Nh´Nubjð )�”}”(hŒ *table-row*”h]”hŒ table-row”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jï hj_ubhŒA there is only one markup allowed, the list of the cells in this ”…”�”}”(hj_h²hh³Nh´Nubjð )�”}”(hŒ *table-row*”h]”hŒ table-row”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jï hj_ubhŒ. Exceptions are ”…”�”}”(hj_h²hh³Nh´Nubjð )�”}”(hŒ *comments*”h]”hŒcomments”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jï hj_ubhŒ ( ”…”�”}”(hj_h²hh³Nh´Nubj)�”}”(hŒ``..``”h]”hŒ..”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj_ubhŒ ) and ”…”�”}”(hj_h²hh³Nh´Nubjð )�”}”(hŒ *targets*”h]”hŒtargets”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jï hj_ubhŒ (e.g. a ref to ”…”�”}”(hj_h²hh³Nh´Nubj)�”}”(hŒ``:ref:`last row ```”h]”hŒ:ref:`last row `”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj_ubhŒ / ”…”�”}”(hj_h²hh³Nh´Nubh)�”}”(hŒ:ref:`last row `”h]”jñ)�”}”(hjçh]”hŒlast row”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”(jüŒstd”Œstd-ref”eh"]”h$]”h&]”uh1jðhjåubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j Œ refdomain”jóŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒlast row”uh1hh³hÃh´M€hj_ubhŒ).”…”�”}”(hj_h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´M€hj1h²hubjj)�”}”(hX&.. flat-table:: table title :widths: 2 1 1 3 * - head col 1 - head col 2 - head col 3 - head col 4 * - row 1 - field 1.1 - field 1.2 with autospan * - row 2 - field 2.1 - :rspan:`1` :cspan:`1` field 2.2 - 3.3 * .. _`last row`: - row 3”h]”hX&.. flat-table:: table title :widths: 2 1 1 3 * - head col 1 - head col 2 - head col 3 - head col 4 * - row 1 - field 1.1 - field 1.2 with autospan * - row 2 - field 2.1 - :rspan:`1` :cspan:`1` field 2.2 - 3.3 * .. _`last row`: - row 3”…”�”•9g}”hjsbah}”(h]”h ]”h"]”h$]”h&]”jyjzjâ ‰jã Œrst”jå }”uh1jih³hÃh´M†hj1h²hubhÚ)�”}”(hŒ Rendered as:”h]”hŒ Rendered as:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´Mœhj1h²hubj%)�”}”(hX'.. flat-table:: table title :widths: 2 1 1 3 * - head col 1 - head col 2 - head col 3 - head col 4 * - row 1 - field 1.1 - field 1.2 with autospan * - row 2 - field 2.1 - :rspan:`1` :cspan:`1` field 2.2 - 3.3 * .. _`last row`: - row 3 ”h]”jÖ)�”}”(hhh]”(hÊ)�”}”(hŒ table title”h]”hŒ table title”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉh³hÃh´Mžhj1ubjé)�”}”(hhh]”(jî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jíhjBubjî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jíhjBubjî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jíhjBubjî)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jíhjBubjk)�”}”(hhh]”(j)�”}”(hhh]”(j)�”}”(hhh]”hÚ)�”}”(hŒ head col 1”h]”hŒ head col 1”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´M¡hjsubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjpubj)�”}”(hhh]”hÚ)�”}”(hŒ head col 2”h]”hŒ head col 2”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´M¢hjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjpubj)�”}”(hhh]”hÚ)�”}”(hŒ head col 3”h]”hŒ head col 3”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´M£hj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjpubj)�”}”(hhh]”hÚ)�”}”(hŒ head col 4”h]”hŒ head col 4”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´M¤hj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjmubj)�”}”(hhh]”(j)�”}”(hhh]”hÚ)�”}”(hŒrow 1”h]”hŒrow 1”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´M¦hjØubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÕubj)�”}”(hhh]”hÚ)�”}”(hŒ field 1.1”h]”hŒ field 1.1”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´M§hjïubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÕubj)�”}”(hhh]”hÚ)�”}”(hŒfield 1.2 with autospan”h]”hŒfield 1.2 with autospan”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´M¨hjubah}”(h]”h ]”h"]”h$]”h&]”Œmorecols”Kuh1jhjÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjmubj)�”}”(hhh]”(j)�”}”(hhh]”hÚ)�”}”(hŒrow 2”h]”hŒrow 2”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´Mªhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$ubj)�”}”(hhh]”hÚ)�”}”(hŒ field 2.1”h]”hŒ field 2.1”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´M«hj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$ubj)�”}”(hhh]”hÚ)�”}”(hŒ%:rspan:`1` :cspan:`1` field 2.2 - 3.3”h]”(hŒ ”…”�”}”(hjXh²hh³Nh´NubhŒ field 2.2 - 3.3”…”�”}”(hjXh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´M¬hjUubah}”(h]”h ]”h"]”h$]”h&]”Œmorerows”KŒmorecols”Kuh1jhj$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjmubj)�”}”(hhh]”(j)�”}”(hhh]”(h¶)�”}”(hŒ.. _`last row`:”h]”h}”(h]”h ]”h"]”h$]”h&]”hÁŒlast-row”uh1hµh´M®hj{ubhÚ)�”}”(hŒrow 3”h]”hŒrow 3”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”jˆah ]”h"]”Œlast row”ah$]”h&]”uh1hÙh³hÃh´M°hj{j×}”j•j~sjÙ}”jˆj~subeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjxubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jhjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjmubeh}”(h]”h ]”h"]”h$]”h&]”uh1jjhjBubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jèhj1ubeh}”(h]”Œid6”ah ]”h"]”h$]”h&]”uh1jÕhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j$h³hÃh´Mžhj1h²hubeh}”(h]”Œ list-tables”ah ]”h"]”Œ list tables”ah$]”h&]”uh1hÄhjÍh²hh³hÃh´M^ubeh}”(h]”Œtables”ah ]”h"]”Œtables”ah$]”h&]”uh1hÄhje h²hh³hÃh´MTubhÅ)�”}”(hhh]”(hÊ)�”}”(hŒCross-referencing”h]”hŒCross-referencing”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhjÙh²hh³hÃh´M³ubhÚ)�”}”(hX¤Cross-referencing from one documentation page to another can be done simply by writing the path to the document file, no special syntax required. The path can be either absolute or relative. For absolute paths, start it with "Documentation/". For example, to cross-reference to this page, all the following are valid options, depending on the current document's directory (note that the ``.rst`` extension is required)::”h]”(hX‰Cross-referencing from one documentation page to another can be done simply by writing the path to the document file, no special syntax required. The path can be either absolute or relative. For absolute paths, start it with “Documentation/â€�. For example, to cross-reference to this page, all the following are valid options, depending on the current document’s directory (note that the ”…”�”}”(hjêh²hh³Nh´Nubj)�”}”(hŒ``.rst``”h]”hŒ.rst”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjêubhŒ extension is required):”…”�”}”(hjêh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´MµhjÙh²hubjj)�”}”(hŒ¨See Documentation/doc-guide/sphinx.rst. This always works. Take a look at sphinx.rst, which is at this same directory. Read ../sphinx.rst, which is one directory above.”h]”hŒ¨See Documentation/doc-guide/sphinx.rst. This always works. Take a look at sphinx.rst, which is at this same directory. Read ../sphinx.rst, which is one directory above.”…”�”}”hj sbah}”(h]”h ]”h"]”h$]”h&]”jyjzuh1jih³hÃh´M¼hjÙh²hubhÚ)�”}”(hŒŒIf you want the link to have a different rendered text other than the document's title, you need to use Sphinx's ``doc`` role. For example::”h]”(hŒuIf you want the link to have a different rendered text other than the document’s title, you need to use Sphinx’s ”…”�”}”(hjh²hh³Nh´Nubj)�”}”(hŒ``doc``”h]”hŒdoc”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubhŒ role. For example:”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´MÀhjÙh²hubjj)�”}”(hŒ`.”h]”hŒ`.”…”�”}”hj8sbah}”(h]”h ]”h"]”h$]”h&]”jyjzuh1jih³hÃh´MÃhjÙh²hubhÚ)�”}”(hŒîFor most use cases, the former is preferred, as it is cleaner and more suited for people reading the source files. If you come across a ``:doc:`` usage that isn't adding any value, please feel free to convert it to just the document path.”h]”(hŒˆFor most use cases, the former is preferred, as it is cleaner and more suited for people reading the source files. If you come across a ”…”�”}”(hjFh²hh³Nh´Nubj)�”}”(hŒ ``:doc:``”h]”hŒ:doc:”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjFubhŒ_ usage that isn’t adding any value, please feel free to convert it to just the document path.”…”�”}”(hjFh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´MÅhjÙh²hubhÚ)�”}”(hŒrFor information on cross-referencing to kernel-doc functions or types, see Documentation/doc-guide/kernel-doc.rst.”h]”hŒrFor information on cross-referencing to kernel-doc functions or types, see Documentation/doc-guide/kernel-doc.rst.”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´MÊhjÙh²hubhÅ)�”}”(hhh]”(hÊ)�”}”(hŒReferencing commits”h]”hŒReferencing commits”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhjth²hh³hÃh´MÎubhÚ)�”}”(hŒmReferences to git commits are automatically hyperlinked given that they are written in one of these formats::”h]”hŒlReferences to git commits are automatically hyperlinked given that they are written in one of these formats:”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´MÐhjth²hubjj)�”}”(hŒYcommit 72bf4f1767f0 commit 72bf4f1767f0 ("net: do not leave an empty skb in write queue")”h]”hŒYcommit 72bf4f1767f0 commit 72bf4f1767f0 ("net: do not leave an empty skb in write queue")”…”�”}”hj“sbah}”(h]”h ]”h"]”h$]”h&]”jyjzuh1jih³hÃh´MÓhjth²hubh¶)�”}”(hŒ.. _sphinx_kfigure:”h]”h}”(h]”h ]”h"]”h$]”h&]”hÁŒsphinx-kfigure”uh1hµh´MÖhjth²hh³hÃubeh}”(h]”Œreferencing-commits”ah ]”h"]”Œreferencing commits”ah$]”h&]”uh1hÄhjÙh²hh³hÃh´MÎubeh}”(h]”Œcross-referencing”ah ]”h"]”Œcross-referencing”ah$]”h&]”uh1hÄhje h²hh³hÃh´M³ubeh}”(h]”Œwriting-documentation”ah ]”h"]”Œwriting documentation”ah$]”h&]”uh1hÄhhÆh²hh³hÃh´KêubhÅ)�”}”(hhh]”(hÊ)�”}”(hŒFigures & Images”h]”hŒFigures & Images”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhjÄh²hh³hÃh´MÙubhÚ)�”}”(hŒ½If you want to add an image, you should use the ``kernel-figure`` and ``kernel-image`` directives. E.g. to insert a figure with a scalable image format, use SVG (:ref:`svg_image_example`)::”h]”(hŒ0If you want to add an image, you should use the ”…”�”}”(hjÕh²hh³Nh´Nubj)�”}”(hŒ``kernel-figure``”h]”hŒ kernel-figure”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÕubhŒ and ”…”�”}”(hjÕh²hh³Nh´Nubj)�”}”(hŒ``kernel-image``”h]”hŒ kernel-image”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÕubhŒL directives. E.g. to insert a figure with a scalable image format, use SVG (”…”�”}”(hjÕh²hh³Nh´Nubh)�”}”(hŒ:ref:`svg_image_example`”h]”jñ)�”}”(hjh]”hŒsvg_image_example”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(jüŒstd”Œstd-ref”eh"]”h$]”h&]”uh1jðhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j Œ refdomain”jŒreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆjŒsvg_image_example”uh1hh³hÃh´MÛhjÕubhŒ):”…”�”}”(hjÕh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´MÛhjÄh²hubjj)�”}”(hŒT.. kernel-figure:: svg_image.svg :alt: simple SVG image SVG image example”h]”hŒT.. kernel-figure:: svg_image.svg :alt: simple SVG image SVG image example”…”�”}”hj+sbah}”(h]”h ]”h"]”h$]”h&]”jyjzuh1jih³hÃh´MßhjÄh²hubh¶)�”}”(hŒ.. _svg_image_example:”h]”h}”(h]”h ]”h"]”h$]”h&]”hÁŒsvg-image-example”uh1hµh´MähjÄh²hh³hÃubŒkfigure”Œ kernel_figure”“”)�”}”(hhh]”hŒfigure”“”)�”}”(hhh]”(hŒimage”“”)�”}”(hŒU.. kernel-figure:: svg_image.svg :alt: simple SVG image SVG image example ”h]”h}”(h]”h ]”h"]”h$]”h&]”Œalt”Œsimple SVG image”Œuri”Œdoc-guide/svg_image.svg”Œ candidates”}”j˜ j^suh1jOhjLh³hÃh´KubhŒcaption”“”)�”}”(hŒSVG image example”h]”hŒSVG image example”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jah³hÃh´MéhjLubeh}”(h]”Œid7”ah ]”h"]”h$]”h&]”uh1jJhjGubah}”(h]”jCah ]”h"]”Œsvg_image_example”ah$]”h&]”uh1jEhjÄh²hh³hÃh´Nj×}”j|j9sjÙ}”jCj9subhÚ)�”}”(hŒMThe kernel figure (and image) directive supports **DOT** formatted files, see”h]”(hŒ1The kernel figure (and image) directive supports ”…”�”}”(hj�h²hh³Nh´Nubj» )�”}”(hŒ**DOT**”h]”hŒDOT”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jº hj�ubhŒ formatted files, see”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´MëhjÄh²hubj )�”}”(hhh]”(jŠ )�”}”(hŒ)DOT: http://graphviz.org/pdf/dotguide.pdf”h]”hÚ)�”}”(hj¦h]”(hŒDOT: ”…”�”}”(hj¨h²hh³Nh´Nubhä)�”}”(hŒ$http://graphviz.org/pdf/dotguide.pdf”h]”hŒ$http://graphviz.org/pdf/dotguide.pdf”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j±uh1hãhj¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´Míhj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰ hj¡h²hh³hÃh´NubjŠ )�”}”(hŒ7Graphviz: http://www.graphviz.org/content/dot-language ”h]”hÚ)�”}”(hŒ6Graphviz: http://www.graphviz.org/content/dot-language”h]”(hŒ Graphviz: ”…”�”}”(hjÎh²hh³Nh´Nubhä)�”}”(hŒ,http://www.graphviz.org/content/dot-language”h]”hŒ,http://www.graphviz.org/content/dot-language”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jØuh1hãhjÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´MîhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰ hj¡h²hh³hÃh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j— j˜ uh1j h³hÃh´MíhjÄh²hubhÚ)�”}”(hŒ*A simple example (:ref:`hello_dot_file`)::”h]”(hŒA simple example (”…”�”}”(hj÷h²hh³Nh´Nubh)�”}”(hŒ:ref:`hello_dot_file`”h]”jñ)�”}”(hjh]”hŒhello_dot_file”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(jüŒstd”Œstd-ref”eh"]”h$]”h&]”uh1jðhjÿubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j Œ refdomain”j Œreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆjŒhello_dot_file”uh1hh³hÃh´Mðhj÷ubhŒ):”…”�”}”(hj÷h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´MðhjÄh²hubjj)�”}”(hŒS.. kernel-figure:: hello.dot :alt: hello world DOT's hello world example”h]”hŒS.. kernel-figure:: hello.dot :alt: hello world DOT's hello world example”…”�”}”hj)sbah}”(h]”h ]”h"]”h$]”h&]”jyjzuh1jih³hÃh´MòhjÄh²hubh¶)�”}”(hŒ.. _hello_dot_file:”h]”h}”(h]”h ]”h"]”h$]”h&]”hÁŒhello-dot-file”uh1hµh´M÷hjÄh²hh³hÃubjF)�”}”(hhh]”jK)�”}”(hhh]”(jP)�”}”(hŒT.. kernel-figure:: hello.dot :alt: hello world DOT's hello world example ”h]”h}”(h]”h ]”h"]”h$]”h&]”Œalt”Œ hello world”Œuri”Œdoc-guide/hello.dot”j_}”j˜ jUsuh1jOhjEh³hÃh´Kubjb)�”}”(hŒDOT's hello world example”h]”hŒDOT’s hello world example”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jah³hÃh´MühjEubeh}”(h]”Œid8”ah ]”h"]”h$]”h&]”uh1jJhjBubah}”(h]”jAah ]”h"]”Œhello_dot_file”ah$]”h&]”uh1jEhjÄh²hh³hÃh´Nj×}”jpj7sjÙ}”jAj7subhÚ)�”}”(hŒtEmbedded *render* markups (or languages) like Graphviz's **DOT** are provided by the ``kernel-render`` directives.::”h]”(hŒ Embedded ”…”�”}”(hjuh²hh³Nh´Nubjð )�”}”(hŒ*render*”h]”hŒrender”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jï hjuubhŒ* markups (or languages) like Graphviz’s ”…”�”}”(hjuh²hh³Nh´Nubj» )�”}”(hŒ**DOT**”h]”hŒDOT”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jº hjuubhŒ are provided by the ”…”�”}”(hjuh²hh³Nh´Nubj)�”}”(hŒ``kernel-render``”h]”hŒ kernel-render”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjuubhŒ directives.:”…”�”}”(hjuh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´MþhjÄh²hubjj)�”}”(hŒ‡.. kernel-render:: DOT :alt: foobar digraph :caption: Embedded **DOT** (Graphviz) code digraph foo { "bar" -> "baz"; }”h]”hŒ‡.. kernel-render:: DOT :alt: foobar digraph :caption: Embedded **DOT** (Graphviz) code digraph foo { "bar" -> "baz"; }”…”�”}”hj¹sbah}”(h]”h ]”h"]”h$]”h&]”jyjzuh1jih³hÃh´MhjÄh²hubhÚ)�”}”(hŒÁHow this will be rendered depends on the installed tools. If Graphviz is installed, you will see a vector image. If not, the raw markup is inserted as *literal-block* (:ref:`hello_dot_render`).”h]”(hŒ—How this will be rendered depends on the installed tools. If Graphviz is installed, you will see a vector image. If not, the raw markup is inserted as ”…”�”}”(hjÇh²hh³Nh´Nubjð )�”}”(hŒ*literal-block*”h]”hŒ literal-block”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jï hjÇubhŒ (”…”�”}”(hjÇh²hh³Nh´Nubh)�”}”(hŒ:ref:`hello_dot_render`”h]”jñ)�”}”(hjãh]”hŒhello_dot_render”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”(jüŒstd”Œstd-ref”eh"]”h$]”h&]”uh1jðhjáubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j Œ refdomain”jïŒreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆjŒhello_dot_render”uh1hh³hÃh´M hjÇubhŒ).”…”�”}”(hjÇh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´M hjÄh²hubh¶)�”}”(hŒ.. _hello_dot_render:”h]”h}”(h]”h ]”h"]”h$]”h&]”hÁŒhello-dot-render”uh1hµh´M hjÄh²hh³hÃubjK)�”}”(hhh]”(jDŒ kernel_render”“”)�”}”(hhh]”jj)�”}”(hŒ"digraph foo { "bar" -> "baz"; }”h]”hŒ"digraph foo { "bar" -> "baz"; }”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”jyjzuh1jihjh³hÃubah}”(h]”h ]”h"]”h$]”h&]”Œalt”Œfoobar digraph”Œsrclang”ŒDOT”uh1jhjubjb)�”}”(hŒ Embedded **DOT** (Graphviz) code”h]”(hŒ Embedded ”…”�”}”(hj6h²hh³Nh´Nubj» )�”}”(hŒ**DOT**”h]”hŒDOT”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jº hj6ubhŒ (Graphviz) code”…”�”}”(hj6h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³hh´Khjubeh}”(h]”(Œid9”jeh ]”h"]”Œhello_dot_render”ah$]”h&]”Œalt”j3Œcaption”j8uh1jJhjÄh²hh³hh´Nj×}”j[j sjÙ}”jj subhÚ)�”}”(hXThe *render* directive has all the options known from the *figure* directive, plus option ``caption``. If ``caption`` has a value, a *figure* node is inserted. If not, an *image* node is inserted. A ``caption`` is also needed, if you want to refer to it (:ref:`hello_svg_render`).”h]”(hŒThe ”…”�”}”(hjbh²hh³Nh´Nubjð )�”}”(hŒ*render*”h]”hŒrender”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jï hjbubhŒ. directive has all the options known from the ”…”�”}”(hjbh²hh³Nh´Nubjð )�”}”(hŒ*figure*”h]”hŒfigure”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jï hjbubhŒ directive, plus option ”…”�”}”(hjbh²hh³Nh´Nubj)�”}”(hŒ ``caption``”h]”hŒcaption”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjbubhŒ. If ”…”�”}”(hjbh²hh³Nh´Nubj)�”}”(hŒ ``caption``”h]”hŒcaption”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjbubhŒ has a value, a ”…”�”}”(hjbh²hh³Nh´Nubjð )�”}”(hŒ*figure*”h]”hŒfigure”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jï hjbubhŒ node is inserted. If not, an ”…”�”}”(hjbh²hh³Nh´Nubjð )�”}”(hŒ*image*”h]”hŒimage”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jï hjbubhŒ node is inserted. A ”…”�”}”(hjbh²hh³Nh´Nubj)�”}”(hŒ ``caption``”h]”hŒcaption”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjbubhŒ- is also needed, if you want to refer to it (”…”�”}”(hjbh²hh³Nh´Nubh)�”}”(hŒ:ref:`hello_svg_render`”h]”jñ)�”}”(hjêh]”hŒhello_svg_render”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”(jüŒstd”Œstd-ref”eh"]”h$]”h&]”uh1jðhjèubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j Œ refdomain”jöŒreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆjŒhello_svg_render”uh1hh³hÃh´MhjbubhŒ).”…”�”}”(hjbh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´MhjÄh²hubhÚ)�”}”(hŒEmbedded **SVG**::”h]”(hŒ Embedded ”…”�”}”(hjh²hh³Nh´Nubj» )�”}”(hŒ**SVG**”h]”hŒSVG”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jº hjubhŒ:”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÙh³hÃh´MhjÄh²hubjj)�”}”(hŒÍ.. kernel-render:: SVG :caption: Embedded **SVG** markup :alt: so-nw-arrow ... ”h]”hŒÍ.. kernel-render:: SVG :caption: Embedded **SVG** markup :alt: so-nw-arrow ... ”…”�”}”hj2sbah}”(h]”h ]”h"]”h$]”h&]”jyjzuh1jih³hÃh´MhjÄh²hubh¶)�”}”(hŒ.. _hello_svg_render:”h]”h}”(h]”h ]”h"]”h$]”h&]”hÁŒhello-svg-render”uh1hµh´M'hjÄh²hh³hÃubjK)�”}”(hhh]”(j)�”}”(hhh]”jj)�”}”(hX? ”h]”hX? ”…”�”}”hjQsbah}”(h]”h ]”h"]”h$]”h&]”jyjzuh1jihjNh³hÃubah}”(h]”h ]”h"]”h$]”h&]”j2Œ so-nw-arrow”j4ŒSVG”uh1jhjKubjb)�”}”(hŒEmbedded **SVG** markup”h]”(hŒ Embedded ”…”�”}”(hjgh²hh³Nh´Nubj» )�”}”(hŒ**SVG**”h]”hŒSVG”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jº hjgubhŒ markup”…”�”}”(hjgh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³hh´KhjKubeh}”(h]”(Œid10”jJeh ]”h"]”Œhello_svg_render”ah$]”h&]”Œcaption”jiŒalt”jeuh1jJhjÄh²hh³hh´Nj×}”jŒj@sjÙ}”jJj@subeh}”(h]”(Œfigures-images”j«eh ]”h"]”(Œfigures & images”Œsphinx_kfigure”eh$]”h&]”uh1hÄhhÆh²hh³hÃh´MÙj×}”j™j¡sjÙ}”j«j¡subeh}”(h]”(Œ%using-sphinx-for-kernel-documentation”hÂeh ]”h"]”(Œ%using sphinx for kernel documentation”Œ sphinxdoc”eh$]”h&]”uh1hÄhhh²hh³hÃh´Kj×}”j¤h·sjÙ}”hÂh·subeh}”(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”jŒ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”}”(Œsphinx”]”(håjz eŒrestructuredtext”]”(hüjŽ eŒimgmath”]”j†aŒmathjax”]”j›aŒchoice of math renderer”]”j¾aŒink”]”jaŒsph1_8”]”j±aŒtoc tree”]”jÒ aŒrestructuredtext primer”]”j¢ aŒ!sphinx specific markup constructs”]”j· aŒ0restructuredtext user reference for table syntax”]”j auŒrefids”}”(hÂ]”h·aj²]”j¨ajû]”jñajˆ]”j~aj«]”j¡ajC]”j9ajA]”j7aj]”j ajJ]”j@aj)]”jajÀ]”j±auŒnameids”}”(j¤hÂj£j jjjgjwjtjZj²jYjVjñjîjjjgjjþjâjßjîjëjÔjûjÓjÐjQjNjb j_ j•j)jZ jÎjS jÀjÁj¾j j jÛ jØ jç jä jž j› jÊjÇjÖjÓj.j+jÎjËj•jˆj¹j¶j±j®j™j«j˜j•j|jCjpjAj[jjŒjJuŒ nametypes”}”(j¤ˆj£‰jjˆjwˆjZˆjY‰jñ‰jj‰j‰jâˆjîˆjÔˆjÓ‰jQ‰jb ‰j•ˆjZ ‰jS ˆjÁ‰j ˆjÛ ˆjç ˆjž ‰jʉjÖ‰j.ˆjΉj•ˆj¹‰j±‰j™ˆj˜‰j|ˆjpˆj[ˆjŒˆuh}”(hÂhÆj hÆjgjajtjnj²j³jVj³jîj›jgjôjþjmjßjÙjëjåjûjjÐjjNjÛj_ j_j#jj)jKjÎj˜j»j±jÀj0 j¾je j j jØ jÒ jä jÞ j› jê jÇj¡ jÓjÍj+j%jËj1jˆj‰j¶jÙj®jtj«jÄj•jÄjCjGjAjBjjjJjKjþj×j+ j# j¾j1jsjLjgjEjXjj‰jKuŒ footnote_refs”}”(j]”jaj]”j±auŒ citation_refs”}”Œ autofootnotes”]”(jKj0 eŒautofootnote_refs”]”(jj±eŒsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”jÙK s…”R”Œparse_messages”]”Œtransform_messages”]”(hŒsystem_message”“”)�”}”(hhh]”hÚ)�”}”(hhh]”hŒ/Hyperlink target "sphinxdoc" is not referenced.”…”�”}”hjWsbah}”(h]”h ]”h"]”h$]”h&]”uh1hÙhjTubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”ŒINFO”Œsource”hÃŒline”Kuh1jRubjS)�”}”(hhh]”hÚ)�”}”(hhh]”hŒ4Hyperlink target "sphinx-install" is not referenced.”…”�”}”hjrsbah}”(h]”h ]”h"]”h$]”h&]”uh1hÙhjoubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jlŒsource”hÃŒline”Kuh1jRubjS)�”}”(hhh]”hÚ)�”}”(hhh]”hŒ8Hyperlink target "sphinx-pre-install" is not referenced.”…”�”}”hjŒsbah}”(h]”h ]”h"]”h$]”h&]”uh1hÙhj‰ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jlŒsource”hÃŒline”Kduh1jRubjS)�”}”(hhh]”hÚ)�”}”(hhh]”hŒ.Hyperlink target "last-row" is not referenced.”…”�”}”hj¦sbah}”(h]”h ]”h"]”h$]”h&]”uh1hÙhj£ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jlŒline”M®Œsource”hÃuh1jRubjS)�”}”(hhh]”hÚ)�”}”(hhh]”hŒ4Hyperlink target "sphinx-kfigure" is not referenced.”…”�”}”hjÀsbah}”(h]”h ]”h"]”h$]”h&]”uh1hÙhj½ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jlŒsource”hÃŒline”MÖuh1jRubjS)�”}”(hhh]”hÚ)�”}”(hhh]”hŒ7Hyperlink target "svg-image-example" is not referenced.”…”�”}”hjÚsbah}”(h]”h ]”h"]”h$]”h&]”uh1hÙhj×ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jlŒsource”hÃŒline”Mäuh1jRubjS)�”}”(hhh]”hÚ)�”}”(hhh]”hŒ4Hyperlink target "hello-dot-file" is not referenced.”…”�”}”hjôsbah}”(h]”h ]”h"]”h$]”h&]”uh1hÙhjñubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jlŒsource”hÃŒline”M÷uh1jRubjS)�”}”(hhh]”hÚ)�”}”(hhh]”hŒ6Hyperlink target "hello-dot-render" is not referenced.”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”uh1hÙhj ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jlŒsource”hÃŒline”M uh1jRubjS)�”}”(hhh]”hÚ)�”}”(hhh]”hŒ6Hyperlink target "hello-svg-render" is not referenced.”…”�”}”hj(sbah}”(h]”h ]”h"]”h$]”h&]”uh1hÙhj%ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jlŒsource”hÃŒline”M'uh1jRubeŒ transformer”NŒ include_log”]”Œ decoration”Nh²hub.