register_chrdev函数使用

复制代码
    static struct class *led_class;
    static int major = 0;    /*记得static 不然可能会出现外部.c调用这个变量的可能*/

    static struct file_operations led_drv = {
	.owner	 = THIS_MODULE,
	.open    = led_drv_open,
	.read    = led_drv_read,
	.write   = led_drv_write,
	.release = led_drv_close,
}; 



    major = register_chrdev(0, "sym", &led_drv);  /*sym是设备名称,任取,led_drv是        
                                                    file_operations的名字*/
    /*可以实现静态和动态注册两种方法,主要是通过判断给定的主设备号是否为0来进行区别,为0的时候为 
      动态注册,否则静态注册*/
    if(major < 0){
		printk("register_chrdev famy\n");
		return major;
	}
    led_class = class_create(THIS_MODULE, "sym_class");/*sym_class是类的名字,任取*/
    if(IS_ERR(led_class)){
	printk("class_create failed\n");
    unregister_chrdev(major, "sym");
	return 1;
	}

一文搞懂内核中cdev的各种注册函数 - 知乎 (zhihu.com)

注册函数不仅仅有register_chrdev 还有其他,见上文

相关推荐
爱吃生蚝的于勒4 分钟前
【Linux】重中之重!TCP协议
linux·运维·服务器·网络·学习·tcp/ip
楼田莉子5 分钟前
Linux网络:TCP协议
linux·运维·服务器·网络·tcp/ip
IMPYLH12 分钟前
Linux 的 logname 命令
linux·运维·服务器·bash
杨云龙UP13 分钟前
Oracle 19c:RMAN Duplicate异机复制数据库实操_20260402
linux·运维·服务器·数据库·网络协议·tcp/ip·oracle
zfoo-framework26 分钟前
[推荐]ansible在主控机执行实现多个worker机器免密登录
linux·运维·ansible
i建模27 分钟前
华为MateBook X Pro 2020款在Ubuntu系统中直接使用原生的杜比全景声效果
linux·ubuntu·华为
IMPYLH29 分钟前
Linux 的 ln 命令
linux·运维·服务器·bash
.小小陈.35 分钟前
深度拆解 Linux 程序编译与链接:从静态库到 ELF 运行时全流程
linux·运维·服务器
HealthScience44 分钟前
Autoruns自启动/进程控制软件怎么使用?
linux·运维·服务器
Arvin_Rong1 小时前
Linux 服务器 /tmp 目录:使用机制与安全加固
linux·服务器·安全