문자 장치 드라이버에 대해 찾을 수 있는 모든 책/기사/자습서/예제를 읽으면서 모두 드라이버 코드에서 주요 장치 번호를 얻는 방법을 다루었고 모두 호출하여 실제 장치 노드를 생성하도록 제안 했습니다 alloc_chrdev_region()
. mknod
외부 드라이버 코드를 수동으로 또는 스크립트로. 추천인 중 한 명은 내 운전자가 마스터 장비 번호를 인쇄하기를 원했습니다. 또 다른 사람은 주요 번호를 찾기 위해 awk
on을 사용하기를 원합니다 . /proc/devices
이 함수가 언급되어 있지만 mknod()
사용자 영역 코드에서 사용하기 위한 것으로 보입니다.
내 드라이버를 자급자족할 수 있는 방법이 없는 이유를 이해하지 못하기 때문에 뭔가 빠진 것이 분명합니다. 즉, 이렇게 하면 다른 작업을 하지 않고도 생성하게 modprobe my_driver
됩니다 ./dev/my_driver
답변1
Linux에서는 device_create 및 class_create 명령 쌍이 이를 수행합니다. 확인하다 https://stackoverflow.com/questions/5970595/create-a-device-node-in-code
답변2
유닉스는 전통적으로 "정책이 아닌 메커니즘"의 전통을 따라왔습니다. 장치 드라이버의 경우 이는 커널의 드라이버 식별이 단순히 주요/부 장치 번호임을 의미합니다. mknod를 사용하여 장치 이름을 지정하는 작업("policy*")은 사용자 공간에 맡겨졌습니다.