如何让工作队列中的函数立即调用?

我现在需要在alsa的trigger函数进行i2c读写操作(这个操作暂命名为hw_mute)。需要注意的是:trigger必须是原子的,而i2c读写可睡眠,因此不能直接在trigger中进行hw_mute。
我目前的做法是使用工作队列,将hw_mute放到work_struct进行,然后在trigger中调用schedule_work()。这样基本能达成我的需求,但是带来一个问题:就是hw_mute总是有点滞后,大概0.1~0.3S左右,这样搞得用户体验不是很好。
请问有什么办法可以让trigger迅速进行hw_mute操作吗?标题不用太care,只要能做到这一点就行了。
谢谢各位。

作者: sep   发布时间: 2011-02-24

工作队列尽快调用意味着工作者线程需要尽快运行。
不如创建一个自己的工作者线程,这样或许比默认的工作者线程快些。毕竟别的模块也在用同一个线程

不知道内核线程是否可以设置优先级

作者: yuanlulu3614   发布时间: 2011-02-24