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

相关推荐
youyoulg2 小时前
opencode在Linux终端中无法复制文字的解决方法
linux·服务器·人工智能
2301_807367192 小时前
Linux(CentOS)安装 Nginx
linux·nginx·centos
yy_xzz2 小时前
【Linux开发】 05 Linux 多进程并发服务器
linux·服务器·github
minji...3 小时前
Linux 进程间通信(四)System V共享内存
linux·运维·服务器
艾莉丝努力练剑3 小时前
【Linux信号】Linux进程信号(中):信号保存、信号处理(含“OS是如何运行的?”)
大数据·linux·运维·服务器·数据库·c++·mysql
Du_chong_huan3 小时前
《Linux 是怎样工作的》第 2 章:用户模式实现的功能
linux·运维·服务器
学电子她就能回来吗3 小时前
【无标题】
linux·运维·服务器
有毒的教程3 小时前
Ubuntu 安装完成后网络配置教程
linux·网络·ubuntu
刚入门的大一新生3 小时前
Linux-Linux的基础指令3
linux·运维·服务器
草莓熊Lotso3 小时前
MySQL 复合查询核心指南:多表、子查询与实战技巧
linux·运维·服务器·数据库·人工智能·mysql