编写适用于 Oracle® Solaris 11.2 的设备驱动程序

退出打印视图

更新时间: 2014 年 9 月
 
 

用于内存映射设备的入口点

对于某些设备(如帧缓存器),假设直接访问设备内存的应用程序比字节流 I/O 更高效。应用程序使用 mmap(2) 系统调用可将设备内存映射到其地址空间。要支持内存映射,设备驱动程序需要实现 segmap(9E)devmap(9E) 入口点。有关 devmap(9E) 的信息,请参见Chapter 10, Mapping Device and Kernel Memory。有关 segmap(9E) 的信息,请参见Chapter 15, Drivers for Character Devices

定义 devmap(9E) 入口点的驱动程序通常不会定义 read(9E)write(9E) 入口点,因为应用程序在调用 mmap(2) 之后会直接对设备执行 I/O 操作。

下表列出了使用 devmap 框架执行内存映射的字符设备驱动程序可以使用的其他入口点。有关其他入口点的信息,请参见Entry Points Common to All DriversEntry Points for Character Device Drivers

表 1-5  使用 devmap 进行内存映射的字符驱动程序的入口点
入口点
使用情况
说明
必填
验证和转换内存映射设备的虚拟映射。有关其他信息,请参见Exporting the Mapping
可选
在访问映射的过程中遇到验证或保护问题时通知驱动程序。有关其他信息,请参见devmap_access() Entry Point
必填
对映射执行设备上下文切换。有关其他信息,请参见devmap_contextmgt() Entry Point
可选
复制设备映射。有关其他信息,请参见devmap_dup() Entry Point
可选
创建设备映射。有关其他信息,请参见devmap_map() Entry Point
可选
取消设备映射。有关其他信息,请参见devmap_unmap() Entry Point