2010-05-22 95 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