1、在之前的字符设备驱动程序过程中,每次都需要直接手动创建字符设备
例如:mknod /dev/char0 c 253 0

2、我去还有内核函数自动创建(2.4b版本存在)
devfd_register(devfd_handle_t dir, const char *name, unsigned int flags, unsigned int major,unsigned int minor, umode_t mode, void *ops, void *info)

3、2.6以后就丢弃了上面这个函数,通过udev代替了devfs
利用udev来实现设备文件的自动创建很简单,在驱动初始化的代码里调用class_create为该设备创建一个class,一般在/sys/class/目录下会有对应的文件;然后再在每个设备调用device_create创建对应的设备。
例子:
struct class *myclass=class_create(THIS_MODULE,"my_device_driver");
device_create(myclass.NULL,MKDEV(major_num,0),NULL,"my_device");
当驱动加载时,udev就会自动在/dev目录下创建my_device设备文件,主设备号是major,次设备号是0