1 /*
2  * FreeRTOS+TCP V3.1.0
3  * Copyright (C) 2022 Amazon.com, Inc. or its affiliates.  All Rights Reserved.
4  *
5  * SPDX-License-Identifier: MIT
6  *
7  * Permission is hereby granted, free of charge, to any person obtaining a copy of
8  * this software and associated documentation files (the "Software"), to deal in
9  * the Software without restriction, including without limitation the rights to
10  * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11  * the Software, and to permit persons to whom the Software is furnished to do so,
12  * subject to the following conditions:
13  *
14  * The above copyright notice and this permission notice shall be included in all
15  * copies or substantial portions of the Software.
16  *
17  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19  * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20  * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23  *
24  * http://aws.amazon.com/freertos
25  * http://www.FreeRTOS.org
26  */
27 
28 /*
29  * tcp_mem_stats.h
30  */
31 
32 
33 #ifndef TCP_MEM_STATS_H
34 
35     #define TCP_MEM_STATS_H
36 
37     #ifdef __cplusplus
38         extern "C" {
39     #endif
40 
41     typedef enum xTCP_MEMORY
42     {
43         tcpSOCKET_TCP,
44         tcpSOCKET_UDP,
45         tcpSOCKET_SET,
46         tcpSEMAPHORE,
47         tcpRX_STREAM_BUFFER,
48         tcpTX_STREAM_BUFFER,
49         tcpNETWORK_BUFFER,
50     } TCP_MEMORY_t;
51 
52     #if ( ipconfigUSE_TCP_MEM_STATS != 0 )
53 
54         void vTCPMemStatCreate( TCP_MEMORY_t xMemType,
55                                 void * pxObject,
56                                 size_t uxSize );
57 
58         void vTCPMemStatDelete( void * pxObject );
59 
60         void vTCPMemStatClose( void );
61 
62         #define iptraceMEM_STATS_CREATE( xMemType, pxObject, uxSize ) \
63     vTCPMemStatCreate( xMemType, pxObject, uxSize )
64 
65         #define iptraceMEM_STATS_DELETE( pxObject ) \
66     vTCPMemStatDelete( pxObject )
67 
68         #define iptraceMEM_STATS_CLOSE() \
69     vTCPMemStatClose()
70     #else /* if ( ipconfigUSE_TCP_MEM_STATS != 0 ) */
71 
72 /* The header file 'IPTraceMacroDefaults.h' will define the default empty macro's. */
73 
74     #endif /* ipconfigUSE_TCP_MEM_STATS != 0 */
75 
76     #ifdef __cplusplus
77         } /* extern "C" */
78     #endif
79 
80 #endif /* TCP_MEM_STATS_H */
81