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)