第 1 部分针对 Oracle Solaris 平台设计设备驱动程序
9. 直接内存访问 (Direct Memory Access, DMA)
LDI 包括以下两类接口:
内核接口。用户应用程序使用系统调用来打开、读取和写入由内核中的设备驱动程序管理的设备。内核模块可以使用 LDI 内核接口来打开、读取和写入由内核中的另一设备驱动程序管理的设备。例如,用户应用程序可使用 read(2),而内核模块可使用 ldi_read(9F) 来读取同一设备。 请参见内核接口。
用户接口。LDI 用户接口可为用户进程提供有关内核中其他设备当前使用哪些设备的信息。请参见用户接口。
Target Device(目标设备)。目标设备是内核中的设备,由设备驱动程序管理并由设备使用方访问。
Device Consumer(设备使用方)。设备使用方是打开并访问目标设备的用户进程或内核模块。设备使用方通常对目标设备执行 open、read、write 或 ioctl 之类的操作。
Kernel Device Consumer(内核设备使用方)。内核设备使用方是一种特定类型的设备使用方,它是访问目标设备的内核模块。通常情况下,内核设备使用方不是用于管理要访问的目标设备的设备驱动程序。相反,内核设备使用方通过管理目标设备的设备驱动程序间接访问目标设备。
Layered Driver(分层驱动程序)。分层驱动程序是一种特定类型的内核设备使用方。分层驱动程序是一种不直接管理任何硬件的内核驱动程序。相反,分层驱动程序通过管理目标设备的设备驱动程序间接访问这些目标设备中的一个或多个设备。例如,卷管理器和 STREAMS 多路复用器就是比较典型的分层驱动程序。