mstxMemHeapRegister
函数原型
mstxMemHeapHandle_t mstxMemHeapRegister(mstxDomainHandle_t domain, mstxMemHeapDesc_t const *desc)
功能说明
注册内存池。用户在调用该接口注册内存池时,需确保该内存已提前申请。
参数说明
参数 |
输入/输出 |
说明 |
---|---|---|
domain |
输入 |
为globalDomain或mstxDomainCreateA返回的句柄。 数据类型:const char *。 |
desc |
输入 |
typedef enum mstxMemHeapUsageType { /* @brief 此堆内存作为内存池使用 * 使用此使用方式注册的堆内存,需要使用二次分配注册后才可以访问 */ MSTX_MEM_HEAP_USAGE_TYPE_SUB_ALLOCATOR = 0, } mstxMemHeapUsageType; /** @brief 堆内存的类型 * 此处的“类型”是指通过何种方式来描述堆内存指针。当前仅支持线性排布的 * 内存,但此处保留日后支持更多内存类型的扩展能力。比如某些API返回多个 * 句柄来描述内存范围,或者一些高维内存需要使用 stride、tiling 或 * interlace 来描述 */ typedef enum mstxMemType { /** @brief 标准线性排布的虚拟内存 * 此时 mstxMemHeapRegister 接收 mstxMemVirtualRangeDesc_t 类型的描述 */ MSTX_MEM_TYPE_VIRTUAL_ADDRESS = 0, } mstxMemType; typedef struct mstxMemVirtualRangeDesc_t { uint32_t deviceId; // 内存区域对应的设备 ID void const *ptr; // 内存区域的起始地址 uint64_t size; // 内存区域的长度 } mstxMemVirtualRangeDesc_t; typedef struct mstxMemHeapDesc_t { mstxMemHeapUsageType usage; // 堆内存的使用方式 mstxMemType type; // 堆内存的类型 void const *typeSpecificDesc; // 堆内存在指定内存类型下的描述信息 } mstxMemHeapDesc_t; |
返回值
内存池对应的句柄。
调用示例
mstxMemVirtualRangeDesc_t rangeDesc = {}; rangeDesc.deviceId = deviceId; // 设备编号 rangeDesc.ptr = gm; // 注册的内存池gm首地址 rangeDesc.size = 1024; // 内存池大小 heapDesc.typeSpecificDesc = &rangeDesc; mstxMemHeapDesc_t heapDesc{}; mstxMemHeapHandle_t memPool = mstxMemHeapRegister(globalDomain, &heapDesc); // 注册内存池
父主题: 扩展接口(mstx)