加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux-kernel – 如何使用wake_up_interruptible

发布时间:2020-12-13 19:52:21 所属栏目:Linux 来源:网络整理
导读:我想知道如果它返回void,我怎么能使用wake_up_interruptible: http://www.cs.fsu.edu/~baker/devices/lxr/http/source/linux/include/linux/wait.h#L161(_wake_up函数返回void).例如,down_interruptible函数返回int: http://www.cs.fsu.edu/~baker/devices
我想知道如果它返回void,我怎么能使用wake_up_interruptible: http://www.cs.fsu.edu/~baker/devices/lxr/http/source/linux/include/linux/wait.h#L161(_wake_up函数返回void).例如,down_interruptible函数返回int: http://www.cs.fsu.edu/~baker/devices/lxr/http/source/linux/kernel/semaphore.c#L75这允许编写这样的代码,例如:
if ( down_interruptible(&dev->sem) )
    return -ERESTARTSYS;
// continue: down_interruptible succeeded

当我调用wake_up_interruptible并且它被中断时,如果它返回void,我怎么知道呢?

解决方法

我想正常的使用场景是,在一个线程中:
for (;;) {
   wait_event_interruptible(wait_queue,condition);
   /* Some processing */
}

并从其他一些线程:

if (something_happened)
   wake_up_interruptible(wait_queue);

这将导致一个进程从wait_queue进入,该进程处于TASK_INTERRUPTIBLE状态,被唤醒并评估条件

看一些更多的例子here,有点过时的位给出了一个想法

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读