Як зробити манжети розділу 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

3
"Вам потрібно встановити xmlto", схоже, місце для початку, ні?
Брайам

@Bralam оновив сюрприз :(
kakeh

Відповіді:


6

Вміст аналізується безпосередньо (див. Також це ) з вихідних файлів .c 1 :

Для того, щоб забезпечити вбудовану "C" зручну, просту в обслуговуванні, але послідовну та витягувану документацію функцій та структур даних у ядрі Linux, ядро ​​Linux прийняло послідовний стиль документування функцій та їх параметрів, структур та їх члени.

Формат цієї документації називається форматом kernel-doc. Це задокументовано у цьому документі / kernel-doc-nano-HOWTO.txt-файл.

Цей стиль вбудовує документацію у вихідні файли, використовуючи кілька простих конвенцій. Сценарії сценаріїв / kernel-doc perl, деякі шаблони SGML в Documentation / DocBook та інші інструменти розуміють ці умови, і вони використовуються для вилучення цієї вбудованої документації в різні документи. [...]

Вступний знак коментаря "/ **" зарезервований для коментарів ядра-doc. Лише так помічені коментарі будуть розглядатися сценаріями ядра-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. Ядро - не єдиний випадок, коли така методика використовується для генерації manpages. GNU coreutils - це ще один такий випадок; більшість його mangeges генеруються за допомогою виведення command --helpвмісту, який знаходиться у функції використання, файл джерела утиліти ( 1 2 ).


зробити мандоки кидає менеMakefile:19: /Documentation/DocBook/media/Makefile: No such file or directory
kakeh

так, я маю це, але Documentation/його немає в /його теперішній час/lib/modules/3.2.0-57-generic-pae/build/
Каке

@Shyam Це файли для модулів і т. Д., Як посилання на текстові файли в моєму А. Ви можете спробувати ./scripts/kernel-doc -man ./**/*.c >mydocз верхнього каталогу джерел і побачити, чи не можете ви ввести все безпосередньо в один файл, розбираючи джерела безпосередньо .

4

Припустимо, що ви використовуєте Ubuntu,

apt-get install linux-manual-3.2

або подібне (виберіть правильну версію). Також є ще один пакет документів

apt-get install linux-doc

але це html.


це не показує документацію api ядра
kakeh

Приклад @Shyam?
Faheem Mitha

1
У Arch (Bang) у мене є: linux-manpages 3.14-1, який містить підручник 9 розділу! Дякую! Прикладом може служити kcalloc.9.gz . Їх близько 4000 ...

@Faheem Mitha треїд перегляду, man alloc_register_regionале сказав, що жодне ручне введення - це документи, відмінні від сторінок man ??
kakeh

@FaheemMitha я не думаю, що api з низьким рівнем ядра доступні разом з linux-doc!
kakeh

3

Завантажте вихідний код ядра та виконайте його у dir-файлі

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
пастух
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.