编写设备驱动程序

用于字符设备驱动程序的入口点

字符设备驱动程序通常以字节流的形式执行 I/O 操作。使用字符驱动程序的设备包括磁带机和串行端口。字符设备驱动程序还可以提供块驱动程序中不存在的其他接口,如 I/O 控制 (ioctl) 命令、内存映射以及设备轮询。有关更多信息,请参见第 15 章

任何设备驱动程序的主要任务都是执行 I/O 操作,许多其他字符设备驱动程序执行称为字节流字符 I/O 的操作。驱动程序可在设备上来回传送数据,而无需使用特定设备地址。此类型的传送与块设备驱动程序中的相反,后者部分文件系统请求会标识设备上的特定位置。

read(9E)write(9E) 入口点可处理标准字符驱动程序的字节流 I/O。有关更多信息,请参见I/O 请求处理

下表列出了字符设备驱动程序可使用的其他入口点。有关其他入口点的信息,请参见通用于所有驱动程序的入口点

表 1–3 用于字符驱动程序的其他入口点

入口点 

使用情况 

说明 

chpoll(9E)

可选 

针对非 STREAMS 字符驱动程序轮询事件。有关其他信息,请参见: 对文件描述符执行多路复用 I/O 操作

ioctl(9E)

可选 

针对字符驱动程序执行一系列 I/O 命令。ioctl() 例程必须确保根据需要显式使用 copyin(9F)copyout(9F)ddi_copyin(9F)ddi_copyout(9F) 在内核地址空间复制用户数据。有关其他信息,请参见:

read(9E)

必需 

从设备读取数据。有关其他信息,请参见: 

segmap(9E)

可选 

将设备内存映射到用户空间。有关其他信息,请参见: 

write(9E)

必需 

将数据写入设备。有关其他信息,请参见: