저는 드라이버 개발을 배우고 있는데 제가 읽은 책에 따르면 동일한 유형의 모든 Linux 장치는 동일한 주요 번호를 가지며 동일한 드라이버에 의해 제어됩니다. 예를 들어 컴퓨터에 UART 물리적 포트가 여러 개 있는 경우 이러한 장치는 모두 동일한 메이저 번호를 갖지만 드라이버는 서로 다른 마이너 번호를 서로 다른 물리적 포트로 해석합니다. 내 질문은 이것에 따르면협회다른 장치(주요 번호 10)가 많이 있습니다. 내 컴퓨터에서 이를 확인했습니다. 그래서 제 질문은 한 드라이버가 그 모든 장치를 어떻게 제어할 수 있느냐는 것입니다.다른장치(대다수가 가상임). 장치를 열 때 커널이 이미 해당 주요 장치 번호를 등록했고, 부 장치 번호를 기반으로 커널에 의해 등록된 드라이버가 해당 부 장치 번호를 담당하는 드라이버(내가 사용한 드라이버)를 호출하는 리디렉션 수준이 있습니까? 작성), 또는 등록된 드라이버의 장치 파일을 열면 직접 호출됩니다.
답변1
예, 어느 정도 간접적인 부분이 있습니다.misc
운전사해당 직업의 모든 장치 노드에 대한 운전자를 등록하고, 등록된 운전자 목록을 유지합니다. 장치가 열리면 첫 번째 핸들러는 misc_open
목록에서 일치하는 드라이버를 찾아 제어권을 전달합니다.