2010-05-22 103 views
0

我想在那里我改变我的指针指向它们的模块与2队列工作 因此我需要使用:unix DECLARE_WAIT_QUEUE_HEAD(var)var prototype?

//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的其他的东西。 甚至认为我google一下我不能找到答案,有人可以只给我的样机需要...

回答

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 = ...; 
与CURR

现在ent代码:

wait_queue_head_t **currentQ; 
currentQ = &readWaitQ1; 

你有一个太多的间接currentQ。您应该尝试:

wait_queue_head_t *currentQ; 

改为。

+0

谢谢,我用了其他函数,编译器没有对我大吼,这让我感到困惑 – yoavstr 2010-05-22 14:18:10