mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2024-11-30 01:44:15 +01:00
815e9a21a3
Remove cryptography related files and a few utility header files that are shared between Mbed TLS and Mbed Crypto. Mbed TLS will use an Mbed Crypto sourced version of each of these header files in order to ease the maintenance burden of both libraries, and to make it easier to keep Mbed TLS and Mbed Crypto in sync. As part of removing cryptography related files, tell Doxygen to source information from the removed the headers, so that it will consider them for inclusion within Doxygen output. Later, as part of the Mbed TLS 3.0 (API breaking version), we'll restructure the organization of the 3 libraries a bit, to move some things out of Mbed Crypto that don't belong there. Candidates of not belonging in Mbed Crypto, but are in libmbedcrypto.so for legacy reasons: - asn1.h - asn1write.h - base64.h - memory_buffer_alloc.h - platform.h - platform_time.h - platform_util.h - threading.h - timing.h - version.h
123 lines
4.4 KiB
C
123 lines
4.4 KiB
C
/**
|
|
* \file threading.h
|
|
*
|
|
* \brief Threading abstraction layer
|
|
*/
|
|
/*
|
|
* Copyright (C) 2006-2015, ARM Limited, All Rights Reserved
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
* not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*
|
|
* This file is part of mbed TLS (https://tls.mbed.org)
|
|
*/
|
|
#ifndef MBEDTLS_THREADING_H
|
|
#define MBEDTLS_THREADING_H
|
|
|
|
#if !defined(MBEDTLS_CONFIG_FILE)
|
|
#include "mbedtls/config.h"
|
|
#else
|
|
#include MBEDTLS_CONFIG_FILE
|
|
#endif
|
|
|
|
#include <stdlib.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* MBEDTLS_ERR_THREADING_FEATURE_UNAVAILABLE is deprecated and should not be
|
|
* used. */
|
|
#define MBEDTLS_ERR_THREADING_FEATURE_UNAVAILABLE -0x001A /**< The selected feature is not available. */
|
|
|
|
#define MBEDTLS_ERR_THREADING_BAD_INPUT_DATA -0x001C /**< Bad input parameters to function. */
|
|
#define MBEDTLS_ERR_THREADING_MUTEX_ERROR -0x001E /**< Locking / unlocking / free failed with error code. */
|
|
|
|
#if defined(MBEDTLS_THREADING_PTHREAD)
|
|
#include <pthread.h>
|
|
typedef struct mbedtls_threading_mutex_t
|
|
{
|
|
pthread_mutex_t mutex;
|
|
char is_valid;
|
|
} mbedtls_threading_mutex_t;
|
|
#endif
|
|
|
|
#if defined(MBEDTLS_THREADING_ALT)
|
|
/* You should define the mbedtls_threading_mutex_t type in your header */
|
|
#include "threading_alt.h"
|
|
|
|
/**
|
|
* \brief Set your alternate threading implementation function
|
|
* pointers and initialize global mutexes. If used, this
|
|
* function must be called once in the main thread before any
|
|
* other mbed TLS function is called, and
|
|
* mbedtls_threading_free_alt() must be called once in the main
|
|
* thread after all other mbed TLS functions.
|
|
*
|
|
* \note mutex_init() and mutex_free() don't return a status code.
|
|
* If mutex_init() fails, it should leave its argument (the
|
|
* mutex) in a state such that mutex_lock() will fail when
|
|
* called with this argument.
|
|
*
|
|
* \param mutex_init the init function implementation
|
|
* \param mutex_free the free function implementation
|
|
* \param mutex_lock the lock function implementation
|
|
* \param mutex_unlock the unlock function implementation
|
|
*/
|
|
void mbedtls_threading_set_alt( void (*mutex_init)( mbedtls_threading_mutex_t * ),
|
|
void (*mutex_free)( mbedtls_threading_mutex_t * ),
|
|
int (*mutex_lock)( mbedtls_threading_mutex_t * ),
|
|
int (*mutex_unlock)( mbedtls_threading_mutex_t * ) );
|
|
|
|
/**
|
|
* \brief Free global mutexes.
|
|
*/
|
|
void mbedtls_threading_free_alt( void );
|
|
#endif /* MBEDTLS_THREADING_ALT */
|
|
|
|
#if defined(MBEDTLS_THREADING_C)
|
|
/*
|
|
* The function pointers for mutex_init, mutex_free, mutex_ and mutex_unlock
|
|
*
|
|
* All these functions are expected to work or the result will be undefined.
|
|
*/
|
|
extern void (*mbedtls_mutex_init)( mbedtls_threading_mutex_t *mutex );
|
|
extern void (*mbedtls_mutex_free)( mbedtls_threading_mutex_t *mutex );
|
|
extern int (*mbedtls_mutex_lock)( mbedtls_threading_mutex_t *mutex );
|
|
extern int (*mbedtls_mutex_unlock)( mbedtls_threading_mutex_t *mutex );
|
|
|
|
/*
|
|
* Global mutexes
|
|
*/
|
|
#if defined(MBEDTLS_FS_IO)
|
|
extern mbedtls_threading_mutex_t mbedtls_threading_readdir_mutex;
|
|
#endif
|
|
|
|
#if defined(MBEDTLS_HAVE_TIME_DATE) && !defined(MBEDTLS_PLATFORM_GMTIME_R_ALT)
|
|
/* This mutex may or may not be used in the default definition of
|
|
* mbedtls_platform_gmtime_r(), but in order to determine that,
|
|
* we need to check POSIX features, hence modify _POSIX_C_SOURCE.
|
|
* With the current approach, this declaration is orphaned, lacking
|
|
* an accompanying definition, in case mbedtls_platform_gmtime_r()
|
|
* doesn't need it, but that's not a problem. */
|
|
extern mbedtls_threading_mutex_t mbedtls_threading_gmtime_mutex;
|
|
#endif /* MBEDTLS_HAVE_TIME_DATE && !MBEDTLS_PLATFORM_GMTIME_R_ALT */
|
|
|
|
#endif /* MBEDTLS_THREADING_C */
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* threading.h */
|