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

相关推荐
信看3 分钟前
树莓派 ADS1263 各种库程序
linux·运维·服务器
爱奥尼欧8 分钟前
【Linux笔记】网络部分——传输层协议TCP(2)
linux·网络·笔记·tcp/ip
嵌入式小李.man12 分钟前
linux中多路复用IO:select、poll和epoll
linux·c++
---学无止境---15 分钟前
Linux中完成根文件系统的最终准备和切换prepare_namespace函数的实现
linux
大白的编程日记.23 分钟前
【Linux学习笔记】线程安全问题之单例模式和死锁
linux·笔记·学习
---学无止境---35 分钟前
Linux 2.6.10 调度器负载均衡机制深度解析:从理论到实现
linux
馨谙39 分钟前
Linux 安全文件传输完全指南:sftp 与 scp 的深度解析引言
linux·运维·服务器
姓蔡小朋友41 分钟前
Linux网络操作
linux·运维·服务器
linmengmeng_13141 小时前
【Centos】服务器硬盘扩容之新加硬盘扩容到现有路径下
linux·服务器·centos
边疆.1 小时前
【Linux】版本控制器Git和调试器—gdb/cgdb的使用
linux·服务器·git·gdb调试·cgdb