วิธีทำให้เคอร์เนลส่วนที่ 9 จัดการ manage ซึ่งทำหน้าที่เอกสารโครงสร้างข้อมูลและส่วนหัว?


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 เหล่านั้นเป็นmanpagesและใช้ประโยชน์จากเฟรมเวิร์กเอกสารที่มีอยู่นี้


คุณติดตั้ง / จัดทำเคอร์เนลส่วนที่ 9 manpages ( /usr/share/man/man9) ซึ่งทำหน้าที่ของฟังก์ชั่นและโครงสร้างข้อมูลดังกล่าวได้อย่างไร?


2
สนใจที่จะแบ่งปัน distro ที่คุณใช้อยู่หรือไม่?
tink

ทำไมคุณถึงแน่ใจว่ามี man pages (อัพเดทเป็นพิเศษ) ทุกครั้ง
mdpc

1
@mdpc ทำไมเคยชินเคอร์เนลบำรุงรักษาอย่างดีจะไม่ได้มีหน้าคนใดผมคิดว่าคำถามของฉันถูกต้อง
kakeh

3
"คุณต้องติดตั้ง xmlto" ดูเหมือนว่าจะเริ่มใช่ไหม
Braiam

@Bralam อัพเดทความประหลาดใจ :(
kakeh

คำตอบ:


6

เนื้อหาจะถูกวิเคราะห์คำโดยตรง (โปรดดูสิ่งนี้ ) จากไฟล์. c ต้นทาง1 :

เพื่อให้การฝังตัว 'C' เป็นมิตรง่ายต่อการบำรุงรักษา แต่สอดคล้องและแยกได้เอกสารของฟังก์ชั่นและโครงสร้างข้อมูลในเคอร์เนลลินุกซ์เคอร์เนล Linux ได้นำรูปแบบที่สอดคล้องกันสำหรับฟังก์ชั่นการทำเอกสารและพารามิเตอร์ของพวกเขาและโครงสร้างและ สมาชิก.

รูปแบบสำหรับเอกสารนี้เรียกว่ารูปแบบ kernel-doc มีการบันทึกไว้ในเอกสาร / kernel-doc-nano-HOWTO.txt

สไตล์นี้ฝังเอกสารในไฟล์ต้นฉบับโดยใช้หลักการง่ายๆ สคริปต์ / kernel-doc perl script, เทมเพลต SGML บางตัวใน Documentation / DocBook และเครื่องมืออื่น ๆ เข้าใจหลักการเหล่านี้และใช้เพื่อแยกเอกสารที่ฝังนี้ลงในเอกสารต่างๆ [ ... ]

เครื่องหมายข้อคิดเห็นการเปิด "/ **" ถูกสงวนไว้สำหรับความคิดเห็น kernel-doc เฉพาะข้อคิดเห็นที่ทำเครื่องหมายไว้จะถูกพิจารณาโดยสคริปต์ kernel-doc และความคิดเห็นใด ๆ ที่ทำเครื่องหมายไว้จะต้องอยู่ในรูปแบบเคอร์เนล 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

ดังนั้นคุณจึงไม่ จำกัดเป้าหมายmand เอกสาร :

หลังการติดตั้ง "make psdocs", "make pdfdocs", "make htmldocs" หรือ "make mandocs" จะแสดงเอกสารในรูปแบบที่ร้องขอ

นอกจากนี้ยังมีไฟล์ข้อความเฉพาะไดรเวอร์ในที่เก็บเคอร์เนล / แหล่งที่มา โดยทั่วไปของพวกเขาลินุกซ์ที่มนุษย์หน้าโครงการ ( man1ผ่านman8 ) เป็นใช้ได้สำหรับการดาวน์โหลด ในหมายเหตุสุดท้าย kernel.org ยังเก็บรักษาเอกสารการส่งออกบางส่วน


1. เคอร์เนลไม่ใช่กรณีเดียวที่ใช้เทคนิคดังกล่าวเพื่อสร้าง manpages coreutils ของ GNU เป็นอีกกรณีหนึ่ง manpages ส่วนใหญ่สร้างขึ้นโดยใช้เอาท์พุทของcommand --helpเนื้อหาซึ่งอยู่ในฟังก์ชั่นการใช้งานซึ่งเป็นไฟล์ยูทิลิตี้ซอร์ส ( 1 2 )


ทำให้ mandocs ขว้างฉันMakefile:19: /Documentation/DocBook/media/Makefile: No such file or directory
kakeh

ใช่ฉันมี แต่Documentation/ไม่มีใน/ปัจจุบันใน/lib/modules/3.2.0-57-generic-pae/build/
kakeh

@Shamam เป็นไฟล์สำหรับโมดูล ฯลฯ เช่นลิงก์ไปยังไฟล์ข้อความใน A ของฉันคุณสามารถลอง./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 manpages! ขอบคุณ! ตัวอย่างคือkcalloc.9.gz มีประมาณ 4,000 คน ...

@Faheem Mitha treid ของการดูman alloc_register_regionแต่กล่าวว่าไม่มีรายการคู่มือเป็นเอกสารที่แตกต่างจากหน้าคน ??
kakeh

@FaheemMitha ฉันไม่คิดว่า api ระดับต่ำของเคอร์เนลสามารถใช้ได้กับ linux-doc!
kakeh

3

ดาวน์โหลดซอร์สโค้ดเคอร์เนลและในซอร์ส dir เรียกใช้งาน

make mandocs

หลังจากทำเอกสาร Man เสร็จแล้วให้ดำเนินการ

make installmandocs

/usr/local/man/man9/นี้จะติดตั้งลงในหน้าคู่มือ ตอนนี้คุณสามารถดู man pages ได้ด้วยการพิมพ์man <api-name>หรือหากคุณกำลังแก้ไขvimให้กดKชื่อ API


แต่ makefile ใน/usr/src/linux-headers-5.0.0-38/Makefileไม่มีกฎmandocsไม่installmandocs
Herdsman
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.