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

相关推荐
卌卄8 小时前
【Linux】MySQL安装配置
linux·运维·mysql
hnxaoli8 小时前
统信小程序(八)归档目录自动调整
linux·python
鸠摩智首席音效师8 小时前
如何确定 Linux 下的文件系统类型 {Ext3, Ext4, XFS} ?
linux·运维·服务器
比奇堡鱼贩8 小时前
python第二次作业--函数
linux·运维·windows
RisunJan9 小时前
Linux命令-lilo(安装核心载入开机管理程序)
linux·运维·服务器
飞凌嵌入式9 小时前
1块集成了4核Cortex-A7高性能CPU、1颗RISC-V MCU、多种高速总线、还兼容树莓派的T153低成本开发板
linux·arm开发·嵌入式硬件·risc-v
舰长1159 小时前
ubuntu16 在防火墙禁止“允许Traceroute探测”
linux·运维·服务器
一只自律的鸡9 小时前
【Linux驱动】Ubuntu基础 下篇
linux·ubuntu
玉树临风江流儿9 小时前
WSL2通过主机转发流量,实现与开发板互相ping通
linux·服务器·网络
感觉不怎么会9 小时前
Android 13 - 对讲app后台休眠后无法录音
android·linux