代码是直接复制《LINUX设备驱动开发详解》里面的(源代码见下面)。

Makefile如下:

 

make时遇到错误:

问题是由于2.6.36内核之后 去掉了原来的ioctl,添加两个新的成员,所以会出错
long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
long (*compat_ioctl) (struct file *, unsigned int, unsigned long);
所以修改源文件中file_operations内
.ioctl 改为 .compat_ioctl 即可

 


 是缺少了一个头文件
#include <linux/slab.h>

insmod globalmem.ko再次遇到问题:

 运行命令: cat /proc/devices

发现源文件中

此设备号被占用,更换设备号即可加载。

 

 

 

globalmem.c

Logo

更多推荐