io_map 内核服务

用途

连接到 I/O 映射

语法

#include <sys/adspace.h>

void *  io_map (io_handle)
io_handle_t io_handle;

描述

io_map 内核服务将可寻址性设置为 io_handle_t 结构所定义的 I/O 地址空间。 它返回表示已映射区域的开始的有效地址。

io_map内核服务是iomem_att内核服务的替代调用,后者在AIX 6.1 中已被弃用。 但是, io_map 内核服务可能会替换多个 iomem_att 调用,具体取决于设备,驱动程序以及是否将多个区域映射到单个虚拟段。 与 iomem_att 内核服务一样,此服务不会返回任何类型的故障。 如果发生问题,系统将崩溃。

io_mapiomem_att之间存在重大差异。 iomem_att 采用了包含总线地址的 io_map 结构,并返回了标准有效地址,并保留了与总线地址的任何字节偏移量并计算到返回的有效地址中。 io_map 内核服务始终返回符合段的有效地址,该地址表示对应于 io_handle_t的 I/O 段的开头。 段中页面和字节偏移量的处理是设备驱动程序的职责。

io_map 内核服务受有关允许的连接数的嵌套规则的约束。 活动临时连接的系统 4 为 4 个。 但是,建议调用中断或 DMA 内核服务的驱动程序不拥有一个以上的活动连接。 此外,建议在调用其他内核服务时,驱动程序不拥有任何活动连接。

参数

描述
io_handle 在先前成功调用 io_map_init时接收到。 描述要连接到的 I/O 空间。

执行环境

可以从进程或中断环境中调用 io_map 内核服务。

返回值

io_map 内核服务返回一个符合段的有效地址来访问 I/O 地址空间。