linux-old/Documentation/kernel-doc-nano-HOWTO.txt
<<
>>
Prefs
   1kernel-doc nano-HOWTO
   2=====================
   3
   4Many places in the source tree have extractable documentation in the
   5form of block comments above functions.  The components of this system
   6are:
   7
   8- scripts/kernel-doc
   9
  10  This is a perl script that hunts for the block comments and can mark
  11  them up directly into DocBook, man, text, and HTML. (No, not
  12  texinfo.)
  13
  14- Documentation/DocBook/*.tmpl
  15
  16  These are SGML template files, which are normal SGML files with
  17  special place-holders for where the extracted documentation should
  18  go.
  19
  20- scripts/docproc.c
  21
  22  This is a program for converting SGML template files into SGML
  23  files.  It invokes kernel-doc, giving it the list of functions that
  24  are to be documented.
  25
  26- scripts/gen-all-syms
  27
  28  This is a script that lists the EXPORT_SYMBOL symbols in a list of C
  29  files.
  30
  31- scripts/docgen
  32
  33  This script invokes docproc, telling it which functions are to be
  34  documented (this list comes from gen-all-syms).
  35
  36- Makefile
  37
  38  The targets 'sgmldocs', 'psdocs', 'pdfdocs', and 'htmldocs' are used
  39  to build DocBook files, PostScript files, PDF files, and html files
  40  in Documentation/DocBook.
  41
  42- Documentation/DocBook/Makefile
  43
  44  This is where C files are associated with SGML templates.
  45
  46
  47How to extract the documentation
  48--------------------------------
  49
  50If you just want to read the ready-made books on the various
  51subsystems (see Documentation/DocBook/*.tmpl), just type 'make
  52psdocs', or 'make pdfdocs', or 'make htmldocs', depending on your 
  53preference.  If you would rather read a different format, you can type 
  54'make sgmldocs' and then use DocBook tools to convert 
  55Documentation/DocBook/*.sgml to a format of your choice (for example, 
  56'db2html ...' if 'make htmldocs' was not defined).
  57
  58If you want to see man pages instead, you can do this:
  59
  60$ cd linux
  61$ scripts/kernel-doc -man $(find -name '*.c') | split-man.pl /tmp/man
  62$ scripts/kernel-doc -man $(find -name '*.h') | split-man.pl /tmp/man
  63
  64Here is split-man.pl:
  65
  66-->
  67#!/usr/bin/perl
  68
  69if ($#ARGV < 0) {
  70   die "where do I put the results?\n";
  71}
  72
  73mkdir $ARGV[0],0777;
  74$state = 0;
  75while (<STDIN>) {
  76    if (/^\.TH \"[^\"]*\" (\d) \"([^\"]*)\"/) {
  77        if ($state == 1) { close OUT }
  78        $state = 1;
  79        $fn = "$ARGV[0]/$2.$1";
  80        print STDERR "Creating $fn\n";
  81        open OUT, ">$fn" or die "can't open $fn: $!\n";
  82        print OUT $_;
  83    } elsif ($state != 0) {
  84        print OUT $_;
  85    }
  86}
  87
  88close OUT;
  89<--
  90
  91If you just want to view the documentation for one function in one
  92file, you can do this:
  93
  94$ scripts/kernel-doc -man -function fn file | nroff -man | less
  95
  96or this:
  97
  98$ scripts/kernel-doc -text -function fn file
  99
 100
 101How to add extractable documentation to your source files
 102---------------------------------------------------------
 103
 104The format of the block comment is like this:
 105
 106/**
 107 * function_name(:)? (- short description)?
 108(* @parameterx: (description of parameter x)?)*
 109(* a blank line)?
 110 * (Description:)? (Description of function)?
 111 * (section header: (section description)? )*
 112(*)?*/
 113
 114The short function description cannot be multiline, but the other
 115descriptions can be (and they can contain blank lines). Avoid putting a
 116spurious blank line after the function name, or else the description will
 117be repeated!
 118
 119All descriptive text is further processed, scanning for the following special
 120patterns, which are highlighted appropriately.
 121
 122'funcname()' - function
 123'$ENVVAR' - environment variable
 124'&struct_name' - name of a structure (up to two words including 'struct')
 125'@parameter' - name of a parameter
 126'%CONST' - name of a constant.
 127
 128Take a look around the source tree for examples.
 129
 130
 131How to make new SGML template files
 132-----------------------------------
 133
 134SGML template files (*.tmpl) are like normal SGML files, except that
 135they can contain escape sequences where extracted documentation should
 136be inserted.
 137
 138!E<filename> is replaced by the documentation, in <filename>, for
 139functions that are exported using EXPORT_SYMBOL: the function list is
 140collected from files listed in Documentation/DocBook/Makefile.
 141
 142!I<filename> is replaced by the documentation for functions that are
 143_not_ exported using EXPORT_SYMBOL.
 144
 145!F<filename> <function [functions...]> is replaced by the
 146documentation, in <filename>, for the functions listed.
 147
 148
 149Tim.
 150*/ <twaugh@redhat.com>
 151
 152
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.