代码是直接复制《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