第 1 部分针对 Oracle Solaris 平台设计设备驱动程序
9. 直接内存访问 (Direct Memory Access, DMA)
14. 分层驱动程序接口 (Layered Driver Interface, LDI)
通过内存映射,用户线程可以直接访问某些设备(如帧缓存器)的内存。这些设备的驱动程序通常不支持 read(9E) 和 write(9E) 接口。相反,这些驱动程序支持使用 devmap(9E) 入口点的内存映射。例如,帧缓存器驱动程序可以实现 devmap(9E) 入口点,以允许将帧缓存器映射到用户线程。
调用 devmap(9E) 入口点可以将设备内存或内核内存导出到用户应用程序。devmap() 函数是在 segmap(9E) 内从 devmap_setup(9F) 调用的,或者是代表 ddi_devmap_segmap(9F) 调用的。
segmap(9E) 入口点负责设置 mmap(2) 系统调用所请求的内存映射。许多内存映射设备的驱动程序使用 ddi_devmap_segmap(9F) 作为入口点,而不是定义自己的 segmap(9E) 例程。