对于内核中常用的中断处理机制tasklet/work_queue/wait_queue/completion做一些总结,方便在合适的时候采用合适的机制。...
分类:
其他好文 时间:
2014-11-07 19:09:33
阅读次数:
292
先介绍一个非常基础的函数:try_to_wake_up()此函数的作用是:从等待队列中唤醒一个进程,让后将其放到就绪队列中。staticinttry_to_wake_up(structtask_struct*p,intstate,intwake_flags)参数的含义:p:表示的是将要被唤醒的进程;state:可以被唤醒的进程的状态掩码;wake_flag..
分类:
其他好文 时间:
2014-10-23 06:58:36
阅读次数:
253
在对当前的运行的进程进行阻塞时经常会用到wait_event()这个函数,来看看linux内核中时如何实现wait_event()这个函数的。先介绍几个宏定义函数:1.#defineDEFINE_WAIT_FUNC(name,function)\wait_queue_tname={\.private=current,\.func=function,\.task_list=LIST_HEAD_INIT((n..
分类:
其他好文 时间:
2014-10-23 06:55:07
阅读次数:
222
唤醒等待队列中的等待进程的函数wake_up()函数的核心实现函数是__wake_up_common()函数。__wake_up_common(wait_queue_head_t*q,intmode,intnr_exclusive,intwake_flags,void*key)参数介绍:q:是等待队列头;mode:是进程的状态模式其取值为:TASK_INTERRUPTIBLE,TASK_UNITERRUP..
分类:
其他好文 时间:
2014-10-23 06:51:54
阅读次数:
579
0.等待队列
在Linux内核中等待队列有很多用途,可用于中断处理、进程同步及定时。我们在这里只说,进程经常必须等待某些事件的发生。等待队列实现了在事件上的条件等待: 希望等待特定事件的进程把自己放进合适的等待队列,并放弃控制全。因此,等待队列表示一组睡眠的进程,当某一条件为真时,由内核唤醒它们。
等待队列由循环链表实现,由等待队列头(wait_queue_head_t)和等待队列...
分类:
其他好文 时间:
2014-05-13 16:03:28
阅读次数:
370