Commit a7cacfb0 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'docs-6.2' of git://git.lwn.net/linux

Pull documentation updates from Jonathan Corbet:
 "This was a not-too-busy cycle for documentation; highlights include:

   - The beginnings of a set of translations into Spanish, headed up by
     Carlos Bilbao

   - More Chinese translations

   - A change to the Sphinx "alabaster" theme by default for HTML
     generation.

     Unlike the previous default (Read the Docs), alabaster is shipped
     with Sphinx by default, reducing the number of other dependencies
     that need to be installed. It also (IMO) produces a cleaner and
     more readable result.

   - The ability to render the documentation into the texinfo format
     (something Sphinx could always do, we just never wired it up until
     now)

  Plus the usual collection of typo fixes, build-warning fixes, and
  minor updates"

* tag 'docs-6.2' of git://git.lwn.net/linux: (67 commits)
  Documentation/features: Use loongarch instead of loong
  Documentation/features-refresh.sh: Only sed the beginning "arch" of ARCH_DIR
  docs/zh_CN: Fix '.. only::' directive's expression
  docs/sp_SP: Add memory-barriers.txt Spanish translation
  docs/zh_CN/LoongArch: Update links of LoongArch ISA Vol1 and ELF psABI
  docs/LoongArch: Update links of LoongArch ISA Vol1 and ELF psABI
  Documentation/features: Update feature lists for 6.1
  Documentation: Fixed a typo in bootconfig.rst
  docs/sp_SP: Add process coding-style translation
  docs/sp_SP: Add kernel-docs.rst Spanish translation
  docs: Create translations/sp_SP/process/, move submitting-patches.rst
  docs: Add book to process/kernel-docs.rst
  docs: Retire old resources from kernel-docs.rst
  docs: Update maintainer of kernel-docs.rst
  Documentation: riscv: Document the sv57 VM layout
  Documentation: USB: correct possessive "its" usage
  math64: fix kernel-doc return value warnings
  math64: add kernel-doc for DIV64_U64_ROUND_UP
  math64: favor kernel-doc from header files
  doc: add texinfodocs and infodocs targets
  ...
