如何从用户空间访问动态字符设备?

How to access a dynamic character device from userspace?

内核中的register_chrdev()函数注册了一个字符设备:

int register_chrdev(unsigned  int  major,  const  char*name,
 struct file_operations*ops));

如果 major0 内核动态分配主编号和寄存器函数 returns 它。

现在,假设模块 foo.ko 想要使用 /dev/foo 和动态主编号。用户空间如何获知要传递给 mknod 的主要编号以创建 /dev/foo

一旦字符设备注册了动态主设备号,相应的信息就会出现在/proc/devices中,因此用户可以按顺序检索-space application/script创建一个合适的节点。

更好的例子可以参考Linux Device Drivers book (3rd edition),例如this页显示了读取/proc/devices的脚本。