init_MUTEX被废除

一、在安装模块是出现如下错误:

clip_image001

查看模块信息的命令,如下所示:

clip_image002

而系统的内核版本是:

clip_image003

屏幕剪辑的捕获时间: 2011-07-04 16:20

所以编译模块用的版本号和系统的内核版本不统一,这样内核就会报错,这个功能是用配置选项CONFIG_MODVERSIONS 决定的,如下图:

clip_image004

其中一种解决办法,http://apps.hi.baidu.com/share/detail/14755964 ,当然也可以用与系统一样的内核版本来编译、连接模块。

二、将ll设置成,ls -l,如下图所示:

clip_image005

三、今天在编译ldd3上的scull的时候,出现如下错误:

clip_image006

屏幕剪辑的捕获时间: 2011-07-04 16:12

刚开始我以为没有包含头文件,然后我就去查2.6.39.1的源代码,结果在所有的符号中都没有发现init_MUTEX,后面在网站上发现了init_MUTEX的定义,如下所示:

clip_image007

源码衔接:

http://lxr.oss.org.cn/source/include/asm-i386/semaphore.h#L89

上面的源码是2.6.16以前的,在2.6.25以后就再也找不到这个宏了,原因我目前不清楚,根据定义就已经可以把问题解决了,将代码改成下面的就行了:

clip_image008

最后,成功的make,并且驱动成功的安装到系统当中了:

clip_image009

clip_image010

四、scull测试

利用mknod在scull设备上建立字符文件:

clip_image011

屏幕剪辑的捕获时间: 2011-07-04 16:34

设置量子的大小为6,

如下图所示:

clip_image012

改变量子大小(使用默认的)

clip_image013

屏幕剪辑的捕获时间: 2011-07-04 17:05

posted @ 2011-07-18 15:55  justinzhang  阅读(7518)  评论(2编辑  收藏  举报