我正在为linux内核编写一个模块,我想在init函数中创建一些设备节点
int init_module(void)
{
Major = register_chrdev(0, DEVICE_NAME, &fops);
// Now I want to create device nodes with the returned major number
}
我也希望内核为我的第一个节点分配一个次要编号,然后我将自己分配其他节点的次要编号。
如何在代码中执行此操作。我不想使用 mknod 从 shell 创 build 备
最佳答案
要更好地控制设备编号和设备创建,您可以执行以下步骤(而不是 register_chrdev()
):
alloc_chrdev_region()
以获取主要编号和要使用的次要编号范围。class_create()
为您的设备创 build 备类。cdev_init()
和 cdev_add()
将字符设备添加到系统中。device_create()
。结果,除其他外,Udev将为您的设备创 build 备节点。不需要 mknod
之类的。 device_create()
还允许您控制设备的名称。网上可能有很多这样的例子,one of them is here .
https://stackoverflow.com/questions/5970595/