Почему я не могу вызвать метод complete() для переменной завершения до вызова метода wait_for_completion_timeout()

Я пытаюсь понять тип переменной завершения, обычно используемый в ядре Linux (версия Linux 4.9.98-06769-gaf81aea-dirty).
Проблема: если я вызываю метод complete() для переменной завершения перед вызовом метода wait, это приводит к сбою ядра.
Я искал по интернету, но не смог найти довольную причину этого. Кто-нибудь, пожалуйста, помогите мне понять это поведение.
Заранее спасибо!
например

int timeout = 100; //100 ms timeout
unsigned long tempJ = msecs_to_jiffies(timeout);
struct completion sema;
init_completion(&sema);
//wait_for_completion_timeout(&sema, tempJ)
complete(&sema)

0 ответов

Другие вопросы по тегам