现在的位置: 首页 > 综合 > 正文

函数问题1 init_EMUX

2013年10月07日 ⁄ 综合 ⁄ 共 1580字 ⁄ 字号 评论关闭


1.init_MUTEX


今天编译linux的见打拿去动程序,发现init_TEMUX总是提示错误

网络搜做发现原来2.6.25及以后的linux内核版本废除了init_MUTEX函数,新版本使用sema_init函数取代

 

平台:X86 32位
内核:2.6.32

定义
 

引用
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()
: 初始化一个等待队列头。

废除init_MUTEX 后,将原来使用init_MUTEX(sem)的地方统统替换为sema_init(sem,1);
即可

参考来源:http://blog.csdn.net/ustcxjt/article/details/6916493

网络搜做发现原来2.6.25及以后的linux内核版本废除了init_MUTEX函数,新版本使用sema_init函数取代

 

平台:X86 32位
内核:2.6.32

定义
 

引用
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()
: 初始化一个等待队列头。

废除init_MUTEX 后,将原来使用init_MUTEX(sem)的地方统统替换为sema_init(sem,1);
即可

参考来源:http://blog.csdn.net/ustcxjt/article/details/6916493

抱歉!评论已关闭.