completion机制
DECLARE_COMPLETION(name)
定义并初始化一个completion
INIT_COMPLETION(struct completion c);
重新初始化一个completion, 主要是用在被唤醒的进程重新进入等待前的初始化
void init_completion(struct completion *c)
初始化一个completion
void wait_for_completion(struct completion *c)
进行一个不可打断的等待
void complete(struct completion *c)
唤醒一个等待的进程
void complete_call(struct completion *c)
唤醒所有等待的进程
void complete_and_exit(struct completion *c, long retval)
在内核线程A收到退出命令后,通知另一个内核线程B退出, 并等待B退出完成; B退出完成后调用complete通知A, 如果这种情况下用的是completion机制而A最后等待complete的时候调用的是这个函数,那么,A一收到B退出的通知就会结束整个线程