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

相关推荐
NEAI_N5 分钟前
离网设备的加密解密方案
linux·服务器·网络
左手の明天8 分钟前
Linux内核裁剪深入浅出:从原理到实操,打造轻量化嵌入式内核
linux·arm开发·c++
萝卜白菜。8 分钟前
annotation扫描引起的StackOverflowError问题
linux·运维·服务器
瀚高PG实验室14 分钟前
瀚高安全版 V4.5.10卸载后残留了db_ha的agent进程导致6666端口被占用
linux·数据库·安全·瀚高数据库
HHFQ22 分钟前
如何仅使用键盘通过图形界面安装 RHEL 等 Linux 发行版
linux·运维
枕布响丸辣25 分钟前
Linux 系统安全及应用实战:账号、引导、弱口令与端口扫描全解析
linux·运维·系统安全
酸菜。25 分钟前
lspci -tv使用
linux
zzh08125 分钟前
Linux系统安全
linux·运维·系统安全
Miraitowa_cheems26 分钟前
LeetCode算法日记 - Day 5: 长度最小的子数组、无重复字符的最长子串
linux·运维·服务器
YMWM_29 分钟前
linux命令行测试是否可以访问google、github、huggingface
linux·运维·github