栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

DECLARE

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

DECLARE

DECLARE_WAIT_QUEUE_HEAD
//源码
struct list_head {
	struct list_head *next, *prev;
};

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

typedef struct __wait_queue_head wait_queue_head_t;

#define DECLARE_WAIT_QUEUE_HEAD (name) 
        wait_queue_head_t name = __WAIT_QUEUE_HEAD_INITIALIZER(name)

#define __WAIT_QUEUE_HEAD_INITIALIZER (name) {                    
    .lock       = __SPIN_LOCK_UNLOCKED(name.lock),               
    .task_list = { &(name).task_list, &(name).task_list } 
}

//DECLARE_WAIT_QUEUE_HEAD(wq);解开宏定义语句结果如下
wait_queue_head_t wq = {                    
    .lock       = __SPIN_LOCK_UNLOCKED(wq.lock),               
    .task_list = { &(wq).task_list, &(wq).task_list } 
}

#include 
//以下两行等价于DECLARE_WAIT_QUEUE_HEAD(wq);
wait_queue_head_t wq;
init_waitqueue_head(&wq);   

wake_up_interruptible
#define wake_up_interruptible(x)	__wake_up(x, TASK_INTERRUPTIBLE, 1, NULL)
 
 
void __wake_up(wait_queue_head_t *q, unsigned int mode,
			int nr_exclusive, void *key)
{
	unsigned long flags;
 
	spin_lock_irqsave(&q->lock, flags);
	__wake_up_common(q, mode, nr_exclusive, 0, key);
	spin_unlock_irqrestore(&q->lock, flags);
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/734241.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号