驱动分类:字符驱动,块设备驱动,网络设备驱动
流,最终还是要调用系统调用函数,是对系统调用的封装
字符设备特点:
1. 像字节流一样来存取的设备,对它的读写是以字节为单位的。
2. 通常至少需要实现read,open,write,close等系统调用。
3. 应用程序可以通过/dev/下的文件系统节点来访问字符设备,比如说/dev/led, /dev/ttySAC0
4. 只能顺序访问的数据通道,不能前后移动访问指针
块设备特点:
1. 设备上的数据以块的形式存放
2. 块设备驱动程序向用户层提供字符设备一样的接口,也可以调用read,open,write,close等
块设备和字符设备的区别在于;
以块为单位实现数据的读写
块设备按照一定的格式存放数据,不同的文件系统就用来定义这一些格式
块设备需要挂载!
网络设备的特点:
1. 特殊的一类设备,传输是以块为单位,但是块的大小不是固定的。
2. 任何一个网络事务都通过一个网络接口,网络接口负责发送和接收报文。
3. 内核调用一套和数据包相关的网络函数来实现网络交互
驱动的添加和删除,insmod和rmmod
#include
#include
MODULE_LICENSE("GPL");
static int __init hello_init (void)
{
printk("Hello module init\n");
return 0;
}
static void __exit hello_exit (void)
{
printk("Hello module exit\n");
}
module_init(hello_init);
module_exit(hello_exit);