首页 > 解决方案 > 为什么我不能在调用 wait_for_completion_timeout() 方法之前对完成变量调用 complete() 方法

问题描述

我试图了解完成变量类型,通常用于 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)

标签: clinux-kernelsynchronizationcompletion

解决方案


推荐阅读