init_MUTEX被废除
一、在安装模块是出现如下错误:
查看模块信息的命令,如下所示:
而系统的内核版本是:
屏幕剪辑的捕获时间: 2011-07-04 16:20
所以编译模块用的版本号和系统的内核版本不统一,这样内核就会报错,这个功能是用配置选项CONFIG_MODVERSIONS 决定的,如下图:
其中一种解决办法,http://apps.hi.baidu.com/share/detail/14755964 ,当然也可以用与系统一样的内核版本来编译、连接模块。
二、将ll设置成,ls -l,如下图所示:
三、今天在编译ldd3上的scull的时候,出现如下错误:
屏幕剪辑的捕获时间: 2011-07-04 16:12
刚开始我以为没有包含头文件,然后我就去查2.6.39.1的源代码,结果在所有的符号中都没有发现init_MUTEX,后面在网站上发现了init_MUTEX的定义,如下所示:
源码衔接:
http://lxr.oss.org.cn/source/include/asm-i386/semaphore.h#L89
上面的源码是2.6.16以前的,在2.6.25以后就再也找不到这个宏了,原因我目前不清楚,根据定义就已经可以把问题解决了,将代码改成下面的就行了:
最后,成功的make,并且驱动成功的安装到系统当中了:
四、scull测试
利用mknod在scull设备上建立字符文件:
屏幕剪辑的捕获时间: 2011-07-04 16:34
设置量子的大小为6,
如下图所示:
改变量子大小(使用默认的)
屏幕剪辑的捕获时间: 2011-07-04 17:05