Làm cách nào để tạo phần nhân 9 trang mà tài liệu chức năng, cấu trúc dữ liệu và tiêu đề?


9

Các nguồn kernel chứa các hàmcấu trúc dữ liệu được ghi lại, ví dụ như trong 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, ...)

Thay vì đi qua các nguồn mỗi lần, sẽ rất hữu ích khi xem các API đó dưới dạng trang và sử dụng khung tài liệu hiện có này.


Làm thế nào để bạn cài đặt / tạo phần nhân 9 trang ( /usr/share/man/man9) tài liệu về các chức năng và cấu trúc dữ liệu đã nói ở trên?


2
Muốn chia sẻ bản phân phối bạn đang sử dụng?
tink

Tại sao bạn chắc chắn luôn có các trang man (đặc biệt được cập nhật) cho mỗi bản phát hành?
mdpc

1
@mdpc tại sao một hạt nhân được duy trì tốt sẽ không có bất kỳ trang man nào, tôi nghĩ câu hỏi của tôi là hợp lệ
kakeh

3
"Bạn cần cài đặt xmlto" có vẻ như là nơi bắt đầu, phải không?
Braiam

@Bralam cập nhật điều bất ngờ :(
kakeh

Câu trả lời:


6

Nội dung được phân tích cú pháp trực tiếp (xem thêm phần này ) từ tệp .c nguồn 1 :

Để cung cấp tài liệu nhúng, thân thiện, dễ bảo trì, nhưng nhất quán và có thể trích xuất được các chức năng và cấu trúc dữ liệu trong nhân Linux, nhân Linux đã áp dụng một kiểu nhất quán để ghi lại các chức năng và các tham số của chúng và các cấu trúc của chúng các thành viên.

Định dạng cho tài liệu này được gọi là định dạng kernel-doc. Nó được ghi lại trong tệp Tài liệu / kernel-doc-nano-HOWTO.txt này.

Kiểu này nhúng tài liệu trong các tệp nguồn, sử dụng một vài quy ước đơn giản. Tập lệnh perl script / kernel-doc, một số mẫu SGML trong Tài liệu / Tài liệu và các công cụ khác hiểu các quy ước này và được sử dụng để trích xuất tài liệu nhúng này vào các tài liệu khác nhau. [...]

Dấu bình luận mở "/ **" được dành riêng cho các bình luận kernel-doc. Chỉ các nhận xét được đánh dấu sẽ được xem xét bởi các tập lệnh kernel-doc và bất kỳ nhận xét nào được đánh dấu phải ở định dạng kernel-doc.

Điều đó có nghĩa là chỉ những bình luận được định dạng như vậy mới có thể được trích xuất theo cách này và bạn có thể tận dụng tập lệnh Perl được sử dụng bởi quy trình:kernel-doc make

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

và do đó bạn không bị giới hạn trong mục tiêu mandocs :

Sau khi cài đặt, "make psdocs", "make pdfdocs", "make htmldocs" hoặc "make mandocs" sẽ hiển thị tài liệu theo định dạng được yêu cầu.

Ngoài ra còn có các tệp văn bản cụ thể trình điều khiển trong kho / nguồn kernel. Tổng quát hơn, dự án trang man Linux của họ ( man1 đến man8 ) có sẵn để tải xuống. Trên một ghi chú cuối kernel.org cũng duy trì một số tài liệu đầu ra .


1. Hạt nhân không phải là trường hợp duy nhất sử dụng một kỹ thuật như vậy để tạo các trang. GNU coreutils là một trường hợp khác; hầu hết các trang của nó được tạo bằng cách sử dụng đầu ra của command --helpnội dung trong hàm sử dụng tệp nguồn tiện ích ( 1 2 ).


làm cho mandocs ném tôiMakefile:19: /Documentation/DocBook/media/Makefile: No such file or directory
kakeh

vâng tôi có nó nhưng Documentation/không có mặt trong hiện tại /của nó trong/lib/modules/3.2.0-57-generic-pae/build/
kakeh

@Shyam Đó là các tệp cho các mô-đun, v.v., như liên kết đến các tệp văn bản trong A. Tôi có thể thử ./scripts/kernel-doc -man ./**/*.c >mydoctừ thư mục nguồn hàng đầu và xem liệu bạn có thể đặt tất cả trực tiếp vào một tệp bằng cách phân tích trực tiếp các nguồn không .

4

Giả sử bạn đang sử dụng Ubuntu,

apt-get install linux-manual-3.2

hoặc tương tự (chọn phiên bản chính xác). Ngoài ra còn có một gói tài liệu khác

apt-get install linux-doc

nhưng đây là html.


Điều này không hiển thị tài liệu của api kernel
kakeh

@Shyam Ví dụ?
Faheem Mitha

1
Trên Arch (Bang) tôi có: linux-manpages 3.14-1 chứa phần 9 manpages! Cảm ơn bạn! Một ví dụ là kcalloc.9.gz . Có khoảng 4000 người trong số họ ...

@Faheem Mitha treid xem man alloc_register_regionnhưng cho biết không có mục nhập thủ công nào là tài liệu khác với trang người đàn ông ??
kakeh

@FaheemMitha Tôi không nghĩ api cấp thấp của kernel có sẵn với linux-doc!
kakeh

3

Tải về mã nguồn kernel và trong thư mục nguồn thực thi

make mandocs

Sau khi các tài liệu người đàn ông đã được thực hiện, thực hiện

make installmandocs

Điều này sẽ cài đặt các trang hướng dẫn vào /usr/local/man/man9/. Bây giờ bạn có thể xem các trang man bằng cách nhập man <api-name>hoặc nếu bạn đang chỉnh sửa vimchỉ cần nhấn Kvào tên API.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.