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

内存通用接口

Defined by enum wd_buff_type:

BUF类型名称

类型含义

类型值

WD_FLAT_BUF

通用buffer类型

0

WD_SGL_BUF

母子散列链表buffer

1

SGL格式请参考SGL内存格式接口

函数原型

typedef void *(*wd_alloc)(void *usr, size_t size);

函数功能

基于用户的内存机制usr申请大小为size的内存

输入说明

usr:用户的内存机制句柄

size:需要申请内存的大小

输出说明

无。

返回值说明

非NULL:内存起始地址,SUCCESS

NULL:失败

使用说明

目前为了支持no-iommu与iommu-passthrough场景的接口,SVA场景下不需要此接口

注意事项

需要支持多线程

函数原型

typedef void (*wd_free)(void *usr, void *va);

函数功能

基于用户的内存机制usr释放起始地址va的内存

输入说明

usr:用户的内存机制

va:需释放的内存起始地址

输出说明

无。

返回值说明

无。

使用说明

目前为了支持no-iommu与iommu-passthrough场景的接口,SVA场景下不需要此接口。

注意事项

需要支持多线程

函数原型

typedef void *(* wd_map)(void *usr, void *va, size_t sz);

函数功能

基于用户的内存机制usr对起始地址va的sz大小内存进行iova map

输入说明

usr:用户的内存机制

va:需做iova map的内存起始地址

sz:内存大小

输出说明

无。

返回值说明

返回对应va的iova

使用说明

  1. 目前为了支持no-iommu与iommu-passthrough场景的接口,SVA场景下不需要此接口
  2. 南向接口

注意事项

需要支持多线程

函数原型

typedef void (*wd_unmap)(void *usr, void *va, void *iova, size_t sz);

函数功能

基于用户的内存机制usr对起始地址va/iova的sz大小内存进行iova unmap

输入说明

usr:用户的内存机制

va:需iova unmap的内存起始地址

iova:起始的iova地址

sz:内存大小

输出说明

返回值说明

使用说明

  1. 目前为了支持no-iommu与iommu-passthrough场景的接口,SVA场景下不需要此接口
  2. 南向接口

注意事项

需要支持多线程

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
/* Memory brigde from user, it is given at ctx. While SVA, this interface is in no need */
struct wd_mm_br {
wd_alloc alloc;/* Memory allocation */
wd_free free;/* Memory free */
wd_map iova_map;     /* get iova from user space VA */
wd_unmap iova_unmap;    /* destroy the mapping between the PA of VA and iova */
void *usr; /* data for the above operations */
};

/* Warpdrive data buffer */
struct wd_dtb {
char *data;/* data/buffer start address */
__u32 dsize;/* data size */
__u32 bsize;/* buffer size */
};

函数原型

void *wd_iova_map(struct wd_queue *q, void *va, size_t sz);

函数功能

基于Warpdrive queue对用户态的va地址大小为sz的内存进行iova map

输入说明

q:源队列

va:用户态虚拟地址

sz:从va开始的内存大小

输出说明

无。

返回值说明

非NULL:iova地址

NULL:失败

使用说明

南向接口

注意事项

目前为了支持no-iommu与iommu-passthrough场景的接口,no-iommu模式下仅进行了虚实转换。

函数原型

void wd_iova_unmap(struct wd_queue *q, void *va, void *iova, size_t sz);

函数功能

基于Warpdrive queue对用户态的va(iova)地址大小为sz的内存进行iova unmap

输入说明

q:源队列

va:用户态虚拟地址va

iova:用户态iova地址

sz:内存大小

输出说明

返回值说明

使用说明

南向接口

注意事项

目前为了支持no-iommu与iommu-passthrough场景的接口,no-iommu模式下无任何操作