BLK内存管理接口
1 2 3 4 5 6 7 | /* Memory pool creating parameters */ struct wd_blkpool_setup { __u32 block_size;/* Block buffer size */ __u32 block_num;/* Block buffer number */ __u32 align_size;/* Block buffer startging address align size */ struct wd_mm_br br;/* memory from user if don't use WD memory */ }; |
函数原型 |
void *wd_blkpool_create(struct wd_queue *q, struct wd_blkpool_setup *setup); |
---|---|
函数功能 |
在Warpdrive队列上使用Warpdrive内存或用户的内存创建块内存池 |
输入说明 |
q:Warpdrive算法队列 setup:用户给出的规格与内存信息 |
输出说明 |
setup->block_num:当用户使用WD的内存来创建池时,block_num将作为实际创建了多少block buffer的输出;当该数目小于用户输入的要求数量的90%时,创建blkpool将失败 |
返回值说明 |
非NULL:blk池 NULL:失败 |
使用说明 |
|
注意事项 |
如果用户没有指定内存,那么默认使用wd预留内存进行池的创建;在使用WD默认内存创建池时,struct wd_blkpool_setup中block_num为输入和输出参数。 |
函数原型 |
void wd_blkpool_destroy(void *pool); |
---|---|
函数功能 |
销毁BLK池 |
输入说明 |
pool:需要销毁的BLK池 |
输出说明 |
无 |
返回值说明 |
无 |
使用说明 |
无 |
注意事项 |
无 |
函数原型 |
void *wd_alloc_blk(void *pool); |
---|---|
函数功能 |
从Warpdrive SGL内存池分配BLK缓冲区 |
输入说明 |
pool:BLK池 |
输出说明 |
无 |
返回值说明 |
非NULL:一个BLK buffer的起始地址 NULL:申请失败 |
使用说明 |
支持多线程 |
注意事项 |
无 |
函数原型 |
void wd_free_blk(void *pool, void *blk); |
---|---|
函数功能 |
将BLK缓冲区释放到Warpdrive BLK内存池 |
输入说明 |
pool:BLK池 blk:一个BLK buffer范围内的任意地址 |
输出说明 |
无 |
返回值说明 |
无 |
使用说明 |
支持多线程 |
注意事项 |
入参blk是一个block buffer范围内的任意地址 |
函数原型 |
void *wd_blk_iova_map(void *pool, void *blk); |
---|---|
函数功能 |
iova映射块缓冲区 |
输入说明 |
pool:BLK池 blk:一个block buffer范围内的任意地址 |
输出说明 |
无 |
返回值说明 |
非NULL:返回blk map的iova地址 NULL:map失败 |
使用说明 |
支持多线程。 |
注意事项 |
|
函数原型 |
void wd_blk_iova_unmap(void *pool, void *blk_iova, void *blk); |
---|---|
函数功能 |
用物理地址取消映射块缓冲区的iova |
输入说明 |
pool:BLK池 blk_iova:blk map的iova地址 blk:一个block buffer范围内的任意地址 |
输出说明 |
无 |
返回值说明 |
无 |
使用说明 |
支持多线程 |
注意事项 |
目前为了支持no-iommu与iommu-passthrough场景的接口,no-iommu模式下无任何操作。 |
函数原型 |
int wd_get_free_blk_num (void *pool, __u32 *free_num); |
---|---|
函数功能 |
获取池的空闲块缓冲区号 |
输入说明 |
pool:BLK池 |
输出说明 |
Number of free block buffer:*free_num; |
返回值说明 |
成功:WD_SUCCESS 失败:-WD_EINVAL |
使用说明 |
支持多线程 |
注意事项 |
维测接口 |
函数原型 |
unsigned int wd_blk_alloc_failures (void *pool, __u32 *fail_num); |
---|---|
函数功能 |
获取失败的池分配时间 |
输入说明 |
pool:BLK池 |
输出说明 |
Number of allocation failing times:*fail_num; |
返回值说明 |
成功:WD_SUCCESS 失败:-WD_EINVAL |
使用说明 |
支持多线程 |
注意事项 |
维测接口 |