From 0345b661c6de52013788972b817320ad30b279ba Mon Sep 17 00:00:00 2001 From: Rob Austein Date: Thu, 2 Feb 2017 14:04:21 -0500 Subject: Add locking around keystore operations. --- projects/hsm/hsm.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'projects') diff --git a/projects/hsm/hsm.c b/projects/hsm/hsm.c index 971d460..c2f6e0e 100644 --- a/projects/hsm/hsm.c +++ b/projects/hsm/hsm.c @@ -103,6 +103,15 @@ osMutexId uart_mutex; osMutexDef(uart_mutex); #endif +#if NUM_RPC_TASK > 1 +/* A mutex to arbitrate concurrent access to the keystore. + */ +osMutexId ks_mutex; +osMutexDef(ks_mutex); +void hal_ks_lock(void) { osMutexWait(ks_mutex, osWaitForever); } +void hal_ks_unlock(void) { osMutexRelease(ks_mutex); } +#endif + static uint8_t uart_rx[2]; /* current character received from UART */ /* Callback for HAL_UART_Receive_DMA(). @@ -261,6 +270,8 @@ int main() #if NUM_RPC_TASK > 1 if ((uart_mutex = osMutexCreate(osMutex(uart_mutex))) == NULL) Error_Handler(); + if ((ks_mutex = osMutexCreate(osMutex(ks_mutex))) == NULL) + Error_Handler(); #endif if (hal_rpc_server_init() != LIBHAL_OK) -- cgit v1.2.3