字符设备驱动程序通常以字节流的形式执行 I/O 操作。使用字符驱动程序的设备包括磁带机和串行端口。字符设备驱动程序还可以提供块驱动程序中不存在的其他接口,如 I/O 控制 (ioctl) 命令、内存映射以及设备轮询。有关更多信息,请参见第 15 章。
任何设备驱动程序的主要任务都是执行 I/O 操作,许多其他字符设备驱动程序执行称为字节流或字符 I/O 的操作。驱动程序可在设备上来回传送数据,而无需使用特定设备地址。此类型的传送与块设备驱动程序中的相反,后者部分文件系统请求会标识设备上的特定位置。
read(9E) 和 write(9E) 入口点可处理标准字符驱动程序的字节流 I/O。有关更多信息,请参见I/O 请求处理。
下表列出了字符设备驱动程序可使用的其他入口点。有关其他入口点的信息,请参见通用于所有驱动程序的入口点。
表 1–3 用于字符驱动程序的其他入口点
入口点 |
使用情况 |
说明 |
---|---|---|
可选 |
针对非 STREAMS 字符驱动程序轮询事件。有关其他信息,请参见: 对文件描述符执行多路复用 I/O 操作 |
|
可选 |
针对字符驱动程序执行一系列 I/O 命令。ioctl() 例程必须确保根据需要显式使用 copyin(9F)、copyout(9F)、ddi_copyin(9F) 和 ddi_copyout(9F) 在内核地址空间复制用户数据。有关其他信息,请参见: |
|
必需 |
从设备读取数据。有关其他信息,请参见: |
|
可选 |
将设备内存映射到用户空间。有关其他信息,请参见: |
|
必需 |
将数据写入设备。有关其他信息,请参见: |