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

相关推荐
暴力求解5 小时前
Linux-进程(三)进程的孤儿状态和僵尸状态
linux·运维·服务器
承渊政道6 小时前
Linux系统学习【深入剖析Git的原理和使用(下)】
linux·服务器·git·学习·gitee·vim·gitcode
The森6 小时前
Linux IO 模型纵深解析 06:IO 多路转接与多路复用的内核全链路实现
linux·服务器
敲上瘾6 小时前
从虚拟地址到物理页框:Linux 页表与内存管理全解析
linux·运维·服务器·缓存
袁袁袁袁满6 小时前
Linux如何导出指定时间的日志?
linux·运维·服务器·linux日志·linux日志导出
skywalk81637 小时前
Easytier进行服务器安装@Ubuntu22.04
linux·运维·服务器
浩子智控7 小时前
提升linux串口通信实时性的编程实践
linux·单片机·嵌入式硬件
三万棵雪松7 小时前
【Linux进程及通信机制实验方案——LED作业与按键作业交互】
linux·microsoft·交互·多进程·嵌入式linux
Whoami!7 小时前
⓬⁄₆ ⟦ OSCP ⬖ 研记 ⟧ Linux权限提升 ➱ 从“守护进程”和“网络流量”中捕获敏感信息
linux·网络安全·信息安全·权限提升
郝学胜-神的一滴8 小时前
深入理解TCP连接的优雅关闭:半关闭状态与四次挥手的艺术
linux·服务器·开发语言·网络·tcp/ip·程序人生