曲径通幽论坛

标题: init_MUTEX | 初始化信号量为互斥量 [打印本页]

作者: beyes    时间: 2010-9-14 23:12
标题: init_MUTEX | 初始化信号量为互斥量

平台:X86 32位
内核:2.6.24
定义

static inline void init_MUTEX (struct semaphore *sem)
{
        sema_init(sem, 1);
}


说明:Init_MUTEX()函数初始化信号量为互斥量。 互斥量为信号量的特例,它可以防止数据被两个不同系统调用读写。

sema_init (sem, 1) 定义为:
static inline void sema_init (struct semaphore *sem, int val)
{
/*
*    *sem = (struct semaphore)__SEMAPHORE_INITIALIZER((*sem),val);
*
* i'd rather use the more flexible initialization above, but sadly
* GCC 2.7.2.3 emits a bogus warning. EGCS doesn't. Oh well.
*/
    atomic_set(&sem->count, val);
    sem->sleepers = 0;
    init_waitqueue_head(&sem->wait);
}
sleepers : 指定了允许进入等待进入临界区的进程数,这里初始化为 0 。
init_waitqueue_head() : 初始化一个等待队列头。




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2