您的位置:首页 > 其它

文章标题

2016-03-04 18:29 267 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/u012466727/article/details/50804746
typedef struct __wait_queue wait_queue_t;
typedef void (*wait_queue_func_t)(wait_queue_t * wait,uint mode,int sync,void *key);

struct __wait_queue{
unsigned int flag;
wait_queue_func_t func;
void *private;
struct list_head task_list;
};

struct __wait_queue_head{
spinlock_t lock;
struct list_head task_list;
};
typedef struct __wait_queue_head wait_queue_head_t;

struct completion{
//0 未完成  大于0 完成
unsigned int done;//等待事件是否完成
wait_queue_head_t wait;
};
#define COMPLETION_INITIALIZER(work) \
{0,__WAIT_QUEUE_HEAD_INITIALIZER((work).wait)}
#define DECLARE_COMPLETION(work) \
struct completion work = COMPLETION_INITIALIZER(work)

static inline void init_completion(struct completion *com)
{
work->done = 0;
init_waitqueue_head(&com->wait);
}

静态创建completion

DECLARE_COMPLETION(my_completion);

动态创建completion

struct completion my_completion;
init_completion(&my_completion);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: