1.字符设备驱动
I/O传输过程中以字符为单位进行传输的设备。如键盘。
write :操作就是从应用程序接收数据送到硬件。
read :操作就是从硬件读取数据并交给应用程序。
ioctl: 应用程序提供对硬件行为的控制
open:应用程序打开设备时对设备进行初始化
release :应用程序关闭设备时的操作
static struct file_operations my driver_fops={
owner :THIS_Module,
write:mydriver_write,
read:mydriver_read,
ioctl:mydriver_ioctl,
open: mydriver_open,
release:mydriver_release,
};
module_exit() 用于向内核声明退出。
字符设备驱动程序开发基本步骤如下:
1.确定主设备号和次设备号
2.实现字符驱动程序,先实现file_operations 结构体,然后实现初始化函数并注册字符设备,然后实现销毁函数并释放字符设备。
3.创建设备文件节点。
块设备驱动
块设备只能以块为单位接收输入返回输出。
块设备需要缓冲区。
块设备可以随机访问。字符设备只能顺序读写。
struct block_device_operations
int(*open)(struct inode *,stuct file*);
int (*release)
int(*ioctl)
int(*unlock_ioctl)
...
....
网络设备驱动
net_device 表示网络设备接口。
网络设备媒介层
网络设备驱动层
网络设备接口层
网络协议接口层