创建一个设备文件的方法

排除自己的认识误区,insmod命令是用来加载内核模块,而mknod则是用来创建设备文件。

创建一个设备文件

①手动创建---mknod

命令格式:mknod filename type major minor

参数含义:

filename:设备文件名
type: 设备文件类型
major: 主设备号
minor: 次设备号

例程:mknod serial0 c 100 0

个人认为手动创建设备文件一般都是为了测试使用。

②自动创建设备文件

函数原型:devfs_register (devfs_handle_t dir,const char *name,unsignedint flags,unsignedint major,unsignedint minor,umode_t mode,void *ops, void *info)

函数功能:在指定的目录中创建设备文件。

参数含义:

dir:目录名,为空表示在/dev/目录下创建;

name:文件名;

flags:创建标志;

major:主设备号;

minor:次设备号;
mode:创建模式;

ops:操作函数集;

info:通常为空

注意:从Linux 2.6.13开始,devfs不复存在,udev成为devfs的替代。相比devfs,udev(mdev)存在于应用层。利用udev(mdev)来实现设备文件的自动创建很简单,在驱动初始化的代码里调用class_create为该设备创建一个class,再为每个设备调用 device_create创建对应的设备。

自动创建设备文件的例子(udev):

struct class *myclass = class_create(THIS_MODULE, “my_device_driver”);
device_create(myclass, NULL, MKDEV(major_num, 0), NULL, “my_device”);

当驱动被加载时,udev( mdev)就会自动在/dev下创建my_device设备文件。

你可能感兴趣的:(创建一个设备文件的方法)