解决Ubuntu安装无线网卡驱动因”init_mutex”被废除编译不过的问题

简介:

解决Ubuntu安装无线网卡驱动因”init_mutex”被废除编译不过的问题

 

买无线网卡的时候我特意找了一个同时具备winlinuxmac三个平台的驱动的的网卡。但是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); 然后再进行编译就可以。










本文转自 arthurchen 51CTO博客,原文链接:http://blog.51cto.com/arthurchen/636812,如需转载请自行联系原作者

目录
相关文章
|
16天前
|
Ubuntu 开发工具 git
Ubuntu安装homebrew的完整教程
本文介绍了如何在没有公网的情况下安装 Homebrew。首先访问 Homebrew 官网,然后通过阿里云的镜像克隆安装脚本,并创建普通用户进行安装。接着修改 `install.sh` 文件指向国内镜像,执行安装命令。最后配置环境变量并更换 Homebrew 源为国内镜像,确保安装顺利。
134 50
|
1月前
|
Ubuntu Linux 测试技术
Linux系统之Ubuntu安装cockpit管理工具
【10月更文挑战第13天】Linux系统之Ubuntu安装cockpit管理工具
144 4
Linux系统之Ubuntu安装cockpit管理工具
|
1月前
|
Ubuntu 应用服务中间件 nginx
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
本文是关于Ubuntu系统中使用ffmpeg 3.2.16源码编译OpenCV 3.4.0的安装笔记,包括安装ffmpeg、编译OpenCV、卸载OpenCV以及常见报错处理。
158 2
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
|
1月前
|
Ubuntu 编译器 计算机视觉
Ubuntu系统编译OpenCV4.8源码
【10月更文挑战第17天】只要三步即可搞定,第一步是下载指定版本的源码包;第二步是安装OpenCV4.8编译需要的编译器与第三方库支持;第三步就是编译OpenCV源码包生成安装文件并安装。
|
1月前
|
Kubernetes Ubuntu Docker
从0开始搞K8S:使用Ubuntu进行安装(环境安装)
通过上述步骤,你已经在Ubuntu上成功搭建了一个基本的Kubernetes单节点集群。这只是开始,Kubernetes的世界广阔且深邃,接下来你可以尝试部署应用、了解Kubernetes的高级概念如Services、Deployments、Ingress等,以及探索如何利用Helm等工具进行应用管理,逐步提升你的Kubernetes技能树。记住,实践是最好的老师,不断实验与学习,你将逐渐掌握这一强大的容器编排技术。
164 1
|
1月前
|
Ubuntu Linux
软件安装(五):Ubuntu 18.04安装Teamviewer 看一遍就会
这篇文章介绍了在Ubuntu 18.04系统上通过图形界面和命令行两种方法安装TeamViewer远程控制软件的步骤。
35 2
|
25天前
|
消息中间件 Ubuntu Java
Ubuntu系统上安装Apache Kafka
Ubuntu系统上安装Apache Kafka
|
1月前
|
Ubuntu Linux
Ubuntu 16.04下无法安装.deb的解决方法
希望以上策略能有效协助您克服在Ubuntu 16.04中安装.deb文件时遇到的挑战。
36 0
|
1月前
|
并行计算 Ubuntu Linux
Ubuntu学习笔记(五):18.04安装多版本CUDA
这篇博客文章介绍了在Ubuntu 18.04系统上如何安装和切换不同版本的CUDA,以及如何安装不同版本的cuDNN。
222 2
|
Ubuntu
Ubuntu编译链接错误:cannot find -lz解决办法
这是因为没有安装zlib库,使用如下方式安装即可: sudo apt-get install zlib1g-dev 注意有些系统上可能是: sudo apt-get install zlib-dev
1097 0