在Linux中, 一个等待队列由一个'等待队列头'来管理,等待队列是双向链表结构。 应用场合:将等待同一资源的进程挂在同一个等待队列中。
在include/linux/wait.h
struct __wait_queue_head {
spinlock_t lock;
struct list_head task_list;
};
typedef struct __wait_queue_head wait_queue_head_t;//定义wait_queue_head_t结构类型:一个等待队列的头结构表征一条等待队列
等待队列的操作函数:
1.声明和初始化
动态的方法:
wait_queue_head_t my_queue; //先声明
init_waitqueue_head(&my_queue);//接着初始化它
静态的方法:
DECLARE_WAIT_QUEUE_HEAD(name);//定义并初始化等待队列(头)
2.定义等待队列项
DECLARE_WAITQUEUE(name, tsk); //只是等待队列中的一项而已哦。
3.添加删除等待项
//添加到等待队列中去之后,不会进入睡眠等待
void fastcall add_wait_queue(wait_queue_head_t * q, wait_queue_t * wait);
//删除唤醒以后的等待项
void fastcall remove_wait_queue(wait_queue_head_t * q, wait_queue_t * wait);
4.等待时间操作(宏函数)
①只能被wake_up唤醒,不能被中断信号唤醒的:醒来的第一件事情就是检查condition条件,如果为真,立马起床,否则继续睡觉。
wait_event(queue, condition);
②最常用的可被中断信号唤醒的等待队列: 被中断信号唤醒之后,立马起床,但是: 如果condition=0 -> 返回-ERESTARTSYS错误码;如果condition=1 -> 返回0
wait_event_interruptible(queue, condition);
③如果睡眠期间被wake_up唤醒后,如果condition为真:立马“起床”,返回0;否则,继续睡觉,直到超时才“起床”并返回0;
wait_event_timeout(queue, condition, timeout);
④可想而知
wait_event_interruptible_timeout(queue, condition, timeout);
5.唤醒等待队列头牵引的所有项
①可唤醒处于TASK_INTERRUPTIBLE和TASK_UNINTERUPTIBLE状态的进程,和wait_event/wait_event_timeout成对使用
void wake_up(wait_queue_head_t * queue);
②只能唤醒TASK_INTERRUPTIBLE状态的进程.,与wait_event_interruptible/wait_event_interruptible_timeout成对使用
void wake_up_interruptible(wait_queue_head_t * queue);
6.在等待事件中睡眠
①把目前进程的状态置成TASK_UNINTERRUPTIBLE,并定义一个等待队列元素,之后把他附属到等待队列头q,直到资源可用,q引导的等待队列被唤醒
void sleep_on(wait_queue_head_t *q); // 只能被wake_up()宏唤醒
②将进程状态置为TASK_INTERRUPTIBLE.......
上一篇:Linux驱动:I2C驱动编写要点
下一篇:Linux驱动:LCD驱动测试
推荐阅读最新更新时间:2026-03-25 12:03
- 用于 7VIN 至 16VIN、1.5V 和 1.2V 输出的 LTM4628EV DC/DC 模块稳压器的典型应用电路
- 使用 Analog Devices 的 LTC3728LIGN 的参考设计
- DER-406 - 适用于 A19 灯的 5.76 W 高 PF 非隔离降压-升压型 TRIAC 调光 LED 驱动器
- ADR5045B 5V 输出精密微功率并联模式电压基准的典型应用
- LT3970EDDB-3.42 2.5V 降压转换器的典型应用
- MC78M08BDTG 8V 电流调节器的典型应用
- LT1021DCN8-5 精密电压基准的典型应用
- DER-282 - 100W, 扁平(11 mm), LLC DC-DC转换器
- REF193 低压差开尔文连接电压基准的典型应用电路
- LT3088EM 线性稳压器用于添加软启动的典型应用
- 14家工业智能企业入选《上海市智能机器人标杆企业与应用场景推荐目录》
- 大声量 | 2023机器视觉技术与应用峰会议程新鲜出炉!
- 海康机器人视觉检测方案守护光伏组件生产质量
- 艾利特CSF系列力控协作机器人来了!
- MTBF突破4万小时!这家工业级3D相机品牌产品稳定性获权威机构认可
- 擎朗智能已正式参评“维科杯·OFweek 2022中国机器人行业年度优秀应用案例奖”
- 擎朗智能参评“维科杯·OFweek 2022中国机器人行业年度优秀创新产品奖”
- 大族机器人已正式参评“维科杯·OFweek 2022中国机器人行业年度卓越技术创新企业奖”
- 大族机器人参评“维科杯·OFweek 2022中国机器人行业年度品牌影响力领军企业奖”
- 优必选科技参评“维科杯·OFweek 2022中国机器人行业年度品牌影响力领军企业奖”

Azure RTOS ThreadX内核用户手册,含SMP多核(中文版)
智能机械臂
非常经典的关于LLC的杨波博士论文
VI-27WIU






京公网安备 11010802033920号