gpt4 book ai didi

c - 即使条件成立,wait_event_interruptible 也不会返回

转载 作者:行者123 更新时间:2023-11-30 15:25:06 26 4
gpt4 key购买 nike

我正在开发一个设备驱动程序,我需要在其中使用 sleep 。我正在使用 wait_event_interruptible() 来 sleep 。即使条件成立,wait_event_interruptible() 也不会返回。但是当我使用 Ctrl+c 关闭应用程序时,它正在返回。这意味着它已捕获信号。为什么它捕获信号但不进行条件检查?下面是我在驱动程序中使用的代码。

/*Initialization of Wait queue*/
static DECLARE_WAIT_QUEUE_HEAD(my_queue);

/* Here i'm waiting for value at address becomes 1 when hardware writes data */
wait_event_interruptible(my_queue, *addr);

最佳答案

假设您已进入休眠状态的进程是 Process1。条件变为真 (1) 后,其他进程/线程需要对 Process1 正在等待的等待队列 (my_queue) 调用 wake_up

然后,已经进入休眠状态的 Process1 将被唤醒。唤醒后,您应该在 wait_event_interruptible() 调用后立即检查两种情况:

  • 您等待的情况发生了吗?
  • 或者,是否有信号唤醒 Process1?

检测发生了哪一种情况(如果不是同时发生),并对它们进行适当的处​​理。

关于c - 即使条件成立,wait_event_interruptible 也不会返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28086432/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com