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
사용되는 다른 위치를 따라갈 수 있습니다.