カーネルセクション9のマンページに、関数、データ構造、およびヘッダーを文書化する方法を教えてください。


9

カーネルソースには、たとえば次のように文書化された関数データ構造が含まれています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
使用しているディストリビューションを共有しますか?
2014

毎リリースごとに常にmanページ(特に更新)があると確信しているのはなぜですか?
mdpc 2014

1
@mdpcよく管理されたカーネルにmanページがないのはなぜですか、私の質問は有効だと思います
kakeh

3
「あなたはxmltoをインストールする必要があります」が最初の場所のように思われますか?
Braiam 2014

@Bralamがサプライズを更新しました:(
kakeh 2014

回答:


6

コンテンツはソース .cファイル1から直接これも参照)解析されます。

Linuxカーネル内の関数とデータ構造の埋め込み、「C」フレンドリー、維持が容易で一貫性のある抽出可能なドキュメントを提供するために、Linuxカーネルは関数とそのパラメーター、および構造とそれらのドキュメント化に一貫したスタイルを採用しています。メンバー。

このドキュメントの形式は、kernel-doc形式と呼​​ばれます。これは、このDocumentation / kernel-doc-nano-HOWTO.txtファイルに記載されています。

このスタイルは、いくつかの単純な規則を使用して、ソースファイル内にドキュメントを埋め込みます。スクリプト/ kernel-doc perlスクリプト、Documentation / DocBookの一部のSGMLテンプレート、およびその他のツールは、これらの規則を理解し、この埋め込みドキュメントをさまざまなドキュメントに抽出するために使用されます。[...]

開始コメントマーク「/ **」はkernel-docコメント用に予約されています。そのようにマークされたコメントだけがkernel-docスクリプトによって考慮されます。そのようにマークされたコメントはkernel-doc形式でなければなりません。

つまり、このようにフォーマットされたコメントのみがこの方法で抽出でき、プロセスで使用される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のマン・ページプロジェクトMAN1通じMAN8は)ある利用できるダウンロードします。最後に、kernel.orgはいくつかの出力ドキュメントも保持しています


1.マンページを生成するためにこのような手法が使用されるのは、カーネルだけではありません。GNU coreutilsもそのようなケースの1つです。そのマンページのほとんどは、コンテンツの出力が使用法のユーティリティソースファイル(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

@Shyamこれらは、私のAのテキストファイルへのリンクのようなモジュールなどのファイルです./scripts/kernel-doc -man ./**/*.c >mydocソースのトップディレクトリから試して、ソースを直接解析して1つのファイルにすべてを直接入れることができないかどうかを確認できます。 。

4

Ubuntuを使用していると仮定すると、

apt-get install linux-manual-3.2

または同様(正しいバージョンを選択)。別のドキュメントパッケージもあります

apt-get install linux-doc

これはhtmlです。


これはカーネルAPIのドキュメントを示してい
ません

@Shyamの例?
Faheem Mitha、2014

1
Arch(Bang)には、セクション9のマンページを含むlinux-manpages 3.14-1があります。ありがとうございました!例はkcalloc.9.gzです。それらの約4000があります...

@Faheem Mitha treidを表示するman alloc_register_regionが、マニュアルエントリはドキュメントとmanページとの違いがないと述べた??
kakeh 2014

@FaheemMithaカーネルの低レベルAPIはlinux-docで利用できるとは思いません!
kakeh 2014

3

カーネルソースコードダウンロードし、ソースディレクトリで実行します。

make mandocs

manドキュメントが作成された後、実行します

make installmandocs

これにより、マニュアルページがにインストールされ/usr/local/man/man9/ます。これで、を入力するman <api-name>か、API名をvim押すだけで編集している場合は、manページを表示できますK


しかし、Makefileに/usr/src/linux-headers-5.0.0-38/Makefileはルールmandocsもありませんinstallmandocs
Herdsman
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.