我有一些硬件资源,完成后会触发中断。
我想实现一个函数activateHw()
,该函数仅在操作完成时(即中断触发时)返回,但是我不希望它浪费CPU时间(不进行中断轮询)。基本上,我想要的是:
bool activateHw() {
trigger_hw();
sleep_until_interrupt_arrived();
return true;
}
如何在Linux中实现?
最佳答案
我建议您使用等待队列。在中断处理程序中,您唤醒等待的线程。这样,您就不会浪费资源(例如使用自旋锁)。
看一看this tutorial。
看一下Linux源代码,用法示例为/drivers/char/hpet.c
或drivers/char/rtc.c
。
关于linux - 如何实现阻塞调用而不浪费CPU时间?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19928164/