함수, 데이터 구조 및 헤더를 문서화하는 커널 섹션 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
사용중인 배포판을 공유 하시겠습니까?
tink

모든 릴리스에 대해 항상 맨 페이지 (특히 업데이트 됨)가있는 이유는 무엇입니까?
mdpc

1
@mdpc 잘 관리 된 커널에 매뉴얼 페이지가없는 이유는 무엇입니까? 내 질문은 유효하다고 생각합니다
kakeh

3
"xmlto를 설치해야합니다"는 시작하는 장소 인 것 같습니다.
Braiam

@Bralam은 놀라움을 업데이트했습니다 :(
kakeh

답변:


6

내용이되어 직접 구문 분석 (항목 로부터) 소스 가 .c 파일 1 :

Linux 커널에 포함 된 'C'친숙하고 유지 보수가 용이하지만 일관성 있고 추출 가능한 기능 및 데이터 구조에 대한 문서화를 제공하기 위해 Linux 커널은 함수 및 해당 매개 변수, 구조 및 구조를 문서화하기 위해 일관된 스타일을 채택했습니다. 회원.

이 문서의 형식을 커널 문서 형식이라고합니다. 이 Documentation / kernel-doc-nano-HOWTO.txt 파일에 설명되어 있습니다.

이 스타일은 몇 가지 간단한 규칙을 사용하여 소스 파일 내에 문서를 포함합니다. scripts / kernel-doc perl 스크립트, Documentation / DocBook의 일부 SGML 템플릿 및 기타 도구는 이러한 규칙을 이해하고이 포함 된 문서를 다양한 문서로 추출하는 데 사용됩니다. [...]

시작 주석 표시 "/ **"는 커널 문서 주석 용으로 예약되어 있습니다. 그렇게 표시된 주석 만 kernel-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는 일부 출력 문서를 유지 관리 합니다.


커널이 그러한 기술을 사용하여 맨 페이지를 생성하는 유일한 경우는 아닙니다. GNU coreutils 도 이와 같은 경우입니다. 대부분의 맨 페이지는 사용법 함수에서 유틸리티 소스 파일 ( 1 2 ) 의 컨텐츠 출력을 사용하여 생성 됩니다 .command --help


mandocs가 나를 던지도록Makefile:19: /Documentation/DocBook/media/Makefile: No such file or directory
kakeh

그래 나는 그것을 가지고 있지만 Documentation/현재에 /존재 하지 않습니다/lib/modules/3.2.0-57-generic-pae/build/
kakeh

@Shyam 그것들은 내 A의 텍스트 파일 에 대한 링크와 같은 모듈 등의 파일 입니다. ./scripts/kernel-doc -man ./**/*.c >mydoc소스 최상위 디렉토리에서 시도해 볼 수 있으며 소스를 직접 파싱하여 하나의 파일에 직접 넣을 수는 없는지 확인할 수 있습니다 .

4

우분투를 사용한다고 가정하면,

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수동 입력 항목은 매뉴얼 페이지와 다른 문서라고 말하지 않았 습니까 ??
kakeh

@FaheemMitha 나는 커널의 저수준 API가 linux-doc에서 사용할 수 있다고 생각하지 않습니다!
kakeh

3

커널 소스 코드를 다운로드하고 소스 디렉토리에서 execute

make mandocs

매뉴얼 작성이 완료되면

make installmandocs

매뉴얼 페이지가에 설치됩니다 /usr/local/man/man9/. 이제을 입력하여 매뉴얼 페이지를 보거나 man <api-name>편집중인 경우 API 이름을 vim누르 K십시오.


그러나 메이크 파일 /usr/src/linux-headers-5.0.0-38/Makefile에는 규칙이 mandocs없습니다installmandocs
Herdsman
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.