首页 > 系统相关 >01linux驱动学习--基本驱动框架

01linux驱动学习--基本驱动框架

时间:2022-09-18 17:59:33浏览次数:112  
标签:operations const 01linux -- xxx int init file 驱动

一、确定主设备号

(1)可以让内核自己分配

Linux-5.4/include/linux/fs.h

static inline int register_chrdev(unsigned int major,  const char *name,  const struct file_operations *fop

 

 

 其中将主设备号设置为0,即可让内核自动分配主设备号  

二、定义自己的file_operations结构体,并实现里面对应的函数

/home/user3/lifeng/Linux-5.4/include/linux/fs.h

struct file_operations 通常根据,fs.h中的成员来实现.owner、open、read、write

 

 

三、将file_operation结构体注册到内核

Linux-5.4/include/linux/fs.h

static inline int register_chrdev(unsigned int major, const char *name,  const struct file_operations *fops)

 

四、实现驱动入口

1、module_init(xxx);

其中xxx代表,真正的函数

 

2、static int __init xxx(void)

 

其他:查看内核sound.c还看到一个函数,没有使用module_init(xxx)后续补充什么意思

subsys_initcall(alsa_sound_init);

 

 

五、实现驱动出口

1、module_exit(xxx); 其中xxx代表,真正的函数

2、 static void __exit xxx(void)

需要注意入口函数和出口函数的返回值有所不同

 

六、完善提供的信息

1、GPL开源声明

MODULE_LICENSE("GPL"); 2、class_create、device_create 初步理解: (1)class_create:会创建一个设备类的集合,在/sys/class目录中 (2)device_create:用于创建设备,在/dev目录下。app open的就是此设备   写的比较清楚的一个文档: https://blog.csdn.net/hwx1546/article/details/123053496

标签:operations,const,01linux,--,xxx,int,init,file,驱动
From: https://www.cnblogs.com/schoolmaster/p/16705320.html

相关文章

  • JAVA Lambda表达式
    JAVALambda表达式函数式在数学中,函数就是有输入量,输出量的一套计算方案,也就是拿数据做操作面向对象思想强调“必须通过对象形式来做事情”函数式思想则尽量忽略......
  • testbench (verilog)读取文件的细节问题
    为什么要用?在使用数字图像IC设计中,往往需要测试所设计的图像处理模块的功能,此时模块的输入端数据时序要求比较复杂,因此需要通过testbench按照一定的时序关系读取外部的文......
  • 聊聊计算机之Intel CPU的MESI协议
    1.on-chip概念on-chip:每个CPU有好几个物理核,它们分布在CPU上,称为on-chipon-chipfirstcache:每个核内的一级缓存onchipbranchtable:每个核内都有一个分支预测表2.当......
  • 电信l1研发工程师 --- java题库
     编程题目1,严格按照题目提示编程。比如定义一个公共类Main和静态方法mainpublicclassMain{ publicstaticvoidmain(String[]args){ //这里开始写程序 }}2.不要带......
  • [THUSCH2017] 大魔法师
    #include<bits/stdc++.h>usingnamespacestd;constintN=3e5+5,MOD=998244353;intn,m,opt,l,r,v;structMatrix{intn,m,h[2][5];inlinevoidprint(){......
  • Centos7升级docker版本
    升级前查看docker版本  uname-a#查看当前OS内核版本为执行以下步骤进行升级操作:1.yumupdate  # 以root身份更新yum,将yum包更新到最新2.yumremovedocke......
  • The second assignment
    Chapter3confirmprint("今有物不计其数,三三数之剩二,五五数之剩三,七七数之剩二,问几何?\n")number=int(input("请输入您认为正确的数,:"))ifnumber%3==2andnumber%5......
  • Java工具类-LocalDate工具类
    背景介绍Java中1.8之前有date类和calendar类。其中date类到了1.8大部分的方法被弃用了说明这些方法都有很大的缺陷,而且date类如果不格式化可读性十分差,所以就需要格式......
  • 全局右键菜单点击弹窗打开指定报表
    最近收到领导提出的一个需求,大致如下:用户在决策平台使用报表时,如果发现某张报表有问题时可以随时右键进行反馈,信息部在接收到反馈时可以根据用户的反馈快速定位并解决问题......
  • leetcode1047-删除字符串中的所有相邻重复项
    1047.删除字符串中的所有相邻重复项 方法一:stack 这种做法是纯纯的小丑做法,因为string类型本身就可以实现栈。这样的做法结束之后还要出栈倒序放到字符串里,时间开销......