注意:此 API 已从 FreeRTOS V4.0.0 起弃用
。请参阅
FreeRTOS_GetUDPPayloadBuffer_Multi()
了解支持 IPv6、多个端点和多个接口的新 API。如需使用已弃用的 API ,请将
FreeRTOSIPConfig.h 头文件中的 ipconfigIPv4_BACKWARD_COMPATIBLE 设置为 1。
FreeRTOS_IP.h
void *FreeRTOS_GetUDPPayloadBuffer( size_t xRequestedSizeBytes, TickType_t xBlockTimeTicks );
从 TCP/IP 堆栈获取缓冲区以用于零拷贝接口。
用于传输数据的零拷贝接口的描述,请参阅
请参阅 FreeRTOS_sendto() 文档页面。
参数:
xRequestedSizeBytes
|
请求的缓冲区的大小。 大小以
字节为单位。
|
xBlockTimeTicks
|
调用 任务准备等待网络缓冲区的最长时间,RTOS
(如果没有立即可用的缓冲区)。
如果缓冲区不可用,则 调用任务将RTOS
保持在阻塞状态(以便执行其他任务),
直到缓冲区可用或
阻塞时间到期。
阻塞时间以 tick 为单位。 毫秒可以转换为 tick,
方法是将毫秒时间除以
portTICK_PERIOD_MS。
为了防止死锁,最大阻塞时间上限为
ipconfigMAX_SEND_BLOCK_TIME_TICKS。 ipconfigMAX_SEND_BLOCK_TIME_TICKS
在 FreeRTOSIPConfig.h 中进行定义。
|
返回:
如果获取了缓冲区,则返回指向所获缓冲区的指针。
如果无法获取缓冲区,则返回 NULL。
用法示例:
FreeRTOS_sendto() 文档页面
包含一个含有调用 FreeRTOS_GetUDPPayloadBuffer() 的示例零拷贝发送操作。
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.