The items that you mention are part of an old demo module
. I’m sorry but it has not been updated for a long time.
If I am not mistaken,
typedef NetworkBufferDescriptort *xZeroCopyBufferDescriptor
Note that nowadays, the initial ‘x’ would not be used for a typedef anymore, so it would become
indicates the length of the UDP packets that are transmitted.
was a wrapper, it would call the function
I think it looked lke this:
GetZeroCopyBuffer( xZeroCopyBufferDescriptort *pBuffer, size
t xRequestedSizeBytes, TickTypet xBlockTimeTicks )
*pBuffer = pxGetNetworkBufferWithDescriptor( xRequestedSizeBytes, xBlockTimeTicks );
if( *pBuffer != NULL )
xResult = pdPASS;
xResult = pdFAIL;
For UDP sockets, zero-copy means that the user doesn’t pass character buffers, but Network Buffers, which travel from the Network Interface all the way to the application (
), without ever getting ( mem- ) copied.
The same for
: the user fills and sends a Network Bufferm which won’t get copied neither. If you have a zero-copy driver, the memory of the Network Buffer will be passed directly to DMA.
The actual library sources files of FreeRTOS+TCP are these nine:
I hope that they compile without too many problems. Yes we also tested it with the GCC Arm toolchain.
Max, are you sure you need the /multi version of FreeRTOS+TCP? For which platform, if I may ask?
The /multi version has support for multiple Network Interfaces, and also multiple IP-addresses. it also implements IPv6, but that part is still under construction.