如何从用户空间访问动态字符设备?
How to access a dynamic character device from userspace?
内核中的register_chrdev()
函数注册了一个字符设备:
int register_chrdev(unsigned int major, const char*name,
struct file_operations*ops));
如果 major
是 0
内核动态分配主编号和寄存器函数 returns 它。
现在,假设模块 foo.ko
想要使用 /dev/foo
和动态主编号。用户空间如何获知要传递给 mknod
的主要编号以创建 /dev/foo
?
一旦字符设备注册了动态主设备号,相应的信息就会出现在/proc/devices
中,因此用户可以按顺序检索-space application/script创建一个合适的节点。
更好的例子可以参考Linux Device Drivers book (3rd edition),例如this页显示了读取/proc/devices
的脚本。
内核中的register_chrdev()
函数注册了一个字符设备:
int register_chrdev(unsigned int major, const char*name,
struct file_operations*ops));
如果 major
是 0
内核动态分配主编号和寄存器函数 returns 它。
现在,假设模块 foo.ko
想要使用 /dev/foo
和动态主编号。用户空间如何获知要传递给 mknod
的主要编号以创建 /dev/foo
?
一旦字符设备注册了动态主设备号,相应的信息就会出现在/proc/devices
中,因此用户可以按顺序检索-space application/script创建一个合适的节点。
更好的例子可以参考Linux Device Drivers book (3rd edition),例如this页显示了读取/proc/devices
的脚本。