Linux字符设备驱动-globalmem驱动编译加载遇到的问题及解决办法
代码是直接复制《LINUX设备驱动开发详解》里面的(源代码见下面)。Makefile如下:obj-m := globalmem.o KERNELBUILD := /lib/modules/`uname -r`/builddefault:make -C $(KERNELBUILD) M=$(shell pwd) modulesclean:rm -rf *.o .*.c
·
代码是直接复制《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
更多推荐
已为社区贡献2条内容
所有评论(0)