parents 96f42635 cc8c418b
...@@ -95,6 +95,15 @@ htmldocs: ...@@ -95,6 +95,15 @@ htmldocs:
@$(srctree)/scripts/sphinx-pre-install --version-check @$(srctree)/scripts/sphinx-pre-install --version-check
@+$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,html,$(var),,$(var))) @+$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,html,$(var),,$(var)))
texinfodocs:
@$(srctree)/scripts/sphinx-pre-install --version-check
@+$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,texinfo,$(var),texinfo,$(var)))
# Note: the 'info' Make target is generated by sphinx itself when
# running the texinfodocs target define above.
infodocs: texinfodocs
$(MAKE) -C $(BUILDDIR)/texinfo info
linkcheckdocs: linkcheckdocs:
@$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,linkcheck,$(var),,$(var))) @$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,linkcheck,$(var),,$(var)))
...@@ -143,6 +152,8 @@ cleandocs: ...@@ -143,6 +152,8 @@ cleandocs:
dochelp: dochelp:
@echo ' Linux kernel internal documentation in different formats from ReST:' @echo ' Linux kernel internal documentation in different formats from ReST:'
@echo ' htmldocs - HTML' @echo ' htmldocs - HTML'
@echo ' texinfodocs - Texinfo'
@echo ' infodocs - Info'
@echo ' latexdocs - LaTeX' @echo ' latexdocs - LaTeX'
@echo ' pdfdocs - PDF' @echo ' pdfdocs - PDF'
@echo ' epubdocs - EPUB' @echo ' epubdocs - EPUB'
......
...@@ -229,7 +229,7 @@ In addition to the kernel command line, the boot config can be used for ...@@ -229,7 +229,7 @@ In addition to the kernel command line, the boot config can be used for
passing the kernel parameters. All the key-value pairs under ``kernel`` passing the kernel parameters. All the key-value pairs under ``kernel``
key will be passed to kernel cmdline directly. Moreover, the key-value key will be passed to kernel cmdline directly. Moreover, the key-value
pairs under ``init`` will be passed to init process via the cmdline. pairs under ``init`` will be passed to init process via the cmdline.
The parameters are concatinated with user-given kernel cmdline string The parameters are concatenated with user-given kernel cmdline string
as the following order, so that the command line parameter can override as the following order, so that the command line parameter can override
bootconfig parameters (this depends on how the subsystem handles parameters bootconfig parameters (this depends on how the subsystem handles parameters
but in general, earlier parameter will be overwritten by later one.):: but in general, earlier parameter will be overwritten by later one.)::
......
========================================================== =================================
Linux support for random number generator in i8xx chipsets Hardware random number generators
========================================================== =================================
Introduction Introduction
============ ============
......
...@@ -14,13 +14,7 @@ for potentially reduced swap I/O. This trade-off can also result in a ...@@ -14,13 +14,7 @@ for potentially reduced swap I/O. This trade-off can also result in a
significant performance improvement if reads from the compressed cache are significant performance improvement if reads from the compressed cache are
faster than reads from a swap device. faster than reads from a swap device.
.. note:: Some potential benefits:
Zswap is a new feature as of v3.11 and interacts heavily with memory
reclaim. This interaction has not been fully explored on the large set of
potential configurations and workloads that exist. For this reason, zswap
is a work in progress and should be considered experimental.
Some potential benefits:
* Desktop/laptop users with limited RAM capacities can mitigate the * Desktop/laptop users with limited RAM capacities can mitigate the
performance impact of swapping. performance impact of swapping.
......
This diff is collapsed.
...@@ -139,6 +139,8 @@ Highest valid capability of the running kernel. Exports ...@@ -139,6 +139,8 @@ Highest valid capability of the running kernel. Exports
``CAP_LAST_CAP`` from the kernel. ``CAP_LAST_CAP`` from the kernel.
.. _core_pattern:
core_pattern core_pattern
============ ============
......
...@@ -14,18 +14,20 @@ Orion family ...@@ -14,18 +14,20 @@ Orion family
Flavors: Flavors:
- 88F5082 - 88F5082
- 88F5181 - 88F5181 a.k.a Orion-1
- 88F5181L - 88F5181L a.k.a Orion-VoIP
- 88F5182 - 88F5182 a.k.a Orion-NAS
- Datasheet: https://web.archive.org/web/20210124231420/http://csclub.uwaterloo.ca/~board/ts7800/MV88F5182-datasheet.pdf - Datasheet: https://web.archive.org/web/20210124231420/http://csclub.uwaterloo.ca/~board/ts7800/MV88F5182-datasheet.pdf
- Programmer's User Guide: https://web.archive.org/web/20210124231536/http://csclub.uwaterloo.ca/~board/ts7800/MV88F5182-opensource-manual.pdf - Programmer's User Guide: https://web.archive.org/web/20210124231536/http://csclub.uwaterloo.ca/~board/ts7800/MV88F5182-opensource-manual.pdf
- User Manual: https://web.archive.org/web/20210124231631/http://csclub.uwaterloo.ca/~board/ts7800/MV88F5182-usermanual.pdf - User Manual: https://web.archive.org/web/20210124231631/http://csclub.uwaterloo.ca/~board/ts7800/MV88F5182-usermanual.pdf
- Functional Errata: https://web.archive.org/web/20210704165540/https://www.digriz.org.uk/ts78xx/88F5182_Functional_Errata.pdf - Functional Errata: https://web.archive.org/web/20210704165540/https://www.digriz.org.uk/ts78xx/88F5182_Functional_Errata.pdf
- 88F5281 - 88F5281 a.k.a Orion-2
- Datasheet: https://web.archive.org/web/20131028144728/http://www.ocmodshop.com/images/reviews/networking/qnap_ts409u/marvel_88f5281_data_sheet.pdf - Datasheet: https://web.archive.org/web/20131028144728/http://www.ocmodshop.com/images/reviews/networking/qnap_ts409u/marvel_88f5281_data_sheet.pdf
- 88F6183 - 88F6183 a.k.a Orion-1-90
Homepage:
https://web.archive.org/web/20080607215437/http://www.marvell.com/products/media/index.jsp
Core: Core:
Feroceon 88fr331 (88f51xx) or 88fr531-vd (88f52xx) ARMv5 compatible Feroceon 88fr331 (88f51xx) or 88fr531-vd (88f52xx) ARMv5 compatible
Linux kernel mach directory: Linux kernel mach directory:
......
...@@ -194,6 +194,24 @@ finally: ...@@ -194,6 +194,24 @@ finally:
else: else:
version = release = "unknown version" version = release = "unknown version"
#
# HACK: there seems to be no easy way for us to get at the version and
# release information passed in from the makefile...so go pawing through the
# command-line options and find it for ourselves.
#
def get_cline_version():
c_version = c_release = ''
for arg in sys.argv:
if arg.startswith('version='):
c_version = arg[8:]
elif arg.startswith('release='):
c_release = arg[8:]
if c_version:
if c_release:
return c_version + '-' + c_release
return c_version
return version # Whatever we came up with before
# The language for content autogenerated by Sphinx. Refer to documentation # The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages. # for a list of supported languages.
# #
...@@ -247,7 +265,7 @@ highlight_language = 'none' ...@@ -247,7 +265,7 @@ highlight_language = 'none'
# a list of builtin themes. # a list of builtin themes.
# Default theme # Default theme
html_theme = 'sphinx_rtd_theme' html_theme = 'alabaster'
html_css_files = [] html_css_files = []
if "DOCS_THEME" in os.environ: if "DOCS_THEME" in os.environ:
...@@ -278,8 +296,12 @@ if html_theme == 'sphinx_rtd_theme' or html_theme == 'sphinx_rtd_dark_mode': ...@@ -278,8 +296,12 @@ if html_theme == 'sphinx_rtd_theme' or html_theme == 'sphinx_rtd_dark_mode':
# Add color-specific RTD normal mode # Add color-specific RTD normal mode
html_css_files.append('theme_rtd_colors.css') html_css_files.append('theme_rtd_colors.css')
html_theme_options = {
'navigation_depth': -1,
}
except ImportError: except ImportError:
html_theme = 'classic' html_theme = 'alabaster'
if "DOCS_CSS" in os.environ: if "DOCS_CSS" in os.environ:
css = os.environ["DOCS_CSS"].split(" ") css = os.environ["DOCS_CSS"].split(" ")
...@@ -295,127 +317,29 @@ if major <= 1 and minor < 8: ...@@ -295,127 +317,29 @@ if major <= 1 and minor < 8:
for l in html_css_files: for l in html_css_files:
html_context['css_files'].append('_static/' + l) html_context['css_files'].append('_static/' + l)
if html_theme == 'classic': if html_theme == 'alabaster':
html_theme_options = { html_theme_options = {
'rightsidebar': False, 'description': get_cline_version(),
'stickysidebar': True, 'page_width': '65em',
'collapsiblesidebar': True, 'sidebar_width': '15em',
'externalrefs': False, 'font_size': 'inherit',
'font_family': 'serif',
'footerbgcolor': "white",
'footertextcolor': "white",
'sidebarbgcolor': "white",
'sidebarbtncolor': "black",
'sidebartextcolor': "black",
'sidebarlinkcolor': "#686bff",
'relbarbgcolor': "#133f52",
'relbartextcolor': "white",
'relbarlinkcolor': "white",
'bgcolor': "white",
'textcolor': "black",
'headbgcolor': "#f2f2f2",
'headtextcolor': "#20435c",
'headlinkcolor': "#c60f0f",
'linkcolor': "#355f7c",
'visitedlinkcolor': "#355f7c",
'codebgcolor': "#3f3f3f",
'codetextcolor': "white",
'bodyfont': "serif",
'headfont': "sans-serif",
} }
sys.stderr.write("Using %s theme\n" % html_theme) sys.stderr.write("Using %s theme\n" % html_theme)
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
#html_theme_options = {}
# Add any paths that contain custom themes here, relative to this directory.
#html_theme_path = []
# The name for this set of Sphinx documents. If None, it defaults to
# "<project> v<release> documentation".
#html_title = None
# A shorter title for the navigation bar. Default is the same as html_title.
#html_short_title = None
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
#html_logo = None
# The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
#html_favicon = None
# Add any paths that contain custom static files (such as style sheets) here, # Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files, # relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css". # so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['sphinx-static'] html_static_path = ['sphinx-static']
# Add any extra paths that contain custom files (such as robots.txt or
# .htaccess) here, relative to this directory. These files are copied
# directly to the root of the documentation.
#html_extra_path = []
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
#html_last_updated_fmt = '%b %d, %Y'
# If true, SmartyPants will be used to convert quotes and dashes to # If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities. # typographically correct entities.
html_use_smartypants = False html_use_smartypants = False
# Custom sidebar templates, maps document names to template names. # Custom sidebar templates, maps document names to template names.
# Note that the RTD theme ignores this. # Note that the RTD theme ignores this
html_sidebars = { '**': ['searchbox.html', 'localtoc.html', 'sourcelink.html']} html_sidebars = { '**': ["about.html", 'searchbox.html', 'localtoc.html', 'sourcelink.html']}
# Additional templates that should be rendered to pages, maps page names to
# template names.
#html_additional_pages = {}
# If false, no module index is generated.
#html_domain_indices = True
# If false, no index is generated.
#html_use_index = True
# If true, the index is split into individual pages for each letter.
#html_split_index = False
# If true, links to the reST sources are added to the pages.
#html_show_sourcelink = True
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
#html_show_sphinx = True
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
#html_show_copyright = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
#html_use_opensearch = ''
# This is the file name suffix for HTML files (e.g. ".xhtml").
#html_file_suffix = None
# Language to be used for generating the HTML full-text search index.
# Sphinx supports the following languages:
# 'da', 'de', 'en', 'es', 'fi', 'fr', 'h', 'it', 'ja'
# 'nl', 'no', 'pt', 'ro', 'r', 'sv', 'tr'
#html_search_language = 'en'
# A dictionary with options for the search language support, empty by default.
# Now only 'ja' uses this config value
#html_search_options = {'type': 'default'}
# The name of a javascript file (relative to the configuration directory) that
# implements a search results scorer. If empty, the default will be used.
#html_search_scorer = 'scorer.js'
# Output file base name for HTML help builder. # Output file base name for HTML help builder.
htmlhelp_basename = 'TheLinuxKerneldoc' htmlhelp_basename = 'TheLinuxKerneldoc'
...@@ -558,19 +482,6 @@ texinfo_documents = [ ...@@ -558,19 +482,6 @@ texinfo_documents = [
'Miscellaneous'), 'Miscellaneous'),
] ]
# Documents to append as an appendix to all manuals.
#texinfo_appendices = []
# If false, no module index is generated.
#texinfo_domain_indices = True
# How to display URL addresses: 'footnote', 'no', or 'inline'.
#texinfo_show_urls = 'footnote'
# If true, do not generate a @detailmenu in the "Top" node's menu.
#texinfo_no_detailmenu = False
# -- Options for Epub output ---------------------------------------------- # -- Options for Epub output ----------------------------------------------
# Bibliographic Dublin Core info. # Bibliographic Dublin Core info.
...@@ -579,67 +490,9 @@ epub_author = author ...@@ -579,67 +490,9 @@ epub_author = author
epub_publisher = author epub_publisher = author
epub_copyright = copyright epub_copyright = copyright
# The basename for the epub file. It defaults to the project name.
#epub_basename = project
# The HTML theme for the epub output. Since the default themes are not
# optimized for small screen space, using the same theme for HTML and epub
# output is usually not wise. This defaults to 'epub', a theme designed to save
# visual space.
#epub_theme = 'epub'
# The language of the text. It defaults to the language option
# or 'en' if the language is not set.
#epub_language = ''
# The scheme of the identifier. Typical schemes are ISBN or URL.
#epub_scheme = ''
# The unique identifier of the text. This can be a ISBN number
# or the project homepage.
#epub_identifier = ''
# A unique identification for the text.
#epub_uid = ''
# A tuple containing the cover image and cover page html template filenames.
#epub_cover = ()
# A sequence of (type, uri, title) tuples for the guide element of content.opf.
#epub_guide = ()
# HTML files that should be inserted before the pages created by sphinx.
# The format is a list of tuples containing the path and title.
#epub_pre_files = []
# HTML files that should be inserted after the pages created by sphinx.
# The format is a list of tuples containing the path and title.
#epub_post_files = []
# A list of files that should not be packed into the epub file. # A list of files that should not be packed into the epub file.
epub_exclude_files = ['search.html'] epub_exclude_files = ['search.html']
# The depth of the table of contents in toc.ncx.
#epub_tocdepth = 3
# Allow duplicate toc entries.
#epub_tocdup = True
# Choose between 'default' and 'includehidden'.
#epub_tocscope = 'default'
# Fix unsupported image types using the Pillow.
#epub_fix_images = False
# Scale large images.
#epub_max_image_width = 0
# How to display URL addresses: 'footnote', 'no', or 'inline'.
#epub_show_urls = 'inline'
# If false, no index is generated.
#epub_use_index = True
#======= #=======
# rst2pdf # rst2pdf
# #
......
...@@ -171,9 +171,6 @@ Division Functions ...@@ -171,9 +171,6 @@ Division Functions
.. kernel-doc:: include/linux/math64.h .. kernel-doc:: include/linux/math64.h
:internal: :internal:
.. kernel-doc:: lib/math/div64.c
:functions: div_s64_rem div64_u64_rem div64_u64 div64_s64
.. kernel-doc:: lib/math/gcd.c .. kernel-doc:: lib/math/gcd.c
:export: :export:
......
...@@ -147,11 +147,9 @@ section of ``make help``. The generated documentation is placed in ...@@ -147,11 +147,9 @@ section of ``make help``. The generated documentation is placed in
format-specific subdirectories under ``Documentation/output``. format-specific subdirectories under ``Documentation/output``.
To generate documentation, Sphinx (``sphinx-build``) must obviously be To generate documentation, Sphinx (``sphinx-build``) must obviously be
installed. For prettier HTML output, the Read the Docs Sphinx theme installed. For PDF output you'll also need ``XeLaTeX`` and ``convert(1)``
(``sphinx_rtd_theme``) is used if available. For PDF output you'll also need from ImageMagick (https://www.imagemagick.org).\ [#ink]_ All of these are
``XeLaTeX`` and ``convert(1)`` from ImageMagick widely available and packaged in distributions.
(https://www.imagemagick.org).\ [#ink]_
All of these are widely available and packaged in distributions.
To pass extra options to Sphinx, you can use the ``SPHINXOPTS`` make To pass extra options to Sphinx, you can use the ``SPHINXOPTS`` make
variable. For example, use ``make SPHINXOPTS=-v htmldocs`` to get more verbose variable. For example, use ``make SPHINXOPTS=-v htmldocs`` to get more verbose
...@@ -160,12 +158,8 @@ output. ...@@ -160,12 +158,8 @@ output.
It is also possible to pass an extra DOCS_CSS overlay file, in order to customize 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. the html layout, by using the ``DOCS_CSS`` make variable.
By default, the build will try to use the Read the Docs sphinx theme: By default, the "Alabaster" theme is used to build the HTML documentation;
this theme is bundled with Sphinx and need not be installed separately.
https://github.com/readthedocs/sphinx_rtd_theme
If the theme is not available, it will fall-back to the classic one.
The Sphinx theme can be overridden by using the ``DOCS_THEME`` make variable. The Sphinx theme can be overridden by using the ``DOCS_THEME`` make variable.
There is another make variable ``SPHINXDIRS``, which is useful when test There is another make variable ``SPHINXDIRS``, which is useful when test
......
...@@ -287,12 +287,16 @@ IIO ...@@ -287,12 +287,16 @@ IIO
devm_iio_device_register() devm_iio_device_register()
devm_iio_dmaengine_buffer_setup() devm_iio_dmaengine_buffer_setup()
devm_iio_kfifo_buffer_setup() devm_iio_kfifo_buffer_setup()
devm_iio_kfifo_buffer_setup_ext()
devm_iio_map_array_register() devm_iio_map_array_register()
devm_iio_triggered_buffer_setup() devm_iio_triggered_buffer_setup()
devm_iio_triggered_buffer_setup_ext()
devm_iio_trigger_alloc() devm_iio_trigger_alloc()
devm_iio_trigger_register() devm_iio_trigger_register()
devm_iio_channel_get() devm_iio_channel_get()
devm_iio_channel_get_all() devm_iio_channel_get_all()
devm_iio_hw_consumer_alloc()
devm_fwnode_iio_channel_get_by_name()
INPUT INPUT
devm_input_allocate_device() devm_input_allocate_device()
...@@ -339,7 +343,10 @@ IRQ ...@@ -339,7 +343,10 @@ IRQ
LED LED
devm_led_classdev_register() devm_led_classdev_register()
devm_led_classdev_register_ext()
devm_led_classdev_unregister() devm_led_classdev_unregister()
devm_led_trigger_register()
devm_of_led_get()
MDIO MDIO
devm_mdiobus_alloc() devm_mdiobus_alloc()
...@@ -403,6 +410,7 @@ POWER ...@@ -403,6 +410,7 @@ POWER
devm_reboot_mode_unregister() devm_reboot_mode_unregister()
PWM PWM
devm_pwmchip_add()
devm_pwm_get() devm_pwm_get()
devm_fwnode_pwm_get() devm_fwnode_pwm_get()
......
...@@ -189,7 +189,7 @@ eisa_bus.enable_dev ...@@ -189,7 +189,7 @@ eisa_bus.enable_dev
initialize the device in such conditions. initialize the device in such conditions.
eisa_bus.disable_dev eisa_bus.disable_dev
A comma-separated list of slots to be enabled, even if the firmware A comma-separated list of slots to be disabled, even if the firmware
set the card as enabled. The driver won't be called to handle this set the card as enabled. The driver won't be called to handle this
device. device.
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | TODO | | csky: | TODO |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | TODO | | ia64: | TODO |
| loong: | TODO | | loongarch: | TODO |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | TODO | | microblaze: | TODO |
| mips: | ok | | mips: | ok |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | TODO | | csky: | TODO |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | TODO | | ia64: | TODO |
| loong: | TODO | | loongarch: | ok |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | TODO | | microblaze: | TODO |
| mips: | ok | | mips: | ok |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | ok | | csky: | ok |
| hexagon: | ok | | hexagon: | ok |
| ia64: | ok | | ia64: | ok |
| loong: | ok | | loongarch: | ok |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | TODO | | microblaze: | TODO |
| mips: | ok | | mips: | ok |
......
...@@ -10,10 +10,10 @@ ...@@ -10,10 +10,10 @@
| arc: | ok | | arc: | ok |
| arm: | ok | | arm: | ok |
| arm64: | ok | | arm64: | ok |
| csky: | TODO | | csky: | ok |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | TODO | | ia64: | TODO |
| loong: | TODO | | loongarch: | TODO |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | TODO | | microblaze: | TODO |
| mips: | ok | | mips: | ok |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | TODO | | csky: | TODO |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | TODO | | ia64: | TODO |
| loong: | TODO | | loongarch: | TODO |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | TODO | | microblaze: | TODO |
| mips: | TODO | | mips: | TODO |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | ok | | csky: | ok |
| hexagon: | ok | | hexagon: | ok |
| ia64: | ok | | ia64: | ok |
| loong: | ok | | loongarch: | ok |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | TODO | | microblaze: | TODO |
| mips: | ok | | mips: | ok |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | TODO | | csky: | TODO |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | TODO | | ia64: | TODO |
| loong: | TODO | | loongarch: | TODO |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | TODO | | microblaze: | TODO |
| mips: | TODO | | mips: | TODO |
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
| s390: | ok | | s390: | ok |
| sh: | TODO | | sh: | TODO |
| sparc: | TODO | | sparc: | TODO |
| um: | TODO | | um: | ok |
| x86: | ok | | x86: | ok |
| xtensa: | ok | | xtensa: | ok |
----------------------- -----------------------
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | TODO | | csky: | TODO |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | TODO | | ia64: | TODO |
| loong: | TODO | | loongarch: | TODO |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | TODO | | microblaze: | TODO |
| mips: | TODO | | mips: | TODO |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | ok | | csky: | ok |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | TODO | | ia64: | TODO |
| loong: | TODO | | loongarch: | TODO |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | ok | | microblaze: | ok |
| mips: | ok | | mips: | ok |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | TODO | | csky: | TODO |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | TODO | | ia64: | TODO |
| loong: | TODO | | loongarch: | TODO |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | TODO | | microblaze: | TODO |
| mips: | ok | | mips: | ok |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | TODO | | csky: | TODO |
| hexagon: | ok | | hexagon: | ok |
| ia64: | TODO | | ia64: | TODO |
| loong: | TODO | | loongarch: | TODO |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | ok | | microblaze: | ok |
| mips: | ok | | mips: | ok |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | ok | | csky: | ok |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | TODO | | ia64: | TODO |
| loong: | TODO | | loongarch: | TODO |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | ok | | microblaze: | ok |
| mips: | ok | | mips: | ok |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | ok | | csky: | ok |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | TODO | | ia64: | TODO |
| loong: | TODO | | loongarch: | TODO |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | TODO | | microblaze: | TODO |
| mips: | TODO | | mips: | TODO |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | ok | | csky: | ok |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | ok | | ia64: | ok |
| loong: | TODO | | loongarch: | TODO |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | TODO | | microblaze: | TODO |
| mips: | ok | | mips: | ok |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | ok | | csky: | ok |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | ok | | ia64: | ok |
| loong: | TODO | | loongarch: | TODO |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | TODO | | microblaze: | TODO |
| mips: | ok | | mips: | ok |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | TODO | | csky: | TODO |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | TODO | | ia64: | TODO |
| loong: | TODO | | loongarch: | TODO |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | TODO | | microblaze: | TODO |
| mips: | TODO | | mips: | TODO |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | ok | | csky: | ok |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | TODO | | ia64: | TODO |
| loong: | TODO | | loongarch: | TODO |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | TODO | | microblaze: | TODO |
| mips: | ok | | mips: | ok |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | ok | | csky: | ok |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | TODO | | ia64: | TODO |
| loong: | TODO | | loongarch: | TODO |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | TODO | | microblaze: | TODO |
| mips: | ok | | mips: | ok |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | TODO | | csky: | TODO |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | TODO | | ia64: | TODO |
| loong: | TODO | | loongarch: | TODO |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | TODO | | microblaze: | TODO |
| mips: | TODO | | mips: | TODO |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | ok | | csky: | ok |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | TODO | | ia64: | TODO |
| loong: | ok | | loongarch: | ok |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | ok | | microblaze: | ok |
| mips: | ok | | mips: | ok |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | TODO | | csky: | TODO |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | TODO | | ia64: | TODO |
| loong: | TODO | | loongarch: | TODO |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | TODO | | microblaze: | TODO |
| mips: | TODO | | mips: | TODO |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | ok | | csky: | ok |
| hexagon: | ok | | hexagon: | ok |
| ia64: | TODO | | ia64: | TODO |
| loong: | ok | | loongarch: | ok |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | ok | | microblaze: | ok |
| mips: | ok | | mips: | ok |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | ok | | csky: | ok |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | TODO | | ia64: | TODO |
| loong: | ok | | loongarch: | ok |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | TODO | | microblaze: | TODO |
| mips: | ok | | mips: | ok |
......
...@@ -10,10 +10,10 @@ ...@@ -10,10 +10,10 @@
| arc: | TODO | | arc: | TODO |
| arm: | TODO | | arm: | TODO |
| arm64: | ok | | arm64: | ok |
| csky: | TODO | | csky: | ok |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | TODO | | ia64: | TODO |
| loong: | TODO | | loongarch: | ok |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | TODO | | microblaze: | TODO |
| mips: | ok | | mips: | ok |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | ok | | csky: | ok |
| hexagon: | ok | | hexagon: | ok |
| ia64: | TODO | | ia64: | TODO |
| loong: | ok | | loongarch: | ok |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | TODO | | microblaze: | TODO |
| mips: | ok | | mips: | ok |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | ok | | csky: | ok |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | TODO | | ia64: | TODO |
| loong: | TODO | | loongarch: | ok |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | TODO | | microblaze: | TODO |
| mips: | ok | | mips: | ok |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | ok | | csky: | ok |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | TODO | | ia64: | TODO |
| loong: | TODO | | loongarch: | ok |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | TODO | | microblaze: | TODO |
| mips: | ok | | mips: | ok |
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
| csky: | TODO | | csky: | TODO |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | TODO | | ia64: | TODO |
| loong: | TODO | | loongarch: | TODO |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | TODO | | microblaze: | TODO |
| mips: | TODO | | mips: | TODO |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | .. | | csky: | .. |
| hexagon: | .. | | hexagon: | .. |
| ia64: | TODO | | ia64: | TODO |
| loong: | ok | | loongarch: | ok |
| m68k: | .. | | m68k: | .. |
| microblaze: | .. | | microblaze: | .. |
| mips: | TODO | | mips: | TODO |
......
...@@ -60,7 +60,7 @@ for F_FILE in Documentation/features/*/*/arch-support.txt; do ...@@ -60,7 +60,7 @@ for F_FILE in Documentation/features/*/*/arch-support.txt; do
echo " | arch |status|" >> $T_FILE echo " | arch |status|" >> $T_FILE
echo " -----------------------" >> $T_FILE echo " -----------------------" >> $T_FILE
for ARCH_DIR in arch/*/; do for ARCH_DIR in arch/*/; do
ARCH=$(echo $ARCH_DIR | sed -e 's/arch//g' | sed -e 's/\///g') ARCH=$(echo $ARCH_DIR | sed -e 's/^arch//g' | sed -e 's/\///g')
K_FILES=$(find $ARCH_DIR -name "Kconfig*") K_FILES=$(find $ARCH_DIR -name "Kconfig*")
K_GREP=$(grep "$K" $K_FILES) K_GREP=$(grep "$K" $K_FILES)
# #
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | ok | | csky: | ok |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | TODO | | ia64: | TODO |
| loong: | ok | | loongarch: | ok |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | TODO | | microblaze: | TODO |
| mips: | ok | | mips: | ok |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | TODO | | csky: | TODO |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | TODO | | ia64: | TODO |
| loong: | ok | | loongarch: | ok |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | TODO | | microblaze: | TODO |
| mips: | ok | | mips: | ok |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | ok | | csky: | ok |
| hexagon: | ok | | hexagon: | ok |
| ia64: | TODO | | ia64: | TODO |
| loong: | ok | | loongarch: | ok |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | ok | | microblaze: | ok |
| mips: | ok | | mips: | ok |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | ok | | csky: | ok |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | TODO | | ia64: | TODO |
| loong: | ok | | loongarch: | ok |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | TODO | | microblaze: | TODO |
| mips: | ok | | mips: | ok |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | TODO | | csky: | TODO |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | .. | | ia64: | .. |
| loong: | ok | | loongarch: | ok |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | TODO | | microblaze: | TODO |
| mips: | ok | | mips: | ok |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | ok | | csky: | ok |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | ok | | ia64: | ok |
| loong: | ok | | loongarch: | ok |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | TODO | | microblaze: | TODO |
| mips: | ok | | mips: | ok |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | TODO | | csky: | TODO |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | TODO | | ia64: | TODO |
| loong: | TODO | | loongarch: | TODO |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | TODO | | microblaze: | TODO |
| mips: | ok | | mips: | ok |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | TODO | | csky: | TODO |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | ok | | ia64: | ok |
| loong: | TODO | | loongarch: | TODO |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | TODO | | microblaze: | TODO |
| mips: | TODO | | mips: | TODO |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | .. | | csky: | .. |
| hexagon: | .. | | hexagon: | .. |
| ia64: | TODO | | ia64: | TODO |
| loong: | ok | | loongarch: | ok |
| m68k: | .. | | m68k: | .. |
| microblaze: | .. | | microblaze: | .. |
| mips: | ok | | mips: | ok |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | TODO | | csky: | TODO |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | TODO | | ia64: | TODO |
| loong: | TODO | | loongarch: | TODO |
| m68k: | .. | | m68k: | .. |
| microblaze: | .. | | microblaze: | .. |
| mips: | TODO | | mips: | TODO |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | TODO | | csky: | TODO |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | TODO | | ia64: | TODO |
| loong: | TODO | | loongarch: | TODO |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | TODO | | microblaze: | TODO |
| mips: | TODO | | mips: | TODO |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | TODO | | csky: | TODO |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | TODO | | ia64: | TODO |
| loong: | ok | | loongarch: | ok |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | TODO | | microblaze: | TODO |
| mips: | ok | | mips: | ok |
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
| csky: | TODO | | csky: | TODO |
| hexagon: | TODO | | hexagon: | TODO |
| ia64: | TODO | | ia64: | TODO |
| loong: | ok | | loongarch: | ok |
| m68k: | TODO | | m68k: | TODO |
| microblaze: | TODO | | microblaze: | TODO |
| mips: | ok | | mips: | ok |
......
...@@ -155,8 +155,8 @@ any code which does so in the mainline. Note that all files created with ...@@ -155,8 +155,8 @@ any code which does so in the mainline. Note that all files created with
debugfs_create_blob() are read-only. debugfs_create_blob() are read-only.
If you want to dump a block of registers (something that happens quite If you want to dump a block of registers (something that happens quite
often during development, even if little such code reaches mainline. often during development, even if little such code reaches mainline),
Debugfs offers two functions: one to make a registers-only file, and debugfs offers two functions: one to make a registers-only file, and
another to insert a register block in the middle of another sequential another to insert a register block in the middle of another sequential
file:: file::
...@@ -183,7 +183,7 @@ The "base" argument may be 0, but you may want to build the reg32 array ...@@ -183,7 +183,7 @@ The "base" argument may be 0, but you may want to build the reg32 array
using __stringify, and a number of register names (macros) are actually using __stringify, and a number of register names (macros) are actually
byte offsets over a base for the register block. byte offsets over a base for the register block.
If you want to dump an u32 array in debugfs, you can create file with:: If you want to dump a u32 array in debugfs, you can create a file with::
struct debugfs_u32_array { struct debugfs_u32_array {
u32 *array; u32 *array;
...@@ -197,7 +197,7 @@ If you want to dump an u32 array in debugfs, you can create file with:: ...@@ -197,7 +197,7 @@ If you want to dump an u32 array in debugfs, you can create file with::
The "array" argument wraps a pointer to the array's data and the number The "array" argument wraps a pointer to the array's data and the number
of its elements. Note: Once array is created its size can not be changed. of its elements. Note: Once array is created its size can not be changed.
There is a helper function to create device related seq_file:: There is a helper function to create a device-related seq_file::
void debugfs_create_devm_seqfile(struct device *dev, void debugfs_create_devm_seqfile(struct device *dev,
const char *name, const char *name,
......
...@@ -245,7 +245,8 @@ It's slow but very precise. ...@@ -245,7 +245,8 @@ It's slow but very precise.
Ngid NUMA group ID (0 if none) Ngid NUMA group ID (0 if none)
Pid process id Pid process id
PPid process id of the parent process PPid process id of the parent process
TracerPid PID of process tracing this process (0 if not) TracerPid PID of process tracing this process (0 if not, or
the tracer is outside of the current pid namespace)
Uid Real, effective, saved set, and file system UIDs Uid Real, effective, saved set, and file system UIDs
Gid Real, effective, saved set, and file system GIDs Gid Real, effective, saved set, and file system GIDs
FDSize number of file descriptor slots currently allocated FDSize number of file descriptor slots currently allocated
......
...@@ -12,10 +12,10 @@ Mike Murphy <mamurph@cs.clemson.edu> ...@@ -12,10 +12,10 @@ Mike Murphy <mamurph@cs.clemson.edu>
:Original: 10 January 2003 :Original: 10 January 2003
What it is: What it is
~~~~~~~~~~~ ~~~~~~~~~~
sysfs is a ram-based filesystem initially based on ramfs. It provides sysfs is a RAM-based filesystem initially based on ramfs. It provides
a means to export kernel data structures, their attributes, and the a means to export kernel data structures, their attributes, and the
linkages between them to userspace. linkages between them to userspace.
...@@ -43,7 +43,7 @@ userspace. Top-level directories in sysfs represent the common ...@@ -43,7 +43,7 @@ userspace. Top-level directories in sysfs represent the common
ancestors of object hierarchies; i.e. the subsystems the objects ancestors of object hierarchies; i.e. the subsystems the objects
belong to. belong to.
Sysfs internally stores a pointer to the kobject that implements a sysfs internally stores a pointer to the kobject that implements a
directory in the kernfs_node object associated with the directory. In directory in the kernfs_node object associated with the directory. In
the past this kobject pointer has been used by sysfs to do reference the past this kobject pointer has been used by sysfs to do reference
counting directly on the kobject whenever the file is opened or closed. counting directly on the kobject whenever the file is opened or closed.
...@@ -55,7 +55,7 @@ Attributes ...@@ -55,7 +55,7 @@ Attributes
~~~~~~~~~~ ~~~~~~~~~~
Attributes can be exported for kobjects in the form of regular files in Attributes can be exported for kobjects in the form of regular files in
the filesystem. Sysfs forwards file I/O operations to methods defined the filesystem. sysfs forwards file I/O operations to methods defined
for the attributes, providing a means to read and write kernel for the attributes, providing a means to read and write kernel
attributes. attributes.
...@@ -72,8 +72,8 @@ you publicly humiliated and your code rewritten without notice. ...@@ -72,8 +72,8 @@ you publicly humiliated and your code rewritten without notice.
An attribute definition is simply:: An attribute definition is simply::
struct attribute { struct attribute {
char * name; char *name;
struct module *owner; struct module *owner;
umode_t mode; umode_t mode;
}; };
...@@ -138,7 +138,7 @@ __ATTR_WO(name): ...@@ -138,7 +138,7 @@ __ATTR_WO(name):
assumes a name_store only and is restricted to mode assumes a name_store only and is restricted to mode
0200 that is root write access only. 0200 that is root write access only.
__ATTR_RO_MODE(name, mode): __ATTR_RO_MODE(name, mode):
fore more restrictive RO access currently for more restrictive RO access; currently
only use case is the EFI System Resource Table only use case is the EFI System Resource Table
(see drivers/firmware/efi/esrt.c) (see drivers/firmware/efi/esrt.c)
__ATTR_RW(name): __ATTR_RW(name):
...@@ -207,7 +207,7 @@ IOW, they should take only an object, an attribute, and a buffer as parameters. ...@@ -207,7 +207,7 @@ IOW, they should take only an object, an attribute, and a buffer as parameters.
sysfs allocates a buffer of size (PAGE_SIZE) and passes it to the sysfs allocates a buffer of size (PAGE_SIZE) and passes it to the
method. Sysfs will call the method exactly once for each read or method. sysfs will call the method exactly once for each read or
write. This forces the following behavior on the method write. This forces the following behavior on the method
implementations: implementations:
...@@ -221,7 +221,7 @@ implementations: ...@@ -221,7 +221,7 @@ implementations:
be called again, rearmed, to fill the buffer. be called again, rearmed, to fill the buffer.
- On write(2), sysfs expects the entire buffer to be passed during the - On write(2), sysfs expects the entire buffer to be passed during the
first write. Sysfs then passes the entire buffer to the store() method. first write. sysfs then passes the entire buffer to the store() method.
A terminating null is added after the data on stores. This makes A terminating null is added after the data on stores. This makes
functions like sysfs_streq() safe to use. functions like sysfs_streq() safe to use.
...@@ -237,7 +237,7 @@ Other notes: ...@@ -237,7 +237,7 @@ Other notes:
- Writing causes the show() method to be rearmed regardless of current - Writing causes the show() method to be rearmed regardless of current
file position. file position.
- The buffer will always be PAGE_SIZE bytes in length. On i386, this - The buffer will always be PAGE_SIZE bytes in length. On x86, this
is 4096. is 4096.
- show() methods should return the number of bytes printed into the - show() methods should return the number of bytes printed into the
...@@ -253,7 +253,7 @@ Other notes: ...@@ -253,7 +253,7 @@ Other notes:
through, be sure to return an error. through, be sure to return an error.
- The object passed to the methods will be pinned in memory via sysfs - The object passed to the methods will be pinned in memory via sysfs
referencing counting its embedded object. However, the physical reference counting its embedded object. However, the physical
entity (e.g. device) the object represents may not be present. Be entity (e.g. device) the object represents may not be present. Be
sure to have a way to check this, if necessary. sure to have a way to check this, if necessary.
...@@ -295,8 +295,12 @@ The top level sysfs directory looks like:: ...@@ -295,8 +295,12 @@ The top level sysfs directory looks like::
dev/ dev/
devices/ devices/
firmware/ firmware/
net/
fs/ fs/
hypervisor/
kernel/
module/
net/
power/
devices/ contains a filesystem representation of the device tree. It maps devices/ contains a filesystem representation of the device tree. It maps
directly to the internal kernel device tree, which is a hierarchy of directly to the internal kernel device tree, which is a hierarchy of
...@@ -317,15 +321,18 @@ span multiple bus types). ...@@ -317,15 +321,18 @@ span multiple bus types).
fs/ contains a directory for some filesystems. Currently each fs/ contains a directory for some filesystems. Currently each
filesystem wanting to export attributes must create its own hierarchy filesystem wanting to export attributes must create its own hierarchy
below fs/ (see ./fuse.txt for an example). below fs/ (see ./fuse.rst for an example).
module/ contains parameter values and state information for all
loaded system modules, for both builtin and loadable modules.
dev/ contains two directories char/ and block/. Inside these two dev/ contains two directories: char/ and block/. Inside these two
directories there are symlinks named <major>:<minor>. These symlinks directories there are symlinks named <major>:<minor>. These symlinks
point to the sysfs directory for the given device. /sys/dev provides a point to the sysfs directory for the given device. /sys/dev provides a
quick way to lookup the sysfs interface for a device from the result of quick way to lookup the sysfs interface for a device from the result of
a stat(2) operation. a stat(2) operation.
More information can driver-model specific features can be found in More information on driver-model specific features can be found in
Documentation/driver-api/driver-model/. Documentation/driver-api/driver-model/.
...@@ -335,7 +342,7 @@ TODO: Finish this section. ...@@ -335,7 +342,7 @@ TODO: Finish this section.
Current Interfaces Current Interfaces
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
The following interface layers currently exist in sysfs: The following interface layers currently exist in sysfs.
devices (include/linux/device.h) devices (include/linux/device.h)
......
...@@ -61,7 +61,7 @@ Memory Map ...@@ -61,7 +61,7 @@ Memory Map
The efi_memmap table is preserved unmodified because the original The efi_memmap table is preserved unmodified because the original
boot-time information is required for kexec. boot-time information is required for kexec.
Kernel Identify Mappings Kernel Identity Mappings
======================== ========================
Linux/ia64 identity mappings are done with large pages, currently Linux/ia64 identity mappings are done with large pages, currently
......
...@@ -375,15 +375,15 @@ Developer web site of Loongson and LoongArch (Software and Documentation): ...@@ -375,15 +375,15 @@ Developer web site of Loongson and LoongArch (Software and Documentation):
Documentation of LoongArch ISA: Documentation of LoongArch ISA:
https://github.com/loongson/LoongArch-Documentation/releases/latest/download/LoongArch-Vol1-v1.00-CN.pdf (in Chinese) https://github.com/loongson/LoongArch-Documentation/releases/latest/download/LoongArch-Vol1-v1.02-CN.pdf (in Chinese)
https://github.com/loongson/LoongArch-Documentation/releases/latest/download/LoongArch-Vol1-v1.00-EN.pdf (in English) https://github.com/loongson/LoongArch-Documentation/releases/latest/download/LoongArch-Vol1-v1.02-EN.pdf (in English)
Documentation of LoongArch ELF psABI: Documentation of LoongArch ELF psABI:
https://github.com/loongson/LoongArch-Documentation/releases/latest/download/LoongArch-ELF-ABI-v1.00-CN.pdf (in Chinese) https://github.com/loongson/LoongArch-Documentation/releases/latest/download/LoongArch-ELF-ABI-v2.00-CN.pdf (in Chinese)
https://github.com/loongson/LoongArch-Documentation/releases/latest/download/LoongArch-ELF-ABI-v1.00-EN.pdf (in English) https://github.com/loongson/LoongArch-Documentation/releases/latest/download/LoongArch-ELF-ABI-v2.00-EN.pdf (in English)
Linux kernel repository of Loongson and LoongArch: Linux kernel repository of Loongson and LoongArch:
......
This diff is collapsed.
...@@ -97,3 +97,39 @@ RISC-V Linux Kernel SV48 ...@@ -97,3 +97,39 @@ RISC-V Linux Kernel SV48
ffffffff00000000 | -4 GB | ffffffff7fffffff | 2 GB | modules, BPF ffffffff00000000 | -4 GB | ffffffff7fffffff | 2 GB | modules, BPF
ffffffff80000000 | -2 GB | ffffffffffffffff | 2 GB | kernel ffffffff80000000 | -2 GB | ffffffffffffffff | 2 GB | kernel
__________________|____________|__________________|_________|____________________________________________________________ __________________|____________|__________________|_________|____________________________________________________________
RISC-V Linux Kernel SV57
------------------------
::
========================================================================================================================
Start addr | Offset | End addr | Size | VM area description
========================================================================================================================
| | | |
0000000000000000 | 0 | 00ffffffffffffff | 64 PB | user-space virtual memory, different per mm
__________________|____________|__________________|_________|___________________________________________________________
| | | |
0100000000000000 | +64 PB | feffffffffffffff | ~16K PB | ... huge, almost 64 bits wide hole of non-canonical
| | | | virtual memory addresses up to the -64 PB
| | | | starting offset of kernel mappings.
__________________|____________|__________________|_________|___________________________________________________________
|
| Kernel-space virtual memory, shared between all processes:
____________________________________________________________|___________________________________________________________
| | | |
ff1bfffffee00000 | -57 PB | ff1bfffffeffffff | 2 MB | fixmap
ff1bffffff000000 | -57 PB | ff1bffffffffffff | 16 MB | PCI io
ff1c000000000000 | -57 PB | ff1fffffffffffff | 1 PB | vmemmap
ff20000000000000 | -56 PB | ff5fffffffffffff | 16 PB | vmalloc/ioremap space
ff60000000000000 | -40 PB | ffdeffffffffffff | 32 PB | direct mapping of all physical memory
ffdf000000000000 | -8 PB | fffffffeffffffff | 8 PB | kasan
__________________|____________|__________________|_________|____________________________________________________________
|
| Identical layout to the 39-bit one from here on:
____________________________________________________________|____________________________________________________________
| | | |
ffffffff00000000 | -4 GB | ffffffff7fffffff | 2 GB | modules, BPF
ffffffff80000000 | -2 GB | ffffffffffffffff | 2 GB | kernel
__________________|____________|__________________|_________|____________________________________________________________
/* SPDX-License-Identifier: GPL-2.0 */
/*
* CSS tweaks for the Alabaster theme
*/
/* Shrink the headers a bit */
div.body h1 { font-size: 180%; }
div.body h2 { font-size: 150%; }
div.body h3 { font-size: 130%; }
/* Tighten up the layout slightly */
div.body { padding: 0 15px 0 10px; }
div.sphinxsidebarwrapper { padding: 1em 0.4em; }
div.sphinxsidebar { font-size: inherit; }
/* Tweak document margins and don't force width */
div.document {
margin: 20px 10px 0 10px;
width: auto;
}
/*
* Parameters for the display of function prototypes and such included
* from C source files.
*/
dl.function, dl.struct, dl.enum { margin-top: 2em; background-color: #ecf0f3; }
/* indent lines 2+ of multi-line function prototypes */
dl.function dt { margin-left: 10em; text-indent: -10em; }
dt.sig-object { font-size: larger; }
div.kernelindent { margin-left: 2em; margin-right: 4em; }
# jinja2>=3.1 is not compatible with Sphinx<4.0 # jinja2>=3.1 is not compatible with Sphinx<4.0
jinja2<3.1 jinja2<3.1
sphinx_rtd_theme
Sphinx==2.4.4 Sphinx==2.4.4
...@@ -12,6 +12,7 @@ Translations ...@@ -12,6 +12,7 @@ Translations
it_IT/index it_IT/index
ko_KR/index ko_KR/index
ja_JP/index ja_JP/index
sp_SP/index
.. _translations_disclaimer: .. _translations_disclaimer:
......
...@@ -86,9 +86,14 @@ info ページ( info gcc )を見てください。 ...@@ -86,9 +86,14 @@ info ページ( info gcc )を見てください。
-------- --------
Linux カーネルのソースコードは GPL ライセンスの下でリリースされていま Linux カーネルのソースコードは GPL ライセンスの下でリリースされていま
す。ライセンスの詳細については、ソースツリーのメインディレクトリに存在 す。ソースツリーのメインディレクトリにある COPYING のファイルを見てく
する、COPYING のファイルを見てください。もしライセンスについてさらに質 ださい。Linux カーネルのライセンスルールとソースコード内の
問があれば、Linux Kernel メーリングリストに質問するのではなく、どうぞ `SPDX <https://spdx.org/>`_ 識別子の使い方は
:ref:`Documentation/process/license-rules.rst <kernel_licensing>`
に説明されています。
もしライセンスについてさらに質問があれば、
Linux Kernel メーリングリストに質問するのではなく、どうぞ
法律家に相談してください。メーリングリストの人達は法律家ではなく、法的 法律家に相談してください。メーリングリストの人達は法律家ではなく、法的
問題については彼らの声明はあてにするべきではありません。 問題については彼らの声明はあてにするべきではありません。
...@@ -111,7 +116,7 @@ linux-api@vger.kernel.org に送ることを勧めます。 ...@@ -111,7 +116,7 @@ linux-api@vger.kernel.org に送ることを勧めます。
以下はカーネルソースツリーに含まれている読んでおくべきファイルの一覧で 以下はカーネルソースツリーに含まれている読んでおくべきファイルの一覧で
す- す-
README :ref:`Documentation/admin-guide/README.rst <readme>`
このファイルは Linuxカーネルの簡単な背景とカーネルを設定(訳注 このファイルは Linuxカーネルの簡単な背景とカーネルを設定(訳注
configure )し、生成(訳注 build )するために必要なことは何かが書かれ configure )し、生成(訳注 build )するために必要なことは何かが書かれ
ています。 カーネルに関して初めての人はここからスタートすると良い ています。 カーネルに関して初めての人はここからスタートすると良い
...@@ -145,7 +150,8 @@ linux-api@vger.kernel.org に送ることを勧めます。 ...@@ -145,7 +150,8 @@ linux-api@vger.kernel.org に送ることを勧めます。
この他にパッチを作る方法についてのよくできた記述は- この他にパッチを作る方法についてのよくできた記述は-
"The Perfect Patch" "The Perfect Patch"
http://www.ozlabs.org/~akpm/stuff/tpp.txt https://www.ozlabs.org/~akpm/stuff/tpp.txt
"Linux kernel patch submission format" "Linux kernel patch submission format"
https://web.archive.org/web/20180829112450/http://linux.yyz.us/patch-format.html https://web.archive.org/web/20180829112450/http://linux.yyz.us/patch-format.html
...@@ -237,13 +243,6 @@ Linux カーネルソースツリーの中に含まれる、きれいにし、 ...@@ -237,13 +243,6 @@ Linux カーネルソースツリーの中に含まれる、きれいにし、
れるための基礎を学ぶことができ、そしてもしあなたがまだアイディアを持っ れるための基礎を学ぶことができ、そしてもしあなたがまだアイディアを持っ
ていない場合には、次にやる仕事の方向性が見えてくるかもしれません。 ていない場合には、次にやる仕事の方向性が見えてくるかもしれません。
もしあなたが、すでにひとまとまりコードを書いていて、カーネルツリーに入
れたいと思っていたり、それに関する適切な支援を求めたい場合、カーネルメ
ンターズプロジェクトはそのような皆さんを助けるためにできました。ここに
はメーリングリストがあり、以下から参照できます -
https://selenic.com/mailman/listinfo/kernel-mentors
実際に Linux カーネルのコードについて修正を加える前に、どうやってその 実際に Linux カーネルのコードについて修正を加える前に、どうやってその
コードが動作するのかを理解することが必要です。そのためには、特別なツー コードが動作するのかを理解することが必要です。そのためには、特別なツー
ルの助けを借りてでも、それを直接よく読むことが最良の方法です(ほとんど ルの助けを借りてでも、それを直接よく読むことが最良の方法です(ほとんど
...@@ -280,9 +279,11 @@ https://kernel.org のリポジトリに存在します。 ...@@ -280,9 +279,11 @@ https://kernel.org のリポジトリに存在します。
大きな変更は git(カーネルのソース管理ツール、詳細は 大きな変更は git(カーネルのソース管理ツール、詳細は
http://git-scm.com/ 参照) を使って送るのが好ましいやり方ですが、パッ http://git-scm.com/ 参照) を使って送るのが好ましいやり方ですが、パッ
チファイルの形式のまま送るのでも十分です。 チファイルの形式のまま送るのでも十分です。
- 2週間後、-rc1 カーネルがリリースされ、この後にはカーネル全体の安定 - 2週間後 -rc1 カーネルがリリースされ、新しいカーネルを可能な限り堅牢に
性に影響をあたえるような新機能は含まない類のパッチしか取り込むこと することに焦点が移ります。この期間のパッチのほとんどは退行を修正する
はできません。新しいドライバ(もしくはファイルシステム)のパッチは ものとなります。以前から存在していたバグは退行には当たらないため、
送るのは重要な修正だけにしてください。
新しいドライバ (もしくはファイルシステム) のパッチは
-rc1 の後で受け付けられることもあることを覚えておいてください。な -rc1 の後で受け付けられることもあることを覚えておいてください。な
ぜなら、変更が独立していて、追加されたコードの外の領域に影響を与え ぜなら、変更が独立していて、追加されたコードの外の領域に影響を与え
ない限り、退行のリスクは無いからです。-rc1 がリリースされた後、 ない限り、退行のリスクは無いからです。-rc1 がリリースされた後、
...@@ -308,9 +309,12 @@ Andrew Morton が Linux-kernel メーリングリストにカーネルリリー ...@@ -308,9 +309,12 @@ Andrew Morton が Linux-kernel メーリングリストにカーネルリリー
バージョン番号が3つの数字に分かれているカーネルは -stable カーネルです。 バージョン番号が3つの数字に分かれているカーネルは -stable カーネルです。
これには最初の2つのバージョン番号の数字に対応した、 これには最初の2つのバージョン番号の数字に対応した、
メインラインリリースで見つかったセキュリティ問題や ジャーメインラインリリースで見つかったセキュリティ問題や
重大な後戻りに対する比較的小さい重要な修正が含まれます。 重大な後戻りに対する比較的小さい重要な修正が含まれます。
メジャー安定版シリーズのそれぞれのリリースは
バージョン番号の3番目を増加させ、最初の2つの番号は同じ値を保ちます。
これは、開発/実験的バージョンのテストに協力することに興味が無く、最新 これは、開発/実験的バージョンのテストに協力することに興味が無く、最新
の安定したカーネルを使いたいユーザに推奨するブランチです。 の安定したカーネルを使いたいユーザに推奨するブランチです。
...@@ -366,16 +370,10 @@ linux-next の実行テストを行う冒険好きなテスターは大いに歓 ...@@ -366,16 +370,10 @@ linux-next の実行テストを行う冒険好きなテスターは大いに歓
バグレポート バグレポート
------------- -------------
https://bugzilla.kernel.org は Linux カーネル開発者がカーネルのバグを追跡する
場所です。ユーザは見つけたバグの全てをこのツールで報告すべきです。どう
kernel bugzilla を使うかの詳細は、以下を参照してください -
https://bugzilla.kernel.org/page.cgi?id=faq.html
メインカーネルソースディレクトリにあるファイル メインカーネルソースディレクトリにあるファイル
admin-guide/reporting-bugs.rstはカーネルバグらしいものについてどうレポー 'Documentation/admin-guide/reporting-issues.rst'
トするかの良いテンプレートであり、問題の追跡を助けるためにカーネル開発 は、カーネルバグらしきものの報告の仕方、および、カーネル開発者が問題を
者にとってどんな情報が必要なのかの詳細が書かれています。 追跡する際の手がかりとなる情報についての詳細を説明しています。
バグレポートの管理 バグレポートの管理
------------------- -------------------
...@@ -388,15 +386,13 @@ admin-guide/reporting-bugs.rstはカーネルバグらしいものについて ...@@ -388,15 +386,13 @@ admin-guide/reporting-bugs.rstはカーネルバグらしいものについて
道です、なぜなら多くの人は他人のバグの修正に時間を浪費することを好まな 道です、なぜなら多くの人は他人のバグの修正に時間を浪費することを好まな
いからです。 いからです。
すでにレポートされたバグのために仕事をするためには、 すでにレポートされたバグの作業をするためには、興味のあるサブシステムを
https://bugzilla.kernel.org に行ってください。もし今後のバグレポートに 見つけ、そのサブシステムのバグの報告先 (多くの場合メーリングリスト、
ついてアドバイスを受けたいのであれば、bugme-new メーリングリスト(新し 稀にバグトラッカー) を MAINTAINERS ファイルで調べてください。
いバグレポートだけがここにメールされる) または bugme-janitor メーリン そのアーカイブで最近の報告を検索し、できそうなものに力を貸してください。
グリスト(bugzilla の変更毎にここにメールされる)を購読できます。 https://bugzilla.kernel.org でバグ報告を調べようとする人もいるでしょう。
これは限られた一部のサブシステムのバグ報告と追跡に利用されるとともに、
https://lists.linux-foundation.org/mailman/listinfo/bugme-new とりわけ、カーネル全体に対するバグの登録先となっています。
https://lists.linux-foundation.org/mailman/listinfo/bugme-janitors
メーリングリスト メーリングリスト
---------------- ----------------
...@@ -621,7 +617,7 @@ Linux カーネルコミュニティは、一度に大量のコードの塊を ...@@ -621,7 +617,7 @@ Linux カーネルコミュニティは、一度に大量のコードの塊を
ントの ChangeLog セクションを見てください - ントの ChangeLog セクションを見てください -
"The Perfect Patch" "The Perfect Patch"
http://www.ozlabs.org/~akpm/stuff/tpp.txt https://www.ozlabs.org/~akpm/stuff/tpp.txt
これらはどれも、実行することが時にはとても困難です。これらの例を完璧に これらはどれも、実行することが時にはとても困難です。これらの例を完璧に
実施するには数年かかるかもしれません。これは継続的な改善のプロセスであ 実施するには数年かかるかもしれません。これは継続的な改善のプロセスであ
......
:orphan:
.. warning::
Si tiene alguna duda sobre la exactitud del contenido de esta
traducción, la única referencia válida es la documentación oficial en
inglés.
This diff is collapsed.
=====================
Traducción al español
=====================
.. raw:: latex
\kerneldocCJKoff
:maintainer: Carlos Bilbao <carlos.bilbao@amd.com>
.. _sp_disclaimer:
Advertencia
===========
El objetivo de esta traducción es facilitar la lectura y comprensión para
aquellos que no entiendan inglés o duden de sus interpretaciones, o
simplemente para aquellos que prefieran leer en el idioma español. Sin
embargo, tenga en cuenta que la *única* documentación oficial es la que
está en inglés: :ref:`linux_doc`
La propagación simultánea de la traducción de una modificación en
:ref:`linux_doc` es altamente improbable. Los maintainers y colaboradores
de la traducción intentan mantener sus traducciones al día, en tanto les
es posible. Por tanto, no existe ninguna garantía de que una traducción
esté actualizada con las últimas modificaciones. Si lo que lee en una
traducción no se corresponde con lo que ve en el código fuente, informe
al maintainer de la traducción y, si puede, consulte la documentación en
inglés.
Una traducción no es una * bifurcación * de la documentación oficial, por
lo que los usuarios no encontrarán aquí ninguna información que no sea la
versión oficial. Cualquier adición, supresión o modificación de los
contenidos deberá ser realizada anteriormente en los documentos en inglés.
Posteriormente, y cuando sea posible, dicho cambio debería aplicarse
también a las traducciones. Los maintainers de las traducciones aceptan
contribuciones que son puramente de interés relativo a la traducción (por
ejemplo, nuevas traducciones, actualizaciones, correcciones, etc.).
Las traducciones tratan de ser lo más precisas posible pero no es posible
convertir directamente un idioma a otro. Cada idioma tiene su propia
gramática, y una cultura tras ella, por lo tanto, la traducción de una
oración al inglés se podría modificar para adaptarla al español. Por esta
razón, cuando lea esta traducción, puede encontrar algunas diferencias en
la forma, pero todavía transmiten el mensaje original. A pesar de la gran
difusión del inglés en el idioma hablado, cuando sea posible, expresiones
en inglés serán reemplazadas por las palabras correspondientes en español.
Si necesita ayuda para comunicarse con la comunidad de Linux pero no se
siente cómodo escribiendo en inglés, puede pedir ayuda al maintainer para
obtener una traducción.
Muchos países hablan español, cada uno con su propia cultura, expresiones,
y diferencias gramaticales en ocasiones significativas. Las traducciones de
los maintainers pueden utilizar el español con el que dichos maintainers se
sientan más cómodos. En principio, estas pequeñas diferencias no deberían
suponer una gran barrera para hablantes de distintas versiones del español,
pero en caso de duda se puede consultar a los maintainers.
La documentación del kernel Linux
=================================
Este es el nivel superior de la documentación del kernel en idioma español.
La traducción es incompleta, y podría encontrar advertencias que indiquen
la falta de una traducción o de un grupo de traducciones.
En términos más generales, la documentación, como el kernel mismo, están en
constante desarrollo. Las mejoras en la documentación siempre son
bienvenidas; de modo que, si desea ayudar, únase a la lista de correo
linux-doc en vger.kernel.org.
Traducciones al español
=======================
.. toctree::
:maxdepth: 1
howto
process/index
wrappers/memory-barriers
This diff is collapsed.
This diff is collapsed.
.. raw:: latex
\renewcommand\thesection*
\renewcommand\thesubsection*
.. include:: ../disclaimer-sp.rst
.. _sp_process_index:
.. toctree::
:maxdepth: 1
submitting-patches
kernel-docs
coding-style
.. include:: ../disclaimer-sp.rst
:Original: :ref:`Documentation/process/kernel-docs.rst <kernel_docs>`
:Translator: Carlos Bilbao <carlos.bilbao@amd.com>
.. _sp_kernel_docs:
Índice de documentación adicional del kernel
============================================
La necesidad de un documento como este se hizo evidente en la lista de
correo de linux-kernel cuando las mismas preguntas, solicitando sugerencias
e información, aparecieron una y otra vez.
Afortunadamente, a medida que más y más gente accede a GNU/Linux, más
desarrolladores se interesan por el kernel. Sin embargo, leer las fuentes
no siempre es suficiente. Es fácil entender el código, pero se pierden los
conceptos, la filosofía y decisiones de diseño detrás de dicho código.
Desafortunadamente, no existen muchos documentos disponibles para que los
principiantes comiencen. Y, aunque existieran, no habría ningún lugar
"conocido" que les pudiera seguir la pista. Estas líneas tratan de cubrir
esta carencia.
POR FAVOR, si conoce algún documento que no figura aquí, o si escribe un
nuevo documento, incluya una referencia aquí, siguiendo el proceso de envío
de parches del kernel. Cualquier corrección, idea o comentario también es
bienvenida.
Todos los documentos se catalogan con los siguientes campos: el "Título",
el "Autor"/es, la "URL" donde se encuentran, algunas "Palabras clave"
útiles para buscar temas específicos, y una breve "Descripción" del
documento en cuestión.
.. note::
Los documentos de cada sección en este documento están ordenados por su
fecha de publicación, del más reciente al más antiguo. Los maintainers
deben ir retirando recursos obsoletos o anticuados.
Documentos en el árbol del kernel Linux
-----------------------------------------
Los libros de Sphinx deben compilarse con ``make {htmldocs | pdfdocs | epubdocs}``.
* Título: **linux/Documentation**
:Autor: Many.
:Ubicación: Documentation/
:Palabras Clave: archivos de texto, Sphinx.
:Descripción: Documentación que viene con las fuentes del kernel,
dentro del directorio Documentation. Algunas páginas de este documento
(incluido este documento en sí) se han trasladado allí, y podrían
estar más actualizadas que la versión web.
Documentos en línea
-------------------
* Título: **Linux Kernel Mailing List Glossary**
:Autor: various
:URL: https://kernelnewbies.org/KernelGlossary
:Fecha: rolling version
:Palabras Clave: glosario terminos, linux-kernel.
:Descripción: De la Introducción: "This glossary is intended as
a brief description of some of the acronyms and terms you may hear
during discussion of the Linux kernel".
* Título: **The Linux Kernel Module Programming Guide**
:Autor: Peter Jay Salzman, Michael Burian, Ori Pomerantz, Bob Mottram,
Jim Huang.
:URL: https://sysprog21.github.io/lkmpg/
:Fecha: 2021
:Palabras Clave: modules, GPL book, /proc, ioctls, system calls,
interrupt handlers, llamadas al sistema, interrupciones.
:Descripción: Un muy buen libro GPL sobre el tema de la programación
de módulos. Muchos ejemplos. Actualmente la nueva versión está
siendo mantenida activamente ent https://github.com/sysprog21/lkmpg.
Libros publicados
-----------------
* Título: **Linux Kernel Programming: A Comprehensive Guide to Kernel Internals, Writing Kernel Modules, and Kernel Synchronization**
:Autor: Kaiwan N. Billimoria
:Publica: Packt Publishing Ltd
:Fecha: 2021
:Paginas: 754
:ISBN: 978-1789953435
* Título: **Linux Kernel Development, 3rd Edition**
:Autor: Robert Love
:Publica: Addison-Wesley
:Fecha: July, 2010
:Paginas: 440
:ISBN: 978-0672329463
:Notas: Libro fundacional
.. _sp_ldd3_published:
* Título: **Linux Device Drivers, 3rd Edition**
:Authors: Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman
:Publica: O'Reilly & Associates
:Fecha: 2005
:Paginas: 636
:ISBN: 0-596-00590-3
:Notas: Libro fundacional. Más información en
http://www.oreilly.com/catalog/linuxdrive3/
formato PDF, URL: https://lwn.net/Kernel/LDD3/
* Título: **The Design of the UNIX Operating System**
:Autor: Maurice J. Bach
:Publica: Prentice Hall
:Fecha: 1986
:Paginas: 471
:ISBN: 0-13-201757-1
:Notas: Libro fundacional
Recursos varios
---------------
* Título: **Cross-Referencing Linux**
:URL: https://elixir.bootlin.com/
:Palabras Clave: Browsing source code.
:Descripción: Otro navegador de código fuente del kernel Linux que se
encuentra en la web. Muchas referencias cruzadas a variables y
funciones. Puedes ver dónde se definen y dónde se utilizan.
* Título: **Linux Weekly News**
:URL: https://lwn.net
:Palabras Clave: latest kernel news, noticias del kernel Linux.
:Descripción: El título lo dice todo (Noticias Semanales de Linux).
Hay una sección fija sobre el kernel, resumiendo el trabajo de sus
desarrolladores, correcciones de errores, nuevas funciones y
versiones, producido durante la semana.
* Título: **The home page of Linux-MM**
:Autor: The Linux-MM team.
:URL: https://linux-mm.org/
:Palabras Clave: memory management, Linux-MM, mm patches, TODO, docs,
mailing list, administración de memoria, Linux-MM, parches mm, listas
de correo.
:Descripción: Sitio dedicado al desarrollo de la gestión de memoria
de Linux. Parches relacionados con la memoria, HOWTOs, enlaces,
desarrolladores de mm... ¡Si está interesado en el desarrollo de la
gestión de memoria no te lo pierdas!
* Título: **Kernel Newbies IRC Channel and Website**
:URL: https://www.kernelnewbies.org
:Palabras Clave: IRC, newbies, channel, asking doubts, canal, dudas,
novatos, preguntar.
:Descripción: #kernelnewbies en irc.oftc.net.
#kernelnewbies es una red de IRC dedicada al hacker del kernel
'novato'. La audiencia se compone principalmente de personas que
quieren aprender sobre el kernel, trabajar en proyectos del kernel
o hackers profesionales del kernel que quieren ayudar a la gente
menos experimentada.
#kernelnewbies es parte de la red OFTC IRC.
Pruebe con irc.oftc.net como su servidor y luego haga /join
#kernelnewbies.
El sitio web kernelnewbies también alberga artículos, documentos, FAQs...
* Título: **linux-kernel mailing list archives and search engines**
:URL: http://vger.kernel.org/vger-lists.html
:URL: http://www.uwsg.indiana.edu/hypermail/linux/kernel/index.html
:URL: http://groups.google.com/group/mlist.linux.kernel
:Palabras Clave: linux-kernel, archives, buscar, search, archivos.
:Descripción: Algunos de los archivadores de listas de correo del
kernel de Linux. Si usted tiene uno mejor/otro, por favor hágamelo
saber.
-------
Este documento se basaba originalmente en:
https://www.dit.upm.es/~jmseyas/linux/kernel/hackers-docs.html
escrito por Juan-Mariano de Goyenche
.. SPDX-License-Identifier: GPL-2.0
This is a simple wrapper to bring memory-barriers.txt (Spanish
translation) into the RST world until such a time as that file can be
converted directly.
====================================
Barreras de Memoria del kernel Linux
====================================
.. raw:: latex
\footnotesize
.. include:: ../memory-barriers.txt
:literal:
.. raw:: latex
\normalsize
.. SPDX-License-Identifier: GPL-2.0+
.. include:: ../disclaimer-zh_CN.rst
:Original: Documentation/core-api/errseq.rst
:翻译:
周彬彬 Binbin Zhou <zhoubinbin@loongson.cn>
:校译:
吴想成 Wu Xiangcheng <bobwxc@email.cn>
================
errseq_t数据类型
================
``errseq_t`` 是一种在一个地方记录错误的方法,并允许任意数量的 ``订阅者`` 判断自上
次采样点以来是否发生了变化。
最初的用例是跟踪文件同步系统调用( ``fsync``, ``fdatasync``, ``msync`` 和
``sync_file_range`` )的错误,但它也可以用于其他情况。
它被实现为一个无符号的32位值。低位被指定保存错误代码(在1和MAX_ERRNO之间)。高位
用作计数器。这里是用原子操作而不是锁来完成的,因此可以从任何上下文中调用这些函数。
请注意,如果频繁记录新错误,则存在冲突风险,因为我们用作计数器的位很少。
为了缓解这种情况,错误值和计数器之间的位被用作一个标志,以判断自记录新值以来是否
对该值进行了采样。这使我们能够避免在上次记录错误后没有人取样的情况下碰撞计数器。
因此,我们得到了一个类似这样的值:
+--------------------------------------+------+------------------------+
| 31..13 | 12 | 11..0 |
+--------------------------------------+------+------------------------+
| 计数器 | 标志 | 错误值 |
+--------------------------------------+------+------------------------+
总体思路是让 ``观察者`` 对errseq_t值进行采样,并将其保留为运行游标。该值稍后可用
于判断自采样完成后是否发生了任何新错误,并原子地记录检查时的状态。这使得我们能在
一个地方记录错误,然后有许多 ``观察者`` 可以判断自上次检查以来该值是否发生了变化。
新的errseq_t应始终清零。全零的errseq_t值是从未出现错误的特殊(但常见)情况。因此,
如果您希望知道自首次初始化以来是否曾经有过错误集,则全零值被用作 ``纪元`` 。
API的使用方法
=============
让我给你们讲一个关于员工drone的故事。现在,他总体上是个好员工,但公司有点...管理
繁重。他今天必须向77名主管汇报,明天 ``大老板`` 要从外地赶来,他肯定也会考验这个
可怜的家伙。
他们都把工作交给他去做---多到他都记不住谁交给他什么了,但这并不是什么大问题。主管
们只想知道他什么时候完成他们迄今为止交给他的所有工作,以及自从他们上次询问以来他
是否犯了任何错误。
他可能在他们实际上并没有交给他的工作上犯了错误,但他无法在那么详细的层面上记录事
情,他所能记得的只是他最近犯的错误。
下面是我们 ``worker_drone`` 的表达式::
struct worker_drone {
errseq_t wd_err; /* 用来记录错误 */
};
每天, ``worker_drone`` 都是以一张白纸开始的::
struct worker_drone wd;
wd.wd_err = (errseq_t)0;
主管们进来后对当天的工作进行初步了解。他们并不关心在他们观察开始之前发生的任何事
情::
struct supervisor {
errseq_t s_wd_err; /* wd_err的私有“游标” */
spinlock_t s_wd_err_lock; /* 保护s_wd_err */
}
struct supervisor su;
su.s_wd_err = errseq_sample(&wd.wd_err);
spin_lock_init(&su.s_wd_err_lock);
现在他们开始给他布置任务。每隔几分钟,他们就要求他完成迄今为止交给他的所有工作。
然后问他是否有犯任何错误::
spin_lock(&su.su_wd_err_lock);
err = errseq_check_and_advance(&wd.wd_err, &su.s_wd_err);
spin_unlock(&su.su_wd_err_lock);
到目前为止,它只是不断返回0。
现在,这家公司的老板非常吝啬,给了他不合格的设备来完成他的工作。偶尔设备会出现故
障,导致他犯错。他重重地叹了一口气,并把它记录下来::
errseq_set(&wd.wd_err, -EIO);
...然后继续工作。主管们最终会再次检查,他们在下次检查时都会发现这个错误。后续的调
用将返回0,直到记录下另一个错误,此时将向每个调用报告一次。
请注意,主管们无法知道他们犯了多少错误,只能知道自上次检查以来是否犯了一个错误,
以及记录的最新值。
偶尔,大老板会来抽查,要求员工为他做一次性的工作。他并不像主管们那样全职观察员工,
但他确实需要知道在他的工作处理过程中是否发生了错误。
他只需对员工当前的errseq_t进行采样,然后用它来判断后来是否发生了错误::
errseq_t since = errseq_sample(&wd.wd_err);
/* 提交一些工作,等待完成 */
err = errseq_check(&wd.wd_err, since);
由于他只是要在那个点之后丢弃 ``since`` ,所以他不需要在这里推进它。同时他也不需要
任何锁,因为它不能被其他人使用。
序列化更新errseq_t游标
======================
请注意,errseq_t API在check_and_advance_operation期间不保护errseq_t游标。只有典型
的错误代码是被原子化处理的。在多任务同时使用同一个errseq_t游标的情况下,对该游标
的更新进行序列化是很重要的。
如果不这样做,那么游标就有可能向后移动。在这种情况下,同一个错误可能被报告多次。
因此,通常先执行errseq_check检查是否有任何变化,然后在获取锁后才执行
errseq_check_and_advance。例如::
if (errseq_check(&wd.wd_err, READ_ONCE(su.s_wd_err)) {
/* su.s_wd_err被s_wd_err_lock保护 */
spin_lock(&su.s_wd_err_lock);
err = errseq_check_and_advance(&wd.wd_err, &su.s_wd_err);
spin_unlock(&su.s_wd_err_lock);
}
这就避免了自上次检查以来没有任何变化的常见情况下的自旋锁。
函数
====
该API在以下内核代码中:
lib/errseq.c
...@@ -48,12 +48,12 @@ ...@@ -48,12 +48,12 @@
circular-buffers circular-buffers
generic-radix-tree generic-radix-tree
packing packing
this_cpu_ops
Todolist: =======
Todolist:
this_cpu_ops
timekeeping timekeeping
errseq errseq
......
This diff is collapsed.
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
contributing contributing
maintainer-profile maintainer-profile
.. only:: 子项目与HTML .. only:: subproject and html
目录 目录
==== ====
......
...@@ -71,6 +71,7 @@ TODOList: ...@@ -71,6 +71,7 @@ TODOList:
dev-tools/index dev-tools/index
dev-tools/testing-overview dev-tools/testing-overview
kernel-hacking/index kernel-hacking/index
rust/index
TODOList: TODOList:
...@@ -90,12 +91,12 @@ TODOList: ...@@ -90,12 +91,12 @@ TODOList:
admin-guide/index admin-guide/index
admin-guide/reporting-issues.rst admin-guide/reporting-issues.rst
userspace-api/index
TODOList: TODOList:
* 内核构建系统 <kbuild/index> * 内核构建系统 <kbuild/index>
* 用户空间工具 <tools/index> * 用户空间工具 <tools/index>
* userspace-api/index
也可参考独立于内核文档的 `Linux 手册页 <https://www.kernel.org/doc/man-pages/>`_ 。 也可参考独立于内核文档的 `Linux 手册页 <https://www.kernel.org/doc/man-pages/>`_ 。
...@@ -124,13 +125,13 @@ TODOList: ...@@ -124,13 +125,13 @@ TODOList:
其他文档 其他文档
-------- --------
有几份未排序的文档似乎不适合放在文档的其他部分,或者可能需要进行一些调整和/或 有几份未分类的文档似乎不适合放在文档的其他部分,或者可能需要进行一些调整和/或
转换为reStructureText格式,也有可能太旧。 转换为reStructureText格式,也有可能太旧。
TODOList: .. toctree::
:maxdepth: 2
* staging/index
staging/index
索引和表格 索引和表格
---------- ----------
......
...@@ -338,15 +338,15 @@ Loongson与LoongArch的开发者网站(软件与文档资源): ...@@ -338,15 +338,15 @@ Loongson与LoongArch的开发者网站(软件与文档资源):
LoongArch指令集架构的文档: LoongArch指令集架构的文档:
https://github.com/loongson/LoongArch-Documentation/releases/latest/download/LoongArch-Vol1-v1.00-CN.pdf (中文版) https://github.com/loongson/LoongArch-Documentation/releases/latest/download/LoongArch-Vol1-v1.02-CN.pdf (中文版)
https://github.com/loongson/LoongArch-Documentation/releases/latest/download/LoongArch-Vol1-v1.00-EN.pdf (英文版) https://github.com/loongson/LoongArch-Documentation/releases/latest/download/LoongArch-Vol1-v1.02-EN.pdf (英文版)
LoongArch的ELF psABI文档: LoongArch的ELF psABI文档:
https://github.com/loongson/LoongArch-Documentation/releases/latest/download/LoongArch-ELF-ABI-v1.00-CN.pdf (中文版) https://github.com/loongson/LoongArch-Documentation/releases/latest/download/LoongArch-ELF-ABI-v2.00-CN.pdf (中文版)
https://github.com/loongson/LoongArch-Documentation/releases/latest/download/LoongArch-ELF-ABI-v1.00-EN.pdf (英文版) https://github.com/loongson/LoongArch-Documentation/releases/latest/download/LoongArch-ELF-ABI-v2.00-EN.pdf (英文版)
Loongson与LoongArch的Linux内核源码仓库: Loongson与LoongArch的Linux内核源码仓库:
......
.. SPDX-License-Identifier: GPL-2.0
.. include:: ../disclaimer-zh_CN.rst
:Original: Documentation/rust/arch-support.rst
:翻译:
司延腾 Yanteng Si <siyanteng@loongson.cn>
架构支持
========
目前,Rust编译器(``rustc``)使用LLVM进行代码生成,这限制了可以支持的目标架构。此外,对
使用LLVM/Clang构建内核的支持也有所不同(请参见 Documentation/kbuild/llvm.rst )。这
种支持对于使用 ``libclang`` 的 ``bindgen`` 来说是必需的。
下面是目前可以工作的架构的一般总结。支持程度与 ``MAINTAINERS`` 文件中的``S`` 值相对应:
============ ================ ==============================================
架构 支持水平 限制因素
============ ================ ==============================================
``x86`` Maintained 只有 ``x86_64``
============ ================ ==============================================
This diff is collapsed.
.. SPDX-License-Identifier: GPL-2.0
.. include:: ../disclaimer-zh_CN.rst
:Original: Documentation/rust/general-information.rst
:翻译:
司延腾 Yanteng Si <siyanteng@loongson.cn>
基本信息
========
本文档包含了在内核中使用Rust支持时需要了解的有用信息。
代码文档
--------
Rust内核代码使用其内置的文档生成器 ``rustdoc`` 进行记录。
生成的HTML文档包括集成搜索、链接项(如类型、函数、常量)、源代码等。它们可以在以下地址阅读
(TODO:当在主线中时链接,与其他文档一起生成):
http://kernel.org/
这些文档也可以很容易地在本地生成和阅读。这相当快(与编译代码本身的顺序相同),而且不需要特
殊的工具或环境。这有一个额外的好处,那就是它们将根据所使用的特定内核配置进行定制。要生成它
们,请使用 ``rustdoc`` 目标,并使用编译时使用的相同调用,例如::
make LLVM=1 rustdoc
要在你的网络浏览器中本地阅读该文档,请运行如::
xdg-open rust/doc/kernel/index.html
要了解如何编写文档,请看 coding-guidelines.rst 。
额外的lints
-----------
虽然 ``rustc`` 是一个非常有用的编译器,但一些额外的lints和分析可以通过 ``clippy``
(一个Rust linter)来实现。要启用它,请将CLIPPY=1传递到用于编译的同一调用中,例如::
make LLVM=1 CLIPPY=1
请注意,Clippy可能会改变代码生成,因此在构建产品内核时不应该启用它。
抽象和绑定
----------
抽象是用Rust代码包装来自C端的内核功能。
为了使用来自C端的函数和类型,需要创建绑定。绑定是Rust对那些来自C端的函数和类型的声明。
例如,人们可以在Rust中写一个 ``Mutex`` 抽象,它从C端包装一个 ``Mutex结构体`` ,并
通过绑定调用其函数。
抽象并不能用于所有的内核内部API和概念,但随着时间的推移,我们打算扩大覆盖范围。“Leaf”
模块(例如,驱动程序)不应该直接使用C语言的绑定。相反,子系统应该根据需要提供尽可能安
全的抽象。
有条件的编译
------------
Rust代码可以访问基于内核配置的条件性编译:
.. code-block:: rust
#[cfg(CONFIG_X)] // Enabled (`y` or `m`)
#[cfg(CONFIG_X="y")] // Enabled as a built-in (`y`)
#[cfg(CONFIG_X="m")] // Enabled as a module (`m`)
#[cfg(not(CONFIG_X))] // Disabled
.. SPDX-License-Identifier: GPL-2.0
.. include:: ../disclaimer-zh_CN.rst
:Original: Documentation/rust/index.rst
:翻译:
司延腾 Yanteng Si <siyanteng@loongson.cn>
Rust
====
与内核中的Rust有关的文档。若要开始在内核中使用Rust,请阅读quick-start.rst指南。
.. toctree::
:maxdepth: 1
quick-start
general-information
coding-guidelines
arch-support
.. only:: subproject and html
Indices
=======
* :ref:`genindex`
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -49,7 +49,7 @@ level it would look like this:: ...@@ -49,7 +49,7 @@ level it would look like this::
$ ( cd /dev/ffs-hid && hid-daemon ) & $ ( cd /dev/ffs-hid && hid-daemon ) &
On kernel level the gadget checks ffs_data->dev_name to identify On kernel level the gadget checks ffs_data->dev_name to identify
whether it's FunctionFS designed for MTP ("mtp") or HID ("hid"). whether its FunctionFS is designed for MTP ("mtp") or HID ("hid").
If no "functions" module parameters is supplied, the driver accepts If no "functions" module parameters is supplied, the driver accepts
just one function with any name. just one function with any name.
......
...@@ -9,7 +9,7 @@ The Multifunction Composite Gadget (or g_multi) is a composite gadget ...@@ -9,7 +9,7 @@ The Multifunction Composite Gadget (or g_multi) is a composite gadget
that makes extensive use of the composite framework to provide that makes extensive use of the composite framework to provide
a... multifunction gadget. a... multifunction gadget.
In it's standard configuration it provides a single USB configuration In its standard configuration it provides a single USB configuration
with RNDIS[1] (that is Ethernet), USB CDC[2] ACM (that is serial) and with RNDIS[1] (that is Ethernet), USB CDC[2] ACM (that is serial) and
USB Mass Storage functions. USB Mass Storage functions.
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment