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

相关推荐
未既6 分钟前
linux以及docker修改文件描述符
linux·运维·docker
yuanmenghao7 分钟前
Linux 性能实战 | 第 20 篇:trace-cmd 与 kernelshark 可视化分析 [特殊字符]
linux·python·性能优化
2401_8735878215 分钟前
Linux——传输层协议TCP
linux·网络·tcp/ip
嵌入小生00719 分钟前
进程(2)---相关函数接口、消亡、exec函数族 | 嵌入式(Linux)
linux·c语言·嵌入式·进程·函数接口·exec函数族·进程的消亡
程序员一点20 分钟前
第9章:软件包管理(DNF 与 RPM)
linux·运维·openeuler
@syh.24 分钟前
【linux】进程间通信
linux
wdfk_prog27 分钟前
EWMA、加权平均与一次低通滤波的对比与选型
linux·笔记·学习·游戏·ssh
longxibo1 小时前
【Ubuntu datasophon1.2.1 二开之六:解决CLICKHOUSE安装问题】
大数据·linux·clickhouse·ubuntu
何中应1 小时前
Jenkins如何注册为CentOS7的一个服务
linux·运维·jenkins·开发工具
yttandb1 小时前
linux的基础命令
linux·运维·服务器