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

相关推荐
凡人叶枫1 小时前
Effective C++ 条款42:了解 typename 的双重意义
java·linux·服务器·c++
2601_961875241 小时前
决战申论100题2026|最新|范文
linux·容器·centos·debian·ssh·fabric·vagrant
java_cj1 小时前
深入kube-apiserver认证机制:从Bearer Token到mTLS的完整认证链解析
linux·运维·服务器·云原生·容器·kubernetes
森G2 小时前
75、服务器源码解析---------云视频服务项目
linux·服务器·网络·c++·qt
阿米亚波2 小时前
【Windows】QEMU 启动 openEuler aarch64/arm64 架构系统 + 离线软件源
linux·windows·经验分享·笔记·架构·arm
张飞飞飞飞飞2 小时前
Tmux命令使用教程
linux·服务器·ubuntu
Fcy6482 小时前
Linux下 可重入函数、volatile关键字和SIGCHLD信号
linux·可重入函数·volatile关键字·sigchld
qeen873 小时前
【Linux】Linux简单介绍与基本指令(上)
linux·运维·服务器·学习
shelutai3 小时前
UBUNTU 22 下面 用 KVM安装WINDOWS 11
linux·运维·服务器
tianyuanwo3 小时前
深入解析 RISC-V 虚拟化中的 UEFI 固件配置:从 XML 到 NVRAM 的生命周期管理
xml·linux·risc-v