斗之气阶段四----字符设备驱动二

①驱动设备号:自动分配主设备号/手工指定
②应用:open("/dev/xxx")
打开设备文件,文件怎么来?
a:手工创建 mknod /dev/xxx c 252 0
b:自动创建:busybox里的mdev(根据系统信息来自动创建设备节点)
也就是说如果驱动程序里的设备节点在系统信息里的话,mdev就能够识别自动创建设备节点。

在这里插入图片描述
所以,我们在自己创建的驱动程序里的init入口函数添加两行代码:

int major;	
int first_drv_init(void)
{
    
	major=register_chrdev(0,"first_drv",&first_drv_fops); //注册,告诉内核(即在内核数组里把结构first_drv_fops填充进去   //但是他不会生成系统信息


//我们先建立一个类                                       
 firstdrv_class   =   class_create(THIS_MODULE, "firstdrv");    

//然后在类下面建立一个设备
 firstdrv_class_dev = class_device_create(firstdrv_class, NULL, MKDEV(major, 0), NULL, "abc"); /* /dev/abc */
 //上面两条信息会在sys里创建一个firstdrv这个类,这个类下面建立abc设备节点,然后mdv会自动创建/dev/abc
	return 0;
}
int first_drv_exit(void)
{
	unregister_chrdev(major,"first_drv"); //注册,告诉内核

    class_device_unregister(firstdrv_class_dev);//在出口函数定义相关函数
	class_destroy(firstdrv_class);
}

MODULE_LICENSE("GPL");

你可能感兴趣的:(linux就该这么学)