ssize_t (*readv) (struct file *, const
struct iovec *, unsigned long, loff_t
*);
ssize_t (*writev) (struct file *, const
struct iovec *, unsigned long, loff_t
CPU响应中断是有条件的,如内部允许中断、中断未 被屏蔽、当前指令执行完等。
CPU响应中断以后,就会中止当前的程序,转去执行 一个中断服务子程序,以完成为相应设备的服务。
2020/12/22
9
3.直接访问内存(DMA)方式
DMA可允许设备和系统内存间在没有处理器参与 的情况下传输大量数据。
设备驱动程序在利用DMA之前,需要选择DMA 通道并定义相关寄存器,以及数据的传输方向,即 读取或写入,然后将设备设定为利用该DMA通道 传输数据。
2020/12/22
int (*fsync) (struct file *, struct
dentry *, int datasync);
int (*fasync) (int, struct file *, int);
int (*lock) (struct file *, int, struct
file_lock *);
对设备初始化和释放; 对设备进行管理,包括实时参数设置,以及提供对设 备的操作接口; 读取应用程序传送给设备文件的数据或者回送应用程 序请求的数据; 检测和处理设备出现的错误。
2020/12/22
11
Linux设备驱动程序
Linux操作系统将所有的设备全部看成文件,并通过文 件的操作界面进行操作。对用户程序而言,设备驱动程序 隐藏了设备的具体细节,对各种不同设备提供了一致的接 口,一般来说,是把设备映射为一个特殊的设备文件。