鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

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:失败

使用说明

  1. 在使用WD默认内存来创建BLK池时,如果对block_num数量有严格要求,请配置setup的block_num比实际需求高15%。
  2. 在使用外部内存时,要求用户可提供struct wd_mm_br,即br可以满足创建池的内存大小要求,且dma map/unmap操作在该内存范围内适用,若属于直接物理地址DMA,则要求该内存范围内物理地址连续。

注意事项

如果用户没有指定内存,那么默认使用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失败

使用说明

支持多线程。

注意事项

  1. 目前为了支持no-iommu与iommu-passthrough场景的接口。
  2. 入参blk是block buffer范围的任意地址。

函数原型

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

使用说明

支持多线程

注意事项

维测接口