path: root/Documentation/kbuild/headers_install.rst
diff options
authorMauro Carvalho Chehab <>2019-06-12 14:52:48 -0300
committerJonathan Corbet <>2019-06-14 14:21:21 -0600
commitcd238effefa28fac177e51dcf5e9d1a8b59c3c6b (patch)
tree5ed53f0cc162bd13c0a89791281d40c671a9ebcc /Documentation/kbuild/headers_install.rst
parentd7b461c5e82fc5f5e4261f3b0228ecda58eb9f1a (diff)
docs: kbuild: convert docs to ReST and rename to *.rst
The kbuild documentation clearly shows that the documents there are written at different times: some use markdown, some use their own peculiar logic to split sections. Convert everything to ReST without affecting too much the author's style and avoiding adding uneeded markups. The conversion is actually: - add blank lines and identation in order to identify paragraphs; - fix tables markups; - add some lists markups; - mark literal blocks; - adjust title markups. At its new index.rst, let's add a :orphan: while this is not linked to the main index.rst file, in order to avoid build warnings. Signed-off-by: Mauro Carvalho Chehab <> Signed-off-by: Jonathan Corbet <>
Diffstat (limited to 'Documentation/kbuild/headers_install.rst')
1 files changed, 51 insertions, 0 deletions
diff --git a/Documentation/kbuild/headers_install.rst b/Documentation/kbuild/headers_install.rst
new file mode 100644
index 000000000000..1ab7294e41ac
--- /dev/null
+++ b/Documentation/kbuild/headers_install.rst
@@ -0,0 +1,51 @@
+Exporting kernel headers for use by userspace
+The "make headers_install" command exports the kernel's header files in a
+form suitable for use by userspace programs.
+The linux kernel's exported header files describe the API for user space
+programs attempting to use kernel services. These kernel header files are
+used by the system's C library (such as glibc or uClibc) to define available
+system calls, as well as constants and structures to be used with these
+system calls. The C library's header files include the kernel header files
+from the "linux" subdirectory. The system's libc headers are usually
+installed at the default location /usr/include and the kernel headers in
+subdirectories under that (most notably /usr/include/linux and
+Kernel headers are backwards compatible, but not forwards compatible. This
+means that a program built against a C library using older kernel headers
+should run on a newer kernel (although it may not have access to new
+features), but a program built against newer kernel headers may not work on an
+older kernel.
+The "make headers_install" command can be run in the top level directory of the
+kernel source code (or using a standard out-of-tree build). It takes two
+optional arguments::
+ make headers_install ARCH=i386 INSTALL_HDR_PATH=/usr
+ARCH indicates which architecture to produce headers for, and defaults to the
+current architecture. The linux/asm directory of the exported kernel headers
+is platform-specific, to see a complete list of supported architectures use
+the command::
+ ls -d include/asm-* | sed 's/.*-//'
+INSTALL_HDR_PATH indicates where to install the headers. It defaults to
+An 'include' directory is automatically created inside INSTALL_HDR_PATH and
+headers are installed in 'INSTALL_HDR_PATH/include'.
+The command "make headers_install_all" exports headers for all architectures
+simultaneously. (This is mostly of interest to distribution maintainers,
+who create an architecture-independent tarball from the resulting include
+directory.) You also can use HDR_ARCH_LIST to specify list of architectures.
+Remember to provide the appropriate linux/asm directory via "mv" or "ln -s"
+before building a C library with headers exported this way.
+The kernel header export infrastructure is maintained by David Woodhouse