init_MUTEX函数编译不存在

环境:linux3.0.8

Q:

A:

2.6.25及以后的linux内核版本废除了init_MUTEX函数

新版本使用sema_init函数
内核: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() : 初始化一个等待队列头。

 

废除init_MUTEX

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


转载

http://blog.csdn.net/ustcxjt/article/details/6916493

博客内转载,参考的文章如涉及到侵权,请通知本人删除。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值