Tôi đang cố gắng để phát triển trình điều khiển thiết bị Linux và là nỗ lực đầu tiên của tôi, tôi đang cố gắng phát triển một trình điều khiển thiết bị char có các tùy chọn tập tin sau đây,Làm thế nào để tự động tạo một thiết bị trong/dev khi nạp mô-đun hạt nhân cho trình điều khiển thiết bị?
struct file_operations fops{
.open=open_fun,
.release=release_fun,
.write=write_fun,
.read=read_fun,
};
Khi tôi nạp trình điều khiển sử dụng insmod
, tôi thấy rằng /proc/devices
liệt kê các trình điều khiển theo thiết bị char nhưng tôi không thể tìm thấy nó trong /dev
. Một tìm kiếm của Google đề xuất sử dụng mknod
để tạo ra một deivce trong /dev
và liên kết nó với trình điều khiển chính và nhỏ. Tuy nhiên, một nỗ lực để làm như vậy dẫn đến lỗi "Quyền bị từ chối" ngay cả khi được thực hiện với tư cách là người dùng siêu.
Tôi nên làm gì để làm cho thiết bị xuất hiện trong /dev
khi mô-đun hạt nhân được tải? Tôi đã thử cả hai (register_chrdev
) cũ hơn và phiên bản mới hơn (cdev_init & cdev_add
) của việc đăng ký thiết bị nhưng không có thiết bị nào hoạt động.
Cảm ơn,
Mir
Xem cũng: http://stackoverflow.com/questions/5970595/create-a-device-node-in-code/ – Eugene
Sao chép có thể có của [Cách tạo nút thiết bị từ mã init \ _module của mô-đun hạt nhân Linux?] (https://stackoverflow.com/questions/5970595/how-to-create-a-device-node-from-the-init-module-code-of-a-linux-kernel-module) –