为什么在调用wait_for_completion_timeout()方法之前不能在完成变量上调用complete()方法

时间:2019-02-19 08:05:32

标签: c linux-kernel synchronization completion

我试图了解通常在Linux内核中使用的完成变量类型(Linux版本4.9.98-06769-gaf81aea-dirty)。
问题:如果在调用wait方法之前,我在完成变量上调用complete()方法,则会使内核崩溃。
我在互联网上进行搜索,但找不到背后的满意原因。有人,请帮助我了解这种行为。
先感谢您!
例如

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 个答案:

没有答案