解决Ubuntu安装无线网卡驱动因”init_mutex”被废除编译不过的问题。 买无线网卡的时候我特意找了一个同时具备win,linux和mac三个平台的驱动的的网卡。但是Ubuntu11.04中安装无线网卡的时候,发现驱动模块的代码编译不过。原因定位到了init_mutex的地方。error: implicit declaration of function ‘init_MUTEX’后来一查,在新版本的linux内核中,init_mutex已经被废除了。查了一下早期版本的定义。
平台:X86 32位
内核:2.6.24
定义:
static inline void init_MUTEX (struct semaphore *sem)
{
sema_init(sem, 1);
} 说明:Init_MUTEX()函数初始化信号量为互斥量。 互斥量为信号量的特例,它可以防止数据被两个不同系统调用读写。
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的地方直接使用sema_init来替换,试了一些,果然可以成功make。驱动成功安装也可以正常使用。代码大概是这样的
init_MUTEX(&wl->sem); 手动修改为
sema_init(&wl->sem,1); 然后再进行编译就可以。修复Ubuntu下因indicator applet的bug导致VNC客户端无法输入s和m的方法Linux根文件系统的制作相关资讯 Ubuntu教程
- Ubuntu教程 - 使用Ubuntu拷贝CD和 (12/18/2013 14:38:16)
- 让Ubuntu 12.10支持RAR和7Z文件解 (11/15/2012 18:51:50)
- Windows 7硬盘安装Ubuntu 12.10图 (11/03/2012 19:22:47)
| - 完美安装Ubuntu 12.10最新AMD显卡 (11/27/2012 08:17:47)
- Win 7硬盘安装Ubuntu 12.10 (11/05/2012 13:30:34)
- 虚拟机上Ubuntu 11.10升级到12.04 (10/12/2012 20:00:38)
|
本文评论 查看全部评论 (0)