系统相关
首页 > 系统相关> > 如何从Linux内核模块的init_module代码创建设备节点?

如何从Linux内核模块的init_module代码创建设备节点?

作者:互联网

我正在为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创建设备

解决方法:

要更好地控制设备编号和设备创建,您可以执行以下步骤(而不是register_chrdev()):

>调用alloc_chrdev_region()以获取要使用的主要数字和一系列次要数字.
>使用class_create()为您的设备创建设备类.
>对于每个设备,调用cdev_init()和cdev_add()将字符设备添加到系统.
>对于每个设备,请调用device_create().因此,除其他外,Udev将为您的设备创建设备节点.不需要mknod等. device_create()还允许您控制设备的名称.

网上可能有很多例子,one of them is here.

标签:linux,mknod,linux-kernel
来源: https://codeday.me/bug/20190923/1814688.html