![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
内核&驱动
文章平均质量分 73
lixiang2202
linux c/c
展开
-
【内核&驱动】并发和竞态【1】
1.导致并发执行的原因 硬件中断服务 SMP(对称多处理) 内核抢占 schedule() 2.scull的缺陷 if (!dptr->data[s_pos]) { dptr->data[s_pos] = kmalloc(quantum, GFP_KERNEL); if (!dptr->da原创 2013-05-24 11:03:36 · 433 阅读 · 0 评论 -
【内核&驱动】字符设备驱动程序【3】
open和release open方法 提供给驱动程序以初始化的能力,open方法应完成以下工作 检查设备特定的错误 如果设备是首次打开,则对其进行初始化工作 如有必要,更新f_op组件 分配并填写置于filp->private_data里的数据结构 int (*open)(struct inode *inode, struct原创 2013-05-24 11:03:34 · 470 阅读 · 0 评论 -
【内核&驱动】字符设备驱动程序【2】
一些重要的数据结构(VFS核心结构体) 1.super_block 和mount一一对应,这也意味着如果mount操作,在内核中分配新的结构体,存储分区信息 umount时,VFS就把该结构体释放掉 mount几次内核中就有几个super_block结构体 2.inode 和打开文件一一对应,记录文件信息,关闭文件时,如果内存不紧张,不会释放, 如果多个人同时打开一个文件,VF原创 2013-05-24 11:03:32 · 342 阅读 · 0 评论 -
【内核&驱动】字符设备驱动程序【1】
1.编写驱动程序的第一部就是定义驱动程序为用户提供的能力(机制); 2.举例在计算机内存之上实现若干设备抽象: scull:simple character Utility for Loading Localities, 区域装载的简单字符工具 scull的源代码实现了以下设备 scull0 ~ scull3 这四个设备分别由一个全局且持久的内存区域组成 scu原创 2013-05-24 11:03:30 · 462 阅读 · 0 评论