mm/hugetlb: fix use after free when subpool max_hpages accounting is not enabled
[linux-block.git] / Documentation / conf.py
CommitLineData
22cba31b
JN
1# -*- coding: utf-8 -*-
2#
3# The Linux Kernel documentation build configuration file, created by
4# sphinx-quickstart on Fri Feb 12 13:51:46 2016.
5#
6# This file is execfile()d with the current directory set to its
7# containing dir.
8#
9# Note that not all possible configuration values are present in this
10# autogenerated file.
11#
12# All configuration values have a default; values that are commented out
13# serve to show the default.
14
15import sys
16import os
d4fe7e14
MCC
17import sphinx
18
e0de2b59
MCC
19from subprocess import check_output
20
d4fe7e14 21# Get Sphinx version
c46988ae 22major, minor, patch = sphinx.version_info[:3]
d4fe7e14 23
22cba31b
JN
24
25# If extensions (or modules to document with autodoc) are in another directory,
26# add these directories to sys.path here. If the directory is relative to the
27# documentation root, use os.path.abspath to make it absolute, like shown here.
24dcdeb2 28sys.path.insert(0, os.path.abspath('sphinx'))
606b9ac8 29from load_config import loadConfig
22cba31b
JN
30
31# -- General configuration ------------------------------------------------
32
33# If your documentation needs a minimal Sphinx version, state it here.
f546ff0c 34needs_sphinx = '1.7'
22cba31b
JN
35
36# Add any Sphinx extension module names here, as strings. They can be
37# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
38# ones.
afde706a 39extensions = ['kerneldoc', 'rstFlatTable', 'kernel_include',
aa204855 40 'kfigure', 'sphinx.ext.ifconfig', 'automarkup',
a7ee04b3 41 'maintainers_include', 'sphinx.ext.autosectionlabel',
63fdc462 42 'kernel_abi', 'kernel_feat']
22cba31b 43
afde706a
JC
44#
45# cdomain is badly broken in Sphinx 3+. Leaving it out generates *most*
46# of the docs correctly, but not all. Scream bloody murder but allow
47# the process to proceed; hopefully somebody will fix this properly soon.
48#
49if major >= 3:
50 sys.stderr.write('''WARNING: The kernel documentation build process
14059a38
MCC
51 support for Sphinx v3.0 and above is brand new. Be prepared for
52 possible issues in the generated output.
b34b86d7 53 ''')
d29f34c0 54 if (major > 3) or (minor > 0 or patch >= 2):
b34b86d7
MCC
55 # Sphinx c function parser is more pedantic with regards to type
56 # checking. Due to that, having macros at c:function cause problems.
57 # Those needed to be scaped by using c_id_attributes[] array
58 c_id_attributes = [
59 # GCC Compiler types not parsed by Sphinx:
60 "__restrict__",
61
62 # include/linux/compiler_types.h:
63 "__iomem",
64 "__kernel",
65 "noinstr",
66 "notrace",
67 "__percpu",
68 "__rcu",
69 "__user",
70
71 # include/linux/compiler_attributes.h:
72 "__alias",
73 "__aligned",
74 "__aligned_largest",
75 "__always_inline",
76 "__assume_aligned",
77 "__cold",
78 "__attribute_const__",
79 "__copy",
80 "__pure",
81 "__designated_init",
82 "__visible",
83 "__printf",
84 "__scanf",
85 "__gnu_inline",
86 "__malloc",
87 "__mode",
88 "__no_caller_saved_registers",
89 "__noclone",
90 "__nonstring",
91 "__noreturn",
92 "__packed",
93 "__pure",
94 "__section",
95 "__always_unused",
96 "__maybe_unused",
97 "__used",
98 "__weak",
99 "noinline",
100
101 # include/linux/memblock.h:
102 "__init_memblock",
103 "__meminit",
104
105 # include/linux/init.h:
106 "__init",
107 "__ref",
108
109 # include/linux/linkage.h:
110 "asmlinkage",
111 ]
112
afde706a
JC
113else:
114 extensions.append('cdomain')
115
4658b0eb
MCC
116# Ensure that autosectionlabel will produce unique names
117autosectionlabel_prefix_document = True
118autosectionlabel_maxdepth = 2
119
f546ff0c 120extensions.append("sphinx.ext.imgmath")
22cba31b
JN
121
122# Add any paths that contain templates here, relative to this directory.
123templates_path = ['_templates']
124
125# The suffix(es) of source filenames.
126# You can specify multiple suffix as a list of string:
127# source_suffix = ['.rst', '.md']
128source_suffix = '.rst'
129
130# The encoding of source files.
131#source_encoding = 'utf-8-sig'
132
133# The master toctree document.
134master_doc = 'index'
135
136# General information about the project.
137project = 'The Linux Kernel'
dc36143f 138copyright = 'The kernel development community'
22cba31b
JN
139author = 'The kernel development community'
140
141# The version info for the project you're documenting, acts as replacement for
142# |version| and |release|, also used in various other places throughout the
143# built documents.
144#
c13ce448
JN
145# In a normal build, version and release are are set to KERNELVERSION and
146# KERNELRELEASE, respectively, from the Makefile via Sphinx command line
147# arguments.
148#
149# The following code tries to extract the information by reading the Makefile,
150# when Sphinx is run directly (e.g. by Read the Docs).
151try:
152 makefile_version = None
153 makefile_patchlevel = None
154 for line in open('../Makefile'):
155 key, val = [x.strip() for x in line.split('=', 2)]
156 if key == 'VERSION':
157 makefile_version = val
158 elif key == 'PATCHLEVEL':
159 makefile_patchlevel = val
160 if makefile_version and makefile_patchlevel:
161 break
162except:
163 pass
164finally:
165 if makefile_version and makefile_patchlevel:
166 version = release = makefile_version + '.' + makefile_patchlevel
167 else:
c13ce448 168 version = release = "unknown version"
22cba31b
JN
169
170# The language for content autogenerated by Sphinx. Refer to documentation
171# for a list of supported languages.
172#
173# This is also used if you do content translation via gettext catalogs.
174# Usually you set "language" from the command line for these cases.
175language = None
176
177# There are two options for replacing |today|: either, you set today to some
178# non-false value, then it is used:
179#today = ''
180# Else, today_fmt is used as the format for a strftime call.
181#today_fmt = '%B %d, %Y'
182
183# List of patterns, relative to source directory, that match files and
184# directories to ignore when looking for source files.
185exclude_patterns = ['output']
186
187# The reST default role (used for this markup: `text`) to use for all
188# documents.
189#default_role = None
190
191# If true, '()' will be appended to :func: etc. cross-reference text.
192#add_function_parentheses = True
193
194# If true, the current module name will be prepended to all description
195# unit titles (such as .. function::).
196#add_module_names = True
197
198# If true, sectionauthor and moduleauthor directives will be shown in the
199# output. They are ignored by default.
200#show_authors = False
201
202# The name of the Pygments (syntax highlighting) style to use.
203pygments_style = 'sphinx'
204
205# A list of ignored prefixes for module index sorting.
206#modindex_common_prefix = []
207
208# If true, keep warnings as "system message" paragraphs in the built documents.
209#keep_warnings = False
210
211# If true, `todo` and `todoList` produce output, else they produce nothing.
212todo_include_todos = False
213
fd5d6669 214primary_domain = 'c'
b459106e 215highlight_language = 'none'
22cba31b
JN
216
217# -- Options for HTML output ----------------------------------------------
218
219# The theme to use for HTML and HTML Help pages. See the documentation for
220# a list of builtin themes.
221
222# The Read the Docs theme is available from
223# - https://github.com/snide/sphinx_rtd_theme
224# - https://pypi.python.org/pypi/sphinx_rtd_theme
225# - python-sphinx-rtd-theme package (on Debian)
226try:
227 import sphinx_rtd_theme
228 html_theme = 'sphinx_rtd_theme'
229 html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
230except ImportError:
231 sys.stderr.write('Warning: The Sphinx \'sphinx_rtd_theme\' HTML theme was not found. Make sure you have the theme installed to produce pretty HTML output. Falling back to the default theme.\n')
232
233# Theme options are theme-specific and customize the look and feel of a theme
234# further. For a list of options available for each theme, see the
235# documentation.
236#html_theme_options = {}
237
238# Add any paths that contain custom themes here, relative to this directory.
239#html_theme_path = []
240
241# The name for this set of Sphinx documents. If None, it defaults to
242# "<project> v<release> documentation".
243#html_title = None
244
245# A shorter title for the navigation bar. Default is the same as html_title.
246#html_short_title = None
247
248# The name of an image file (relative to this directory) to place at the top
249# of the sidebar.
250#html_logo = None
251
252# The name of an image file (within the static path) to use as favicon of the
253# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
254# pixels large.
255#html_favicon = None
256
257# Add any paths that contain custom static files (such as style sheets) here,
258# relative to this directory. They are copied after the builtin static files,
259# so a file named "default.css" will overwrite the builtin "default.css".
bc214671
MH
260
261html_static_path = ['sphinx-static']
262
263html_context = {
264 'css_files': [
265 '_static/theme_overrides.css',
266 ],
267}
22cba31b
JN
268
269# Add any extra paths that contain custom files (such as robots.txt or
270# .htaccess) here, relative to this directory. These files are copied
271# directly to the root of the documentation.
272#html_extra_path = []
273
274# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
275# using the given strftime format.
276#html_last_updated_fmt = '%b %d, %Y'
277
278# If true, SmartyPants will be used to convert quotes and dashes to
279# typographically correct entities.
7282a93f 280html_use_smartypants = False
22cba31b
JN
281
282# Custom sidebar templates, maps document names to template names.
283#html_sidebars = {}
284
285# Additional templates that should be rendered to pages, maps page names to
286# template names.
287#html_additional_pages = {}
288
289# If false, no module index is generated.
290#html_domain_indices = True
291
292# If false, no index is generated.
293#html_use_index = True
294
295# If true, the index is split into individual pages for each letter.
296#html_split_index = False
297
298# If true, links to the reST sources are added to the pages.
299#html_show_sourcelink = True
300
301# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
302#html_show_sphinx = True
303
304# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
305#html_show_copyright = True
306
307# If true, an OpenSearch description file will be output, and all pages will
308# contain a <link> tag referring to it. The value of this option must be the
309# base URL from which the finished HTML is served.
310#html_use_opensearch = ''
311
312# This is the file name suffix for HTML files (e.g. ".xhtml").
313#html_file_suffix = None
314
315# Language to be used for generating the HTML full-text search index.
316# Sphinx supports the following languages:
317# 'da', 'de', 'en', 'es', 'fi', 'fr', 'h', 'it', 'ja'
318# 'nl', 'no', 'pt', 'ro', 'r', 'sv', 'tr'
319#html_search_language = 'en'
320
321# A dictionary with options for the search language support, empty by default.
322# Now only 'ja' uses this config value
323#html_search_options = {'type': 'default'}
324
325# The name of a javascript file (relative to the configuration directory) that
326# implements a search results scorer. If empty, the default will be used.
327#html_search_scorer = 'scorer.js'
328
329# Output file base name for HTML help builder.
330htmlhelp_basename = 'TheLinuxKerneldoc'
331
332# -- Options for LaTeX output ---------------------------------------------
333
334latex_elements = {
335# The paper size ('letterpaper' or 'a4paper').
caee5cde 336'papersize': 'a4paper',
22cba31b
JN
337
338# The font size ('10pt', '11pt' or '12pt').
44ba0bb4 339'pointsize': '11pt',
22cba31b
JN
340
341# Latex figure (float) alignment
342#'figure_align': 'htbp',
caee5cde 343
a682ec4b
MCC
344# Don't mangle with UTF-8 chars
345'inputenc': '',
346'utf8extra': '',
347
caee5cde
MCC
348# Additional stuff for the LaTeX preamble.
349 'preamble': '''
9fdcd6af
MCC
350 % Use some font with UTF-8 support with XeLaTeX
351 \\usepackage{fontspec}
44ba0bb4
DW
352 \\setsansfont{DejaVu Sans}
353 \\setromanfont{DejaVu Serif}
9fdcd6af 354 \\setmonofont{DejaVu Sans Mono}
e0de2b59
MCC
355 '''
356}
9fdcd6af 357
e0de2b59
MCC
358# At least one book (translations) may have Asian characters
359# with are only displayed if xeCJK is used
360
361cjk_cmd = check_output(['fc-list', '--format="%{family[0]}\n"']).decode('utf-8', 'ignore')
362if cjk_cmd.find("Noto Sans CJK SC") >= 0:
363 print ("enabling CJK for LaTeX builder")
364 latex_elements['preamble'] += '''
24889dad
MCC
365 % This is needed for translations
366 \\usepackage{xeCJK}
367 \\setCJKmainfont{Noto Sans CJK SC}
9fdcd6af 368 '''
9fdcd6af
MCC
369
370# Fix reference escape troubles with Sphinx 1.4.x
f546ff0c 371if major == 1:
9fdcd6af
MCC
372 latex_elements['preamble'] += '\\renewcommand*{\\DUrole}[2]{ #2 }\n'
373
9fdcd6af
MCC
374# With Sphinx 1.6, it is possible to change the Bg color directly
375# by using:
376# \definecolor{sphinxnoteBgColor}{RGB}{204,255,255}
377# \definecolor{sphinxwarningBgColor}{RGB}{255,204,204}
378# \definecolor{sphinxattentionBgColor}{RGB}{255,255,204}
379# \definecolor{sphinximportantBgColor}{RGB}{192,255,204}
380#
381# However, it require to use sphinx heavy box with:
382#
383# \renewenvironment{sphinxlightbox} {%
384# \\begin{sphinxheavybox}
385# }
386# \\end{sphinxheavybox}
387# }
388#
389# Unfortunately, the implementation is buggy: if a note is inside a
390# table, it isn't displayed well. So, for now, let's use boring
391# black and white notes.
633d612b 392
22cba31b
JN
393# Grouping the document tree into LaTeX files. List of tuples
394# (source start file, target name, title,
395# author, documentclass [howto, manual, or own class]).
c2b563d8 396# Sorted in alphabetical order
22cba31b 397latex_documents = [
22cba31b
JN
398]
399
9d42afbe
MCC
400# Add all other index files from Documentation/ subdirectories
401for fn in os.listdir('.'):
402 doc = os.path.join(fn, "index")
403 if os.path.exists(doc + ".rst"):
404 has = False
405 for l in latex_documents:
406 if l[0] == doc:
407 has = True
408 break
409 if not has:
410 latex_documents.append((doc, fn + '.tex',
411 'Linux %s Documentation' % fn.capitalize(),
412 'The kernel development community',
413 'manual'))
414
22cba31b
JN
415# The name of an image file (relative to this directory) to place at the top of
416# the title page.
417#latex_logo = None
418
419# For "manual" documents, if this is true, then toplevel headings are parts,
420# not chapters.
421#latex_use_parts = False
422
423# If true, show page references after internal links.
424#latex_show_pagerefs = False
425
426# If true, show URL addresses after external links.
427#latex_show_urls = False
428
429# Documents to append as an appendix to all manuals.
430#latex_appendices = []
431
432# If false, no module index is generated.
433#latex_domain_indices = True
434
435
436# -- Options for manual page output ---------------------------------------
437
438# One entry per manual page. List of tuples
439# (source start file, name, description, authors, manual section).
440man_pages = [
441 (master_doc, 'thelinuxkernel', 'The Linux Kernel Documentation',
442 [author], 1)
443]
444
445# If true, show URL addresses after external links.
446#man_show_urls = False
447
448
449# -- Options for Texinfo output -------------------------------------------
450
451# Grouping the document tree into Texinfo files. List of tuples
452# (source start file, target name, title, author,
453# dir menu entry, description, category)
454texinfo_documents = [
455 (master_doc, 'TheLinuxKernel', 'The Linux Kernel Documentation',
456 author, 'TheLinuxKernel', 'One line description of project.',
457 'Miscellaneous'),
458]
459
460# Documents to append as an appendix to all manuals.
461#texinfo_appendices = []
462
463# If false, no module index is generated.
464#texinfo_domain_indices = True
465
466# How to display URL addresses: 'footnote', 'no', or 'inline'.
467#texinfo_show_urls = 'footnote'
468
469# If true, do not generate a @detailmenu in the "Top" node's menu.
470#texinfo_no_detailmenu = False
471
472
473# -- Options for Epub output ----------------------------------------------
474
475# Bibliographic Dublin Core info.
476epub_title = project
477epub_author = author
478epub_publisher = author
479epub_copyright = copyright
480
481# The basename for the epub file. It defaults to the project name.
482#epub_basename = project
483
484# The HTML theme for the epub output. Since the default themes are not
485# optimized for small screen space, using the same theme for HTML and epub
486# output is usually not wise. This defaults to 'epub', a theme designed to save
487# visual space.
488#epub_theme = 'epub'
489
490# The language of the text. It defaults to the language option
491# or 'en' if the language is not set.
492#epub_language = ''
493
494# The scheme of the identifier. Typical schemes are ISBN or URL.
495#epub_scheme = ''
496
497# The unique identifier of the text. This can be a ISBN number
498# or the project homepage.
499#epub_identifier = ''
500
501# A unique identification for the text.
502#epub_uid = ''
503
504# A tuple containing the cover image and cover page html template filenames.
505#epub_cover = ()
506
507# A sequence of (type, uri, title) tuples for the guide element of content.opf.
508#epub_guide = ()
509
510# HTML files that should be inserted before the pages created by sphinx.
511# The format is a list of tuples containing the path and title.
512#epub_pre_files = []
513
514# HTML files that should be inserted after the pages created by sphinx.
515# The format is a list of tuples containing the path and title.
516#epub_post_files = []
517
518# A list of files that should not be packed into the epub file.
519epub_exclude_files = ['search.html']
520
521# The depth of the table of contents in toc.ncx.
522#epub_tocdepth = 3
523
524# Allow duplicate toc entries.
525#epub_tocdup = True
526
527# Choose between 'default' and 'includehidden'.
528#epub_tocscope = 'default'
529
530# Fix unsupported image types using the Pillow.
531#epub_fix_images = False
532
533# Scale large images.
534#epub_max_image_width = 0
535
536# How to display URL addresses: 'footnote', 'no', or 'inline'.
537#epub_show_urls = 'inline'
538
539# If false, no index is generated.
540#epub_use_index = True
541
542#=======
543# rst2pdf
544#
545# Grouping the document tree into PDF files. List of tuples
546# (source start file, target name, title, author, options).
547#
93431e06 548# See the Sphinx chapter of https://ralsina.me/static/manual.pdf
22cba31b
JN
549#
550# FIXME: Do not add the index file here; the result will be too big. Adding
551# multiple PDF files here actually tries to get the cross-referencing right
552# *between* PDF files.
553pdf_documents = [
520a2477 554 ('kernel-documentation', u'Kernel', u'Kernel', u'J. Random Bozo'),
22cba31b 555]
24dcdeb2
JN
556
557# kernel-doc extension configuration for running Sphinx directly (e.g. by Read
558# the Docs). In a normal build, these are supplied from the Makefile via command
559# line arguments.
560kerneldoc_bin = '../scripts/kernel-doc'
561kerneldoc_srctree = '..'
606b9ac8
MH
562
563# ------------------------------------------------------------------------------
564# Since loadConfig overwrites settings from the global namespace, it has to be
565# the last statement in the conf.py file
566# ------------------------------------------------------------------------------
567loadConfig(globals())