Comment créer les pages de manuel de la section 9 du noyau qui documentent les fonctions, les structures de données et les en-têtes?

10

Les sources du noyau contiennent des fonctions et des structures de données qui sont documentées, par exemple dans 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, ...)

Au lieu de parcourir les sources à chaque fois, il serait utile de visualiser ces API comme des pages de manuel et de tirer parti de ce cadre de documentation existant.


Comment installer / créer les pages de manuel de la section 9 du noyau ( /usr/share/man/man9) qui documentent les fonctions et les structures de données susmentionnées?

kakeh
la source
2
Vous souhaitez partager la distribution que vous utilisez?
tink
Pourquoi êtes-vous si sûr qu'il y a toujours des pages de manuel (spécialement mises à jour) pour chaque version?
mdpc
1
@mdpc pourquoi un noyau bien entretenu n'aura pas de pages de manuel, je pense que ma question est valide
kakeh
3
"Vous devez installer xmlto" semble être le point de départ, non?
Braiam
@Bralam a mis à jour la surprise :(
kakeh

Réponses:

6

Le contenu est analysé directement (voir aussi ceci ) à partir des fichiers source .c 1 :

Afin de fournir une documentation intégrée, conviviale en «C», facile à entretenir, mais cohérente et extractible des fonctions et des structures de données dans le noyau Linux, le noyau Linux a adopté un style cohérent pour documenter les fonctions et leurs paramètres, et les structures et leurs membres.

Le format de cette documentation est appelé le format kernel-doc. Il est documenté dans ce fichier Documentation / kernel-doc-nano-HOWTO.txt.

Ce style intègre la documentation dans les fichiers source, en utilisant quelques conventions simples. Le script perl scripts / kernel-doc, certains modèles SGML dans Documentation / DocBook et d'autres outils comprennent ces conventions et sont utilisés pour extraire cette documentation intégrée dans divers documents. [...]

La marque de commentaire d'ouverture "/ **" est réservée aux commentaires de documentation du noyau. Seuls les commentaires ainsi marqués seront pris en compte par les scripts kernel-doc, et tout commentaire ainsi marqué devra être au format kernel-doc.

Ce qui signifie que seuls ces commentaires formatés peuvent être extraits de cette façon et que vous pouvez tirer parti du script Perl utilisé par le processus:kernel-doc make

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

et donc que vous n'êtes pas limité à la cible mandocs :

Après l'installation, "make psdocs", "make pdfdocs", "make htmldocs" ou "make mandocs" rendra la documentation dans le format demandé.

Il existe également des fichiers texte spécifiques au pilote dans le référentiel / source du noyau. Plus généralement, leur projet de pages de manuel Linux ( man1 à man8 ) est disponible en téléchargement. Sur une dernière note, kernel.org conserve également une documentation de sortie .


1. Le noyau n'est pas le seul cas où une telle technique est utilisée pour générer des pages de manuel. GNU coreutils est un de ces autres cas; la plupart de ses pages de manuel sont générées en utilisant la sortie dont command --helple contenu est dans la fonction d' utilisation le fichier source de l'utilitaire ( 1 2 ).

Communauté
la source
faire des mandocs me jetteMakefile:19: /Documentation/DocBook/media/Makefile: No such file or directory
kakeh
oui je l'ai mais Documentation/n'est pas présent dans /son présent dans/lib/modules/3.2.0-57-generic-pae/build/
kakeh
@Shyam Ce sont les fichiers pour les modules, etc., comme le lien vers les fichiers texte dans mon A. Vous pouvez peut-être essayer à ./scripts/kernel-doc -man ./**/*.c >mydocpartir du répertoire supérieur des sources et voir si vous ne pouvez pas tout mettre directement dans un fichier en analysant directement les sources .
4

En supposant que vous utilisez Ubuntu,

apt-get install linux-manual-3.2

ou similaire (choisissez la bonne version). Il existe également un autre package de documentation

apt-get install linux-doc

mais c'est html.

Faheem Mitha
la source
cela ne montre pas la documentation de l'API du noyau
kakeh
@Shyam Exemple?
Faheem Mitha
1
Sur Arch (Bang) j'ai: linux-manpages 3.14-1 qui contient la section 9 des pages de manuel! Je vous remercie! Un exemple est kcalloc.9.gz . Il y en a environ 4000 ...
@Faheem Mitha treid de voir le man alloc_register_regionmais a dit qu'aucune entrée manuelle n'est une documentation différente des pages de manuel ??
kakeh
@FaheemMitha je ne pense pas que les API de bas niveau du noyau soient disponibles avec linux-doc!
kakeh
3

Téléchargez le code source du noyau et exécutez-le dans le répertoire source

make mandocs

Une fois les documents de l'homme créés, exécutez

make installmandocs

Cela installera les pages de manuel dans /usr/local/man/man9/. Vous pouvez maintenant afficher les pages de manuel en tapant man <api-name>, ou si vous modifiez en appuyant vimsimplement Ksur le nom de l'API.

manav mn
la source
Mais le makefile /usr/src/linux-headers-5.0.0-38/Makefilen'a pas de règle mandocsnon plusinstallmandocs
Herdsman