mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2025-01-29 12:32:48 +00:00
Add ..._GOTO_RETURN macro
Signed-off-by: Ryan Everett <ryan.everett@arm.com>
This commit is contained in:
parent
aa3fa98bc4
commit
d6d6a76e46
@ -20,6 +20,9 @@
|
||||
|
||||
#include "psa/crypto.h"
|
||||
#include "psa/crypto_se_driver.h"
|
||||
#if defined(MBEDTLS_THREADING_C)
|
||||
#include "mbedtls/threading.h"
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Tell if PSA is ready for this hash.
|
||||
@ -111,6 +114,50 @@ typedef struct {
|
||||
} key;
|
||||
} psa_key_slot_t;
|
||||
|
||||
typedef enum {
|
||||
PSA_MUTEX_LOCK = 0,
|
||||
PSA_MUTEX_UNLOCK,
|
||||
} psa_mutex_operation_t;
|
||||
|
||||
/** If threading is enabled: perform a lock or unlock operation on the
|
||||
* key slot mutex.
|
||||
* Call with parameter PSA_MUTEX_LOCK to perform a lock operation.
|
||||
* Call with parameter PSA_MUTEX_UNLOCK to perform an unlock operation.
|
||||
* Returns PSA_ERROR_SERVICE_FAILURE if the operation fails
|
||||
* and status was PSA_SUCCESS.
|
||||
* If threading is not enabled, do nothing.
|
||||
*
|
||||
* Assumptions:
|
||||
* psa_status_t status exists.
|
||||
* op is PSA_MUTEX_LOCK or PSA_MUTEX_UNLOCK.
|
||||
*/
|
||||
#if defined(MBEDTLS_THREADING_C)
|
||||
#define PSA_KEY_SLOT_MUTEX_LOCKFUNC_RETURN(op) \
|
||||
do \
|
||||
{ \
|
||||
if (op == PSA_MUTEX_LOCK) { \
|
||||
if (mbedtls_mutex_lock( \
|
||||
&mbedtls_threading_key_slot_mutex) != 0) { \
|
||||
if (status == PSA_SUCCESS) { \
|
||||
return PSA_ERROR_SERVICE_FAILURE; \
|
||||
} \
|
||||
return status; \
|
||||
} \
|
||||
} \
|
||||
if (op == PSA_MUTEX_UNLOCK) { \
|
||||
if (mbedtls_mutex_unlock( \
|
||||
&mbedtls_threading_key_slot_mutex) != 0) { \
|
||||
if (status == PSA_SUCCESS) { \
|
||||
return PSA_ERROR_SERVICE_FAILURE; \
|
||||
} \
|
||||
return status; \
|
||||
} \
|
||||
} \
|
||||
} while (0);
|
||||
#else
|
||||
#define PSA_KEY_SLOT_MUTEX_LOCKFUNC_RETURN(op) do { } while (0)
|
||||
#endif
|
||||
|
||||
/* A mask of key attribute flags used only internally.
|
||||
* Currently there aren't any. */
|
||||
#define PSA_KA_MASK_INTERNAL_ONLY ( \
|
||||
|
Loading…
x
Reference in New Issue
Block a user