首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

关于prepare_to_wait的参数解决方案

2012-02-07 
关于prepare_to_wait的参数函数原型如下:void prepare_to_wait(wait_queue_head_t *queue, wait_queue_t *

关于prepare_to_wait的参数
函数原型如下:void prepare_to_wait(wait_queue_head_t *queue, wait_queue_t *wait, int state)
其中queue是等待队列头,wait书上说是"进程入口",但是我并没有看到什么进程,wait的创建及初始化只用了一个宏:
DEFINE_WAIT(wait),请问wait到底是什么,它的作用是什么?谢谢!!

[解决办法]
#define DEFINE_WAIT(name)\
wait_queue_t name = {\
.private= current,\
.func= autoremove_wake_function,\
.task_list= LIST_HEAD_INIT((name).task_list),\
}

typedef struct __wait_queue wait_queue_t;

struct __wait_queue {
unsigned int flags;
#define WQ_FLAG_EXCLUSIVE0x01
void *private;
wait_queue_func_t func;
struct list_head task_list;
};

===========================================================================
wait_queue_t name 
即struct __wait_queue name
name 是你的宏的参数字符串,你自己取名的
来看它的对象
.private= current,//私有void指针表当前正在运行的进程宏
.func= autoremove_wake_function,//函数指针赋值
.task_list= LIST_HEAD_INIT((name).task_list),//就是让列表头指向自己

"请问wait到底是什么"
一个结构对象,一个等到队列头

热点排行