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

相关推荐
TangDuoduo00058 分钟前
【Linux字符设备驱动】
linux·驱动开发
代码游侠9 分钟前
学习笔记——Linux内核与嵌入式开发2
linux·运维·arm开发·嵌入式硬件·学习·架构
郝学胜-神的一滴12 分钟前
深入Linux网络编程:accept函数——连接请求的“摆渡人”
linux·服务器·开发语言·网络·c++·程序人生
小义_22 分钟前
【Docker】知识一
linux·docker·云原生·容器
wefg128 分钟前
【Linux】进程地址空间深入理解
linux·运维·服务器
ZHANG13HAO30 分钟前
android13 4G网络环境和wifi内网说明
linux·服务器·网络
Linux运维技术栈33 分钟前
Magento 2.3.5 宝塔Linux环境完整安装指南(避坑版+图文详解)
linux·运维·服务器
古月-一个C++方向的小白40 分钟前
Linux——命令行参数与环境变量
linux·运维
qinyia42 分钟前
使用AI助手完成服务器系统备份迁移任务
linux·运维·服务器
知行合一。。。1 小时前
Linux--10---crontab -e定时任务
java·linux·运维