]> git.sur5r.net Git - freertos/blob - FreeRTOS-Plus/Source/FreeRTOS-Plus-TCP/include/NetworkBufferManagement.h
Update version number in readiness for V10.3.0 release. Sync SVN with reviewed releas...
[freertos] / FreeRTOS-Plus / Source / FreeRTOS-Plus-TCP / include / NetworkBufferManagement.h
1 /*
2  * FreeRTOS+TCP V2.2.0
3  * Copyright (C) 2017 Amazon.com, Inc. or its affiliates.  All Rights Reserved.
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a copy of
6  * this software and associated documentation files (the "Software"), to deal in
7  * the Software without restriction, including without limitation the rights to
8  * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9  * the Software, and to permit persons to whom the Software is furnished to do so,
10  * subject to the following conditions:
11  *
12  * The above copyright notice and this permission notice shall be included in all
13  * copies or substantial portions of the Software.
14  *
15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17  * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18  * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21  *
22  * http://aws.amazon.com/freertos
23  * http://www.FreeRTOS.org
24  */
25
26 #ifndef NETWORK_BUFFER_MANAGEMENT_H
27 #define NETWORK_BUFFER_MANAGEMENT_H
28
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32
33 /* NOTE PUBLIC API FUNCTIONS. */
34 BaseType_t xNetworkBuffersInitialise( void );
35 NetworkBufferDescriptor_t *pxGetNetworkBufferWithDescriptor( size_t xRequestedSizeBytes, TickType_t xBlockTimeTicks );
36 NetworkBufferDescriptor_t *pxNetworkBufferGetFromISR( size_t xRequestedSizeBytes );
37 void vReleaseNetworkBufferAndDescriptor( NetworkBufferDescriptor_t * const pxNetworkBuffer );
38 BaseType_t vNetworkBufferReleaseFromISR( NetworkBufferDescriptor_t * const pxNetworkBuffer );
39 uint8_t *pucGetNetworkBuffer( size_t *pxRequestedSizeBytes );
40 void vReleaseNetworkBuffer( uint8_t *pucEthernetBuffer );
41
42 /* Get the current number of free network buffers. */
43 UBaseType_t uxGetNumberOfFreeNetworkBuffers( void );
44
45 /* Get the lowest number of free network buffers. */
46 UBaseType_t uxGetMinimumFreeNetworkBuffers( void );
47
48 /* Copy a network buffer into a bigger buffer. */
49 NetworkBufferDescriptor_t *pxDuplicateNetworkBufferWithDescriptor( NetworkBufferDescriptor_t * const pxNetworkBuffer,
50         size_t uxNewLength);
51
52 /* Increase the size of a Network Buffer.
53 In case BufferAllocation_2.c is used, the new space must be allocated. */
54 NetworkBufferDescriptor_t *pxResizeNetworkBufferWithDescriptor( NetworkBufferDescriptor_t * pxNetworkBuffer,
55         size_t xNewSizeBytes );
56
57 #if ipconfigTCP_IP_SANITY
58         /*
59          * Check if an address is a valid pointer to a network descriptor
60          * by looking it up in the array of network descriptors
61          */
62         UBaseType_t bIsValidNetworkDescriptor (const NetworkBufferDescriptor_t * pxDesc);
63         BaseType_t prvIsFreeBuffer( const NetworkBufferDescriptor_t *pxDescr );
64 #endif
65
66 #ifdef __cplusplus
67 } // extern "C"
68 #endif
69
70 #endif /* NETWORK_BUFFER_MANAGEMENT_H */