---
title: WD加速器用户态驱动层接口- WD南向接口
description: "用户态Vendor驱动对接Warpdrive接口"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/251RC1/accel/kunpengaccel_17_0052.html
sourcePath: /source/zh/kunpengboostkithistory/251RC1/accel/kunpengaccel_17_0052.html
indexId: a1688d4d6bf4b027b5116ea6f763dcc0872f694619803cfe95b70a02861117b572
---
# WD加速器用户态驱动层接口- WD南向接口

用户态Vendor驱动对接Warpdrive接口

```
struct wd_drv_dio_if {
char *hw_type;/* vendor tag which is used to select right vendor driver */
int (*open)(struct wd_queue *q); /* user space WD queue initiation */
void (*close)(struct wd_queue *q); /* user space WD queue uninitiation */
int (*send)(struct wd_queue *q, void *req); /* Send WCRYPTO message to WD queue */
int (*recv)(struct wd_queue *q, void **resp); /* Receive WCRYPTO msg from WD queue */
};

/* The regions of warpdrve queue, which are from the definition of UACCE(the kernel part of Warpdrive) */
enum uacce_qfrt {
UACCE_QFRT_MMIO = 0,/* device mmio region */
UACCE_QFRT_DKO,/* device kernel-only */
UACCE_QFRT_DUS,/* device user share */
UACCE_QFRT_SS,/* static share memory */
UACCE_QFRT_MAX,
};
```

| 函数原型 | void \*wd\_drv\_mmap\_qfr(struct wd\_queue \*q, enum uacce\_qfrt qfrt, enum uacce\_qfrt qfrt\_next, size\_t size); |
| --- | --- |
| 函数功能 | 映射warpdrive队列的指定区域，并尝试获取起始地址 |
| 输入说明 | q：Warpdrive queue qfrt：需要映射的指定区域 qfrt\_next：指定区域的下一个区域 size：指定区域的大小 |
| 输出说明 | 无 |
| 返回值说明 | The VA of the denoted region |
| 使用说明 | 南向接口 |
| 注意事项 | 驱动与队列初始化时获取各个region的虚拟地址区域 |


| 函数原型 | void wd\_drv\_unmmap\_qfr(struct wd\_queue \*q, void \*addr, enum uacce\_qfrt qfrt, enum uacce\_qfrt qfrt\_next, size\_t size); |
| --- | --- |
| 函数功能 | 取消映射warpdrive队列的指定区域 |
| 输入说明 | q：Warpdrive队列 addr：队列中指定区域的起始VA qfrt：需要映射的指定区域 qfrt\_next：指定区域的下一个区域 size：指定区域的大小 |
| 输出说明 | 无 |
| 返回值说明 | NA |
| 使用说明 | 南向接口 |
| 注意事项 | 队列释放时，驱动进行unmap处理 |


| 函数原型 | void \*drv\_iova\_map(struct wd\_queue \*q, void \*va, size\_t sz); |
| --- | --- |
| 函数功能 | 在发送到硬件设备之前，通过映射获取虚拟设备的iova |
| 输入说明 | q：Warpdrive队列 va：指定区域的起始VA sz：VA区域的大小 |
| 输出说明 | 无 |
| 返回值说明 | 返回对应VA的iova |
| 使用说明 | 南向接口 |
| 注意事项 | 无 |


| 函数原型 | void drv\_iova\_unmap(struct wd\_queue \*q, void \*va, void \*iova, size\_t sz); |
| --- | --- |
| 函数功能 | 取消之前创建的iova和va之间的映射关系 |
| 输入说明 | q：Warpdrive队列 va：指定区域的起始VA iova：指定区域的起始IOVA sz：区域的大小 |
| 输出说明 | 无 |
| 返回值说明 | NA |
| 使用说明 | 南向接口 |
| 注意事项 | 无 |


其他南向接口分布在各个算法的算法层中，均有注明。
