diff options
author | David Hu <david.hu@arm.com> | 2019-09-27 14:08:11 +0800 |
---|---|---|
committer | David Hu <david.hu@arm.com> | 2020-02-14 11:06:17 +0800 |
commit | 286b94a8db42f9d341506d39322892fce04e8d17 (patch) | |
tree | 3bb8170dbd1f00853d37ca8f6b32e2d1d2433ade | |
parent | f3e2047f2680bbd2e96a93f5442e22a9a6384a32 (diff) | |
download | trusted-firmware-m-286b94a8db42f9d341506d39322892fce04e8d17.tar.gz |
Dualcpu: Use counting semaphore in TF-M multi-core NS interface
Replace mutex with counting semaphore as the lock to sync up TF-M
multi-core NS interface.
Prepare for support of multiple outstanding NS PSA Client calls.
Change-Id: I55832a9bed7ea411a639b33728dc81fb6ba6ec7f
Signed-off-by: David Hu <david.hu@arm.com>
-rw-r--r-- | interface/src/tfm_multi_core_api.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/interface/src/tfm_multi_core_api.c b/interface/src/tfm_multi_core_api.c index 002c8eb796..c3deb50da7 100644 --- a/interface/src/tfm_multi_core_api.c +++ b/interface/src/tfm_multi_core_api.c @@ -5,17 +5,22 @@ * */ -#include "os_wrapper/mutex.h" +#include "os_wrapper/semaphore.h" #include "tfm_api.h" +#include "tfm_mailbox.h" #include "tfm_multi_core_api.h" +#define MAX_SEMAPHORE_COUNT NUM_MAILBOX_QUEUE_SLOT + static void *ns_lock_handle = NULL; __attribute__((weak)) enum tfm_status_e tfm_ns_interface_init(void) { - ns_lock_handle = os_wrapper_mutex_create(); + ns_lock_handle = os_wrapper_semaphore_create(MAX_SEMAPHORE_COUNT, + MAX_SEMAPHORE_COUNT, + NULL); if (!ns_lock_handle) { return TFM_ERROR_GENERIC; } @@ -30,10 +35,11 @@ int32_t tfm_ns_wait_for_s_cpu_ready(void) uint32_t tfm_ns_multi_core_lock_acquire(void) { - return os_wrapper_mutex_acquire(ns_lock_handle, OS_WRAPPER_WAIT_FOREVER); + return os_wrapper_semaphore_acquire(ns_lock_handle, + OS_WRAPPER_WAIT_FOREVER); } uint32_t tfm_ns_multi_core_lock_release(void) { - return os_wrapper_mutex_release(ns_lock_handle); + return os_wrapper_semaphore_release(ns_lock_handle); } |