![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux驱动
文章平均质量分 86
《Linux设备驱动开发详解》学习笔记
打打打劫
这个作者很懒,什么都没留下…
展开
-
Linux设备驱动的并发控制
Linux设备驱动中必须解决的一个问题就是多个进程对共享资源(如全局变量、静态变量、硬件资源等)的并发访问,会导致竟态,如可能会出现以下情况:导致执行单元C独处的数据不符合预期:由于多个CPU使用共同的系统总线,因此可以访问共同的外设和存储器,CPU0和CPU的进程、中断都会可能造成相互之间的竟态:由于Linux内核支持抢占调度,所有当前进程执行时可能会被其他进程抢占资源,产生竞态:中断打断正在执行的进程,如果中断服务程序访问临界资源,也会产生竞态。原创 2024-07-11 21:27:45 · 810 阅读 · 0 评论 -
Linux字符设备驱动
在Linux内核中,使用cdev结构体来描述一个字符设备cdev_init: 初始化cdev的函数,实际上就是将cdev和进行关联: 动态申请一个cdev: 向内核中添加/删除cdev,即对设备的注册和注销。通常发生在加载/卸载模块时cdev结构体的dev_t定义了设备号,前12bit代表主设备号,后20bit代表次设备号。同一驱动可支持多个同类设备,因此同一类设备一般使用相同的主设备号,次设备号从0开始用来描述驱动的不同设备序号在调用cdev_add函数注册设备之前,需要先申请设备号。原创 2024-07-06 19:42:50 · 455 阅读 · 0 评论 -
Linux文件系统与设备文件
Linux的文件系统API主要涉及创建、打开、读写、定位、关闭文件mode: 代表新建文件的存取权限,需要和umask相与才能确定最终权限(mode&umask)。umask代表文件在创建时需要去掉的存取权限O_RDONLYO_WRONLYO_RDWRO_CREATE100。原创 2024-06-30 22:30:00 · 629 阅读 · 0 评论 -
Linux内核模块
Linux内核模块加载函数编写的标准:返回整型值,若初始化成功返回0,失败返回对应错误编码(可以根据中的错误符号定义)。一般以__init标识声明,通过函数来指定。/* 初始化代码 */原创 2024-06-03 07:52:38 · 1072 阅读 · 1 评论