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 还有其他,见上文

相关推荐
嵌入式×边缘AI:打怪升级日志11 分钟前
嵌入式Linux应用开发快速入门(从零到第一个程序)
linux·运维·notepad++
AI、少年郎25 分钟前
MiniMind第 2 篇:破除大模型 “神秘感“, 环境搭建|Win/Linux 本地快速部署
linux·运维·服务器·ai·大模型训练·大模型微调·大模型原理
彭泽布衣1 小时前
Linux异常文件名文件如何删除
linux·运维·服务器
优泽云安全1 小时前
如何选择IRCS云信息安全管理系统 IRCS云资源评测
linux·服务器·安全·安全架构
ShineWinsu1 小时前
对于Linux:Ext系列文件系统的解析—下
linux·面试·笔试·文件系统··ext2·挂载分区
小夏子_riotous1 小时前
Docker学习路径——2、安装
linux·运维·分布式·学习·docker·容器·云计算
添砖java‘’1 小时前
NAT代理、内网打洞和内网穿透
linux·服务器·网络
SilentSamsara2 小时前
Linux 文件系统入门:目录结构不是随便画的
linux·运维·服务器
0vvv02 小时前
linux-操作系统(基础
linux
陳10302 小时前
Linux:进程状态和优先级
linux·运维·服务器