我想在模块中使用2队列,我将指针更改为它们 因此我需要使用:
//declartion
wait_queue_head_t **currentQ;
DECLARE_WAIT_QUEUE_HEAD (readWaitQ1);
DECLARE_WAIT_QUEUE_HEAD (readWaitQ2);
if(condition){
currentQ = &readWaitQ1;
}else{
currentQ = &readWaitQ2;
}
但我得到了wake_up使用队列的其他东西的错误类型。 甚至以为我谷歌它我找不到答案有人可以给我原型所需吗?...
答案 0 :(得分:1)
由于宏是(见here):
#define DECLARE_WAIT_QUEUE_HEAD(name) \
wait_queue_head_t name = __WAIT_QUEUE_HEAD_INITIALIZER(name)
这意味着:
DECLARE_WAIT_QUEUE_HEAD (readWaitQ1);
转换为:
wait_queue_head_t readWaitQ1 = ...;
现在使用您当前的代码:
wait_queue_head_t **currentQ;
currentQ = &readWaitQ1;
你在currentQ
上有太多的间接。你应该试试:
wait_queue_head_t *currentQ;
代替。