halHdcFastSend
函数功能
HDC免拷贝快速发送消息接口。
函数原型
hdcError_t halHdcFastSend(HDC_SESSION session, struct drvHdcFastSendMsg msg, UINT64 flag, UINT32 timeout)
参数说明
参数名 |
说明 |
---|---|
session |
指定发送消息的session。 类型:HDC_SESSION。 |
msg |
发送的消息。
|
flag |
阻塞标志(若处于阻塞状态时,可通过session close完成强制退出)。
类型:UINT64。 |
timeout |
当flag取值为“2"时,设置阻塞超时时间,单位毫秒。 类型:UINT32。 |
返回值说明
- 0:DRV_ERROR_NONE,成功。
- 3:DRV_ERROR_INVALID_VALUE,参数错误。
- 16:DRV_ERROR_WAIT_TIMEOUT,发送超时(可能原因是获取不到空闲的通道资源)。
- 25:DRV_ERROR_SOCKET_CLOSE,session通道被关闭。
- 27:DRV_ERROR_SEND_MESG,消息发送失败。
- 34:DRV_ERROR_DEVICE_NOT_READY,等待设备响应(可能原因是PCIE已断链或设备处于休眠未唤醒状态)。
- 46:DRV_ERROR_OPER_NOT_PERMITTED,无权限访问(一般原因是pid不合法)。

halHdcFastSend接口是异步发送接口,在发送数据时,底层通过DMA快速搬运,源地址一直都是使用的用户申请的内存地址。
因此,使用此接口时,建议用户对消息收发做二次管理,当对端接收到数据后,需要返回响应消息给发送端。在发送端收到响应消息后,用户就可以对内存进行释放或者复用。
约束说明
- 使用此接口时,需要提前通过HDC申请好内存。
- halHdcFastSend、halHdcFastRecv接口,接收、发送数据buffer或控制消息buffer需同时给定。例如发送数据,则需要给定源数据大页内存地址和接收侧的目的大页内存地址。
父主题: 快速通道收发接口