1 /*
2  * FreeRTOS V202212.00
3  * Copyright (C) 2020 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  * https://www.FreeRTOS.org
23  * https://github.com/FreeRTOS
24  *
25  */
26 
27 /**
28  * @file mbedtls_freertos_port.h
29  * @brief mbed TLS threading functions implemented for FreeRTOS.
30  */
31 
32 #ifndef MBEDTLS_FREERTOS_PORT_H_
33 #define MBEDTLS_FREERTOS_PORT_H_
34 
35 /* FreeRTOS includes. */
36 #include "FreeRTOS.h"
37 #include "semphr.h"
38 
39 /**
40  * @brief mbed TLS mutex type definition for MBEDTLS_THREADING_C implementation.
41  */
42 typedef struct mbedtls_threading_mutex
43 {
44     SemaphoreHandle_t mutexHandle;
45 
46     #if ( configSUPPORT_STATIC_ALLOCATION == 1 )
47         StaticSemaphore_t mutexStorage;
48     #endif /*  configSUPPORT_STATIC_ALLOCATION == 1 */
49 } mbedtls_threading_mutex_t;
50 
51 #if defined( MBEDTLS_THREADING_ALT )
52     int mbedtls_platform_threading_init( void );
53 #endif
54 
55 int mbedtls_platform_send( void * ctx,
56                            const unsigned char * buf,
57                            size_t len );
58 int mbedtls_platform_recv( void * ctx,
59                            unsigned char * buf,
60                            size_t len );
61 
62 void * mbedtls_platform_calloc( size_t nmemb,
63                                 size_t size );
64 void mbedtls_platform_free( void * ptr );
65 
66 #endif /* ifndef MBEDTLS_FREERTOS_PORT_H_ */
67