我有一些硬件资源,完成后会触发中断。
我想实现一个函数activateHw(),该函数仅在操作完成时(即中断触发时)返回,但是我不希望它浪费CPU时间(不进行中断轮询)。基本上,我想要的是:

bool activateHw() {
    trigger_hw();
    sleep_until_interrupt_arrived();
    return true;
}

如何在Linux中实现?

最佳答案

我建议您使用等待队列。在中断处理程序中,您唤醒等待的线程。这样,您就不会浪费资源(例如使用自旋锁)。

看一看this tutorial

看一下Linux源代码,用法示例为/drivers/char/hpet.cdrivers/char/rtc.c

关于linux - 如何实现阻塞调用而不浪费CPU时间?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19928164/

10-15 05:56