發現從 kernel 2.6.36 之後, DECLARE_MUTEX 有些變化

在include/linux/semaphore.h 中
#define DECLARE_MUTEX(name);
改成
#define DEFINE_SEMAPHORE(name);

去除了
Void init_MUTEX(struct semaphore *sem);
void init_MUTEX_LOCKED(struct semaphore *sem);
改用
void sema_init(struct semaphore *sem, int val);


修改Driver :

#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,36)
static DECLARE_MUTEX(snx_registration_lock);
#else
static DEFINE_SEMAPHORE(snx_registration_lock);
#endif

#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
sema_init(&entry->sem,1);
#else
init_MUTEX(&entry->sem);
#endif

#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
sema_init(&tmp->xxx.irq,0);
#else
init_MUTEX_LOCKED(&tmp->xxx.irq);
#endif

BB 發表在 痞客邦 PIXNET 留言(0) 人氣()