我们可以直接将一个等待队列分配给另一个吗?

标签 c linux linux-kernel linux-device-driver

我遇到一种情况,我需要在初始化等待队列后将其复制到另一个等待队列。我可以直接通过分配来做到这一点吗?有副作用吗? 这就是我想要的:

1. Initialize wait queue 1.
2. call poll_wait() on wait queue 1.
3. Copy wait queue 1 to wait queue 2.

最佳答案

您不能一个等待队列复制到另一个等待队列中:每个wait元素最多只能属于一个等待队列。

如果您谈论 waitqueue 移动到另一个位置,您可以尝试,但请注意,这不是设计意图。

如果调用poll_wait,它肯定不支持移动等待队列。问题是,poll_wait() 调用实际 轮询表(在 .poll 回调实现中)将指向 waitqueue 的指针存储在 wait_address 中struct poll_table_entry 字段(在 include/linux/poll.h 中定义)。

关于我们可以直接将一个等待队列分配给另一个吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32241748/

相关文章:

c - fork() 系统调用的工作原理

c - 获取文件的行号

iphone - 用于 H.323 音频的开源 Objective C(或 C/C++)库?

c++ - Linux:/proc/self/statm 可信吗?

linux - 使用vim/cscope查找linux内核中的符号定义

c - C高级题: Please explain C construct *({ foo(&bar); &bar; })

c - 为什么这段代码会出现段错误?

Python 2.7 Cx_Freeze : ImportError: No module named __startup__

linux - 改变鞭尾鱼的颜色

linux - 中断处理程序中的上下文切换