unix DECLARE_WAIT_QUEUE_HEAD (var) var прототип? - PullRequest
0 голосов
/ 22 мая 2010

Я хочу работать с 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 другого материала, использующего очередь.даже подумал, что Google это я не могу найти ответ может кто-то просто дать мне необходимый прототип? ...

1 Ответ

1 голос
/ 22 мая 2010

Поскольку макрос (см. здесь ):

#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;

вместо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...