编写设备驱动程序

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

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

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

下表列出了使用 devmap 框架执行内存映射的字符设备驱动程序可以使用的其他入口点。有关其他入口点的信息,请参见通用于所有驱动程序的入口点用于字符设备驱动程序的入口点

表 1–5 使用 devmap 进行内存映射的字符驱动程序的入口点

入口点 

使用情况 

说明 

devmap(9E)

必需 

验证和转换内存映射设备的虚拟映射。有关其他信息,请参见: 导出映射

devmap_access(9E)

可选 

访问具有验证或保护问题的映射时通知驱动程序。有关其他信息,请参见: devmap_access() 入口点

devmap_contextmgt(9E)

必需 

对映射执行设备上下文切换。有关其他信息,请参见: devmap_contextmgt() 入口点

devmap_dup(9E)

可选 

复制设备映射。有关其他信息,请参见: devmap_dup() 入口点

devmap_map(9E)

可选 

创建设备映射。有关其他信息,请参见: devmap_map() 入口点

devmap_unmap(9E)

可选 

取消设备映射。有关其他信息,请参见: devmap_unmap() 入口点