日期:2014-05-16  浏览次数:20665 次

有段代码不懂,求指点啊(timer、workqueue)
我是做驱动的,刚工作半年的菜鸟。有段代码不懂请教下.

我负责的模块的热插拔部分,代码如下:

function(){
  .
  .
  .
if (xxx) {
mod_timer(xxxx, jiffies + HZ/2);
return;
}
}

这应该是热插拔设备的防抖工作。里面的定时器跟一个函数绑定,那个函数会运行一个work,与那个work绑定的函数就是上面的function, 就是递归。

我不懂得就是:
1.定时器到底有什么用啊?我感觉在里面直接启动那个work不就行了..这个我问我师傅,他也不知道

2.运行到mod_timer时,会怎么运行?等待1/2秒,运行queue_work(),然后,返回来运行return;而queue_work的时候,那个work会到单独的worker_thread进程里运行,是这样吗?多线程?怎么感觉乱七八糟的。。。

好心的前辈们帮忙看下,多谢了~~

------解决方案--------------------
后面一种情况!