register_chrdev()
内核中的函数注册一个字符设备:
int register_chrdev(unsigned int major, const char*name,
struct file_operations*ops));
如果major
是0
内核动态分配一个主编号并且寄存器函数返回它。
现在,让我们假设一个模块foo.ko
想要使用/dev/foo
动态主号码。用户空间如何知道要传递给哪个主编号来 mknod
创建/dev/foo
?
register_chrdev()
内核中的函数注册一个字符设备:
int register_chrdev(unsigned int major, const char*name,
struct file_operations*ops));
如果major
是0
内核动态分配一个主编号并且寄存器函数返回它。
现在,让我们假设一个模块foo.ko
想要使用/dev/foo
动态主号码。用户空间如何知道要传递给哪个主编号来 mknod
创建/dev/foo
?
一旦字符设备注册了动态主号码,相应的信息就会出现/proc/devices
,因此可以由用户空间应用程序/脚本检索,以创建适当的节点。
有关更好的示例,您可以参考 Linux 设备驱动程序书(第 3 版),例如,此页面/proc/devices
上显示了要阅读的脚本。