Поскольку макрос (см. здесь ):
#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;
вместо.