完成量主要是用来完成线程间的同步机制 而信号量是为了完成某一资源临界区的同步而使用
struct completion {
unsigned int done;
wait_queue_head_t wait;
};
这个结构体有两个成语 一个是done 表示已完成 一般初始化为0 还有一个是等待队列 表示一个完成量未唤醒的时候 加入等待队列
struct completion my_conpletion
static inline void init_completion(struct completion *x)
等待完成量被唤醒函数
extern void wait_for_completion(struct completion *);
extern void wait_for_completion_io(struct completion *);
extern int wait_for_completion_interruptible(struct completion *x);
extern int wait_for_completion_killable(struct completion *x);
extern unsigned long wait_for_completion_timeout(struct completion *x,
unsigned long timeout);
extern unsigned long wait_for_completion_io_timeout(struct completion *x,
unsigned long timeout);
extern long wait_for_completion_interruptible_timeout(
struct completion *x, unsigned long timeout);
extern long wait_for_completion_killable_timeout(