Linux kernel 之 rwlock_t semaphore初始化

本文探讨了Linux内核2.6.30以后rwlock_t读写锁和semaphore信号量的初始化方式变化。针对'RW_LOCK_UNLOCKED'未声明的问题,提出了新的初始化方法,并介绍了如何解决高版本内核中DECLARE_MUTEX警告的问题。
摘要由CSDN通过智能技术生成

一. rwlock_t

一直都以这种方式初始化读写锁

rwlock_t my_rwlock = RW_LOCK_UNLOCKED

但是在内核 2.6.30 上不行了 ....

error: ‘RW_LOCK_UNLOCKED’ undeclared (first use in this function)

error: (Each undeclared identifier is reported only once

error: for each function it appears in.)

貌似是高版本内核不支持这种初始化方式了

需要:

rwlock_t mylock;
rwlock_init(&mylock);

或者直接定义并初始化:

DEFINE_RWLOCK(x)


二. semaphore

另外,高版本内核信号量的初始化方式也发生了变化

原来的初始化 DECLARE_MUTEX(receive_sem);

会出现:

warning: data definition has no type or storage class

warning: type defaults to ‘int’ in declaration of ‘DECLARE_MUTEX’

warning: parameter names (without types) in function d

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值