如何制作内核第9节的联机帮助页中的文档功能,数据结构和标头?


10

内核源代码中包含函数数据结构,例如panic.c

/**
 *  panic - halt the system
 *  @fmt: The text string to print
 *
 *  Display a message, then perform cleanups.
 *
 *  This function never returns.
 */
void panic(const char *fmt, ...)

不必每次都仔细阅读源代码,将这些API视为手册页并利用此现有文档框架将很有用。


您如何安装/制作内核第9节联机帮助页/usr/share/man/man9),其中记录了上述功能和数据结构?


2
想要分享您使用的发行版?
天衣

您为什么要确保每个发行版始终都有手册页(特别是已更新)?
mdpc

1
@mdpc为什么维护良好的内核不会有任何手册页,我认为我的问题是正确的
kakeh 2014年

3
“您需要安装xmlto”似乎是一个开始的地方,不是吗?
Braiam 2014年

@布拉姆更新了惊喜:(
kakeh 2014年

Answers:


6

.c文件1 直接解析内容(另请参见this):

为了提供Linux内核中的函数和数据结构的嵌入式,“ C”友好,易于维护但一致且可提取的文档,Linux内核采用了一致的样式来记录函数及其参数,结构及其变量。成员。

该文档的格式称为内核文档格式。它记录在此Documentation / kernel-doc-nano-HOWTO.txt文件中。

此样式使用一些简单约定将文档嵌入源文件中。脚本/内核文档perl脚本,文档/文档簿中的某些SGML模板以及其他工具都了解这些约定,并用于将嵌入式文档提取到各种文档中。[...]

开头的注释标记“ / **”保留给内核文档注释。内核文档脚本将只考虑标记为注释的注释,并且标记为注释的任何注释都必须采用内核文档格式。

这意味着只能以这种方式提取此类格式化的注释,并且您可以利用该流程使用的Perl脚本:kernel-doc make

kernel-doc [ -docbook | -html | -html5 | -text | -man | -list ]
  [ -no-doc-sections ]
  [ -function funcname [ -function funcname ...] ]
  c file(s)s > outputfile

因此,您不仅限于mandocs 目标

安装后,“ make psdocs”,“ make pdfdocs”,“ make htmldocs”或“ make mandocs”将以请求的格式呈现文档。

内核存储库/源中也有特定于驱动程序的文本文件。通常,可以下载其Linux手册页项目man1man8)。最后,kernel.org还维护一些输出文档。


1.内核不是使用这种技术生成联机帮助页的唯一情况。GNU coreutils就是这样一种情况。它的大多数联机帮助页都是使用实用工具源文件(1 2)的使用功能中的内容输出生成的command --help


使mandocs丢给我Makefile:19: /Documentation/DocBook/media/Makefile: No such file or directory
kakeh 2014年

是的,我有它,但是Documentation/它不/存在于/lib/modules/3.2.0-57-generic-pae/build/
kakeh 2014年

@Shyam这些是模块等的文件,例如指向我A中文本文件的链接。您可以./scripts/kernel-doc -man ./**/*.c >mydoc从sources的顶层目录尝试,看看是否不能通过直接解析源代码将所有内容直接放入一个文件中。

4

假设您使用的是Ubuntu,

apt-get install linux-manual-3.2

或类似(选择正确的版本)。还有另一个文档包

apt-get install linux-doc

但这是html。


这并不显示内核API的文档
kakeh

@Shyam示例?
Faheem Mitha 2014年

1
在Arch(Bang)上,我有:linux-manpages 3.14-1,其中包含第9节手册页!谢谢!一个示例是kcalloc.9.gz。大约有4000个…

@Faheem Mitha讨厌查看,man alloc_register_region但表示没有手动输入的文档与手册页有所不同?
kakeh 2014年

@FaheemMitha我不认为linux-doc可以使用内核的低级api!
kakeh 2014年

3

下载内核源代码并在源目录中执行

make mandocs

在完成人工文档后,执行

make installmandocs

这会将手册页安装到中/usr/local/man/man9/。现在,您可以通过键入来查看手册页man <api-name>,或者如果要进行编辑,vim只需按K一下API名称即可。


但在makefile /usr/src/linux-headers-5.0.0-38/Makefile没有规则mandocs既不installmandocs
牧夫
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.