应用程序与内核模块的比较:
C语言应用程序 内核模块程序使用函数 Libc库 内核函数
运行空间 用户空间 内核空间
运行权限 普通用户 超级用户
入口函数 main() module_init()
出口函数 exit() module_exit()
编译 Gcc –c Makefile
连接 Gcc insmod
运行 直接运行 insmod
调试 Gdb kdbug, kdb,kgdb
内核模块输入输出测试:
insmod *.ko rmmod *
lsmod
cat /proc/devices
mknod /dev/* c 234 0 rm /dev/*
echo "string" > /dev/* (验证写)
cat /dev/* (验证读)
内核书籍参考:
1、 《Linux Device Driver》第三版
2、 《The Linux Kernel Module Programming Guide
3, 《Understanding the linux kernel》第三版
4, 《Linux设备驱动开发详解》
1.Linux驱动开发庖丁解牛之一——开发环境的建立
http://linux.chinaunix.net/bbs/thread-1042600-1-2.html
2.Linux驱动开发庖丁解牛之二——模块编程
http://linux.chinaunix.net/bbs/thread-1043815-1-2.html
3.Linux驱动开发庖丁解牛之三——揭开字符设备驱动程序的面纱
http://linux.chinaunix.net/bbs/thread-1047068-1-1.html
4.Linux驱动开发庖丁解牛之四(1)——并发控制之信号量
http://linux.chinaunix.net/bbs/thread-1143453-1-2.html
Linux内核设计的艺术 (图解Linux操作系统架构设计与实现原理)