版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Neusoft Institute of Information Date: 9 3 2010 IT Education 你的驱动代码可能在任何时间 失去处理器,代替它的进程可能也在你的驱动中运行. 设备中断是能够导致你的代码并发执行的异步事件. 内核也提供各种延迟代码执行的机制, 例如 workqueue,tasklet,定时器.这些能够使你的代码在 任何时间以一种与当前进程在做的事情无关的方式运 行. Neusoft Institute of Information Date: 9 3 2010 IT Education 如果信号量的值大于零, 这个值递减 1 并且 进程继续. 相反, 如
2、果信号量的值是 0 ( 或更小 ), 进程必须等待(睡眠)直到别人释放信号量. 解锁一 个信号量通过调用 V 完成; 这个函数递增信号量的 值, 并且, 如果需要, 唤醒等待的进程. Neusoft Institute of Information Date: 9 3 2010 IT Education sem; 2. 2. 初始化信号量初始化信号量 void void sema_initsema_init (struct semaphore (struct semaphore * *sem, int val)sem, int val) 该函数用于初始化设置信号量的初值,它设置信号量该函数用于
3、初始化设置信号量的初值,它设置信号量 semsem的值为的值为valval。 信号量信号量 Neusoft Institute of Information Date: 9 3 2010 IT Education /* Static way */ rwlock_t my_rwlock; rwlock_init( /* Dynamic way */ n 允许多个读进程同时进入临界区; n 写进程必须互斥访问临界区。 读写锁 Neusoft Institute of Information Date: 9 3 2010 IT Education 都可能需要加锁。 内核提供了一个原子整数类型称为 a
4、tomic_t 下面的操作为这个类型定义并且保证对于一个 SMP 计算机的所有处理器来说是原子的。因为 它被编译成一条单个机器指令 void atomic_set(atomic_t *v, int i); atomic_t v = ATOMIC_INIT(0); Neusoft Institute of Information Date: 9 3 2010 IT Education void atomic_sub(int i, atomic_t *v); void atomic_inc(atomic_t *v); void atomic_dec(atomic_t *v); int atomic
5、_inc_and_test(atomic_t *v); int atomic_dec_and_test(atomic_t *v); int atomic_sub_and_test(int i, atomic_t *v); void set_bit(nr, void *addr); void clear_bit(nr, void *addr); Neusoft Institute of Information Date: 9 3 2010 IT Education & Training 等待队列等待队列 在Linux驱动程序设计中,可以使用等 待队列来实现进程的阻塞,等待队列可 看作保存进程的容
6、器,在阻塞进程时, 将进程放入等待队列,当唤醒进程时, 从等待队列中取出进程。 Neusoft Institute of Information Date: 9 3 2010 IT Education & Training Linux 2.6内核提供了如下关于等待队列的 操作: 1、定义等待队列 wait_queue_head_t my_queue 2、初始化等待队列 init_waitqueue_head(&my_queue) 3、定义并初始化等待队列 DECLARE_WAIT_QUEUE_HEAD(my_queue) 等待队列等待队列 Neusoft Institute of Inform
7、ation Date: 9 3 2010 IT Education & Training 4 4、有条件睡眠、有条件睡眠 wait_event(queue,condition)wait_event(queue,condition) 当当condition(condition(一个布尔表达式一个布尔表达式) )为真时,立即返回;否为真时,立即返回;否 则让进程进入则让进程进入TASK_UNINTERRUPTIBLETASK_UNINTERRUPTIBLE模式的睡眠,并挂模式的睡眠,并挂 在在queuequeue参数所指定的等待队列上。参数所指定的等待队列上。 wait_event_interru
8、ptible(queue,condition)wait_event_interruptible(queue,condition) 当当condition(condition(一个布尔表达式一个布尔表达式) )为真时,立即返回;否为真时,立即返回;否 则让进程进入则让进程进入TASK_INTERRUPTIBLETASK_INTERRUPTIBLE的睡眠,并挂在的睡眠,并挂在 queuequeue参数所指定的等待队列上。参数所指定的等待队列上。 等待队列等待队列 Neusoft Institute of Information Date: 9 3 2010 IT Education & Train
9、ing int wait_event_killable(wait_queue_t queue, condition) 当当condition(一个布尔表达式一个布尔表达式)为真时,为真时, 立即返回;否则让进程进入立即返回;否则让进程进入 TASK_KILLABLE的睡眠,并挂在的睡眠,并挂在queue 参数所指定的等待队列上。参数所指定的等待队列上。 等待队列等待队列 Neusoft Institute of Information Date: 9 3 2010 IT Education & Training 5 5、无条件睡眠(老版本,建议不再使用)、无条件睡眠(老版本,建议不再使用) s
10、leep_on(wait_queue_head_t sleep_on(wait_queue_head_t * *q)q) 让进程进入不可中断的睡眠让进程进入不可中断的睡眠, ,并把它放入等待并把它放入等待 队列队列q q。 interruptible_sleep_on(wait_queue_head_interruptible_sleep_on(wait_queue_head_ t t * *q)q) 让进程进入可中断的睡眠让进程进入可中断的睡眠, ,并把它放入等待队并把它放入等待队 列列q q。 等待队列等待队列 Neusoft Institute of Information Date:
11、9 3 2010 IT Education & Training 6 6、从等待队列中唤醒进程、从等待队列中唤醒进程 wake_up(wait_queue_t wake_up(wait_queue_t * *q)q) 从等待队列从等待队列q q中唤醒状态为中唤醒状态为TASK_UNINTERRUPTIBLETASK_UNINTERRUPTIBLE, TASK_INTERRUPTIBLETASK_INTERRUPTIBLE,TASK_KILLABLETASK_KILLABLE 的所有进程。的所有进程。 wake_up_interruptible(wait_queue_t wake_up_interruptible(w
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 8信息系统集成及服务管理
- 鞋类企业供应链优化与成本控制考核试卷
- 饲料生产过程中的能耗优化考核试卷
- 长途客运企业市场竞争态势分析考核试卷
- 自行车企业社会责任报告编写考核试卷
- 锡矿选矿厂职业健康安全管理与实施考核试卷
- 饲料添加剂在提高动物饲料消化率中的应用考核试卷
- 输送设备项目管理与实施考核试卷
- 生物质成型燃料在锅炉改造中的应用考核试卷
- 回医学中的跌打损伤治疗技术
- 《廉政讲堂格言》课件
- 2024年03月中国农业发展银行内蒙古分行校园招考拟招录人员笔试历年参考题库附带答案详解
- 2024年盾构操作工职业技能竞赛理论考试题库(含答案)
- ISO 56001-2024《创新管理体系-要求》专业解读与应用实践指导材料之8:“5领导作用-5.2创新方针”(雷泽佳编制-2025B0)
- (西北卷)名校教研联盟2025届高三12月联考英语试卷(含答案解析)
- 金科新未来大联考2025届高三12月质量检测语文试题(含答案解析)
- 江苏省2025年高中学业水平合格考历史试卷试题(含答案详解)
- 《地下水环境背景值统计表征技术指南(试行)》
- 大学试卷(示范)
- 高职院校智能制造实验室实训中心建设方案
- 房产交易管理平台行业发展预测分析
评论
0/150
提交评论