为了简单,我在“字符设备驱动程序(实践篇)”的基础上进行修改,来掩饰ioctl的用法。
1. scull.h 其中添加ioctl用到的命令
2. scull.c 添加ioctl函数,修改scull_fops
3. Makefile不变
4. make生成scull.ko
装载scull模块
sudo insmod scull.ko
查看主设备号 这里假设为251
cat /proc/devices
建立设备节点
sudo mknod /dev/scull0 c 251 0
sudo mknod /dev/scull1 c 251 1
sudo mknod /dev/scull2 c 251 2
sudo mknod /dev/scull3 c 251 3
更改权限
sudo chgrp staff /dev/scull[0-3]
sudo chmod 664 /dev/scull[0-3]
5. ioctl_test.c
6. 编译测试程序
gcc ioctl_test.c -o ioctl_test.o
开始测试啦
sudo ./ioctl_test.o
打印结果:
1. code should be 10, and actually code == 10
2. code should be 10, and actually code == 10
3. code should be 5, and actually code == 5
4. code should be 10, and actually code == 10
5. code should be 10, and actually code == 10
6. code should be 7, and actually code == 7