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

相关推荐
月上柳青2 分钟前
dsoftbus-软总线中多层网络的通信栈
linux
L16247633 分钟前
linux环境安装MySQL的详细步骤(二进制包形式)
linux·运维·mysql
默默在路上1 小时前
CentOS Stream 9 安装mysql8.0
linux·mysql·centos
游戏23人生2 小时前
QT linux下 虚拟键盘使用及注意事项
linux·qt·计算机外设
AAA.建材批发刘哥2 小时前
03--C++ 类和对象中篇
linux·c语言·开发语言·c++·经验分享
softshow10262 小时前
使用 Windows 子系统 WSL 安装 Ubuntu 22.04
linux·windows·ubuntu
wadesir2 小时前
简易制作LinuxShell完全指南(深入解析原理、设计与实践步骤)
linux·运维·服务器
水天需0103 小时前
HISTFILE 介绍
linux
CreasyChan3 小时前
VirtualBox 安装 CentOS 7.2
linux·运维·centos
AAA.建材批发刘哥3 小时前
04--C++ 类和对象下篇
linux·c++·经验分享·青少年编程