做软件平台,冀州网站优化,搜索引擎推广的方法有哪些,班级网站建设主题一、等待队列
可实现调用read函数时阻塞等。
1、流程 #xff08;1#xff09;初始化等待队列头#xff08;带参宏#xff09;
init_waitqueue_head(q) 等待队列头wq数据类型#xff1a; wait_queue_head_t#xff0c;等待条件condition#xff1a;int型变量。
1初始化等待队列头带参宏
init_waitqueue_head(q) 等待队列头wq数据类型 wait_queue_head_t等待条件conditionint型变量。
2阻塞程序带参宏
wait_event_interruptible(wq, condition)
注condition 0时阻塞程序condition 1时解除阻塞。
3解除阻塞 wake_up_interruptible(wait_queue_head_t *q)
eg
【定义wq与condition】 【模块加载时初始化等待队列】 【需要阻塞时调用等待函数】 【需要结束等待时唤醒程序】 二、中断顶半部和底半部
1、上半部
1)特点
①要处理的内容不希望被其他中断打断 ②要处理的任务对时间敏感 ③要处理的任务与硬件有关
2、下半部
除了上述三点以外的其他任务优先考虑放到下半部。中断处理过程比较耗时的代码。
三、内核定时器
系统全局变量①HZHZ是一个节拍每秒钟产生200次。
②jiffies记录了自系统启动以来到当下总共产生了多少次节拍这个数随着时间的推进每秒钟增加200。
如jiffies n * HZ表示未来n秒以后。
我们关注
1结构体struct timer_list
①expires这个就是那个未来的时刻可以设置为jiffies n * HZ表示n秒之后 ②function函数指针就是当时间到了以后要执行的代码类型为void (*)(unsigned long n);这个函数带一个参数参数传递的是下一个成员data ③datafunction成员的参数
2初始化
#define init_timer(timer)
3启动定时器
void add_timer(struct timer_list *timer)
注等到时间一到就会调用function所指向的函数。
4删除定时器
int del_timer(struct timer_list * timer)
注此外linux还提供了另外几个延时函数 1. void ndelay(unsigned long nsecs) ;纳秒延时函数 2. void udelay(unsigned long usecs) ;微秒延时函数 3. void mdelay(unsigned long mseces);毫秒延时函数