当前位置: 技术问答>linux和unix
有段代码不懂,求指点啊(timer、workqueue)
来源: 互联网 发布时间:2017-02-03
本文导语: 我是做驱动的,刚工作半年的菜鸟。有段代码不懂请教下. 我负责的模块的热插拔部分,代码如下: function(){ . . . if (xxx) { mod_timer(xxxx, jiffies + HZ/2); r...
我是做驱动的,刚工作半年的菜鸟。有段代码不懂请教下.
我负责的模块的热插拔部分,代码如下:
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进程里运行,是这样吗?多线程?怎么感觉乱七八糟的。。。
好心的前辈们帮忙看下,多谢了~~
我负责的模块的热插拔部分,代码如下:
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进程里运行,是这样吗?多线程?怎么感觉乱七八糟的。。。
好心的前辈们帮忙看下,多谢了~~
|
后面一种情况!