장치 이름의 소스 코드

장치 이름의 소스 코드

Linux 시스템에는 많은장치 이름아래에서 볼 수 있습니다 /dev. 이는 Linux 커널 소스 코드, udev 코드, 장치 트리 또는 드라이버 코드 어딘가에 정의되어야 합니다.

fd예를 들어, 플로피 드라이브가 로 시작되어야 하는지 , 하드 디스크가 로 시작되어야 하는지 결정하는 소스 코드는 어디에 있습니까 sd?

답변1

/dev/null또는 와 같은 것이 더 쉽게 찾을 수 있습니다 /dev/zero. 그런 분들을 위해 살펴보세요 ${kernel_root}/drivers/char/mem.c. 4.9.6(한동안 이런 식이었을 수 있음)의 경우 배열의 각 항목이 메모리 장치에 해당하는 struct memdev배열이 있습니다.devlist

...
[3] = { "null", 0666, &null_fops, 0 },
...
[5] = { "zero", 0666, &zero_fops, 0 },
...

null_fops해당 장치를 포함하는 zero_fops파일 연산 구조를 포함 합니다 .

답변2

일부는LXR(Linux 상호 참조) 프로젝트여기서 커널 버전을 선택하고 코드를 검색할 수 있습니다.

(참고: 오래된http://lxr.linux.no적어도 나에게는 업데이트된 커널 버전에 대한 검색이 중단되었습니다. )

"floppy"(따옴표 제외)를 검색하고 "fd"(따옴표 포함)를 grep하려고 시도하면서 플로피 블록 장치(커널 4.9)의 구현을 발견했습니다.

http://lxr.free-electrons.com/source/drivers/block/floppy.c#L4219

이제 상호 참조로 register_blkdev사용되는 다른 위치를 따라갈 수 있습니다.

관련 정보