[N4C] Make N4C's register/unregister() use its own mutex
authorDongju Chae <dongju.chae@samsung.com>
Wed, 17 Jul 2019 06:42:13 +0000 (15:42 +0900)
committer함명주/On-Device Lab(SR)/Principal Engineer/삼성전자 <myungjoo.ham@samsung.com>
Thu, 18 Jul 2019 10:51:16 +0000 (19:51 +0900)
This commit changes N4C to use its own mutex in register/unregister()

Signed-off-by: Dongju Chae <dongju.chae@samsung.com>
core/npu-engine/src/ne-inf.c

index 78f305b..b26f236 100644 (file)
@@ -20,6 +20,7 @@
 #include "ne-inputservice.h"
 
 static inputservice *inputservices[N4_OPS_END] = {0};
+static pthread_mutex_t n40_mutex = PTHREAD_MUTEX_INITIALIZER;
 
 /**
  * @brief Return inputservice (N4x) after checks;
@@ -117,18 +118,16 @@ int n4_dataReady(buffer *buffer) {
  * @brief Register the input service implementation for N4C. For more detail, refer to N40 header.
  */
 int n40_register_input_service (n4_opmode op, inputservice *srv) {
-  pthread_mutex_t *lock;
-
   if (op < 0 || op >= N4_OPS_END)
     return -EINVAL;
 
   if (inputservices[op] != NULL)
     return -EINVAL;
 
-  lock = &inputservices[op]->mutex;
-  pthread_mutex_lock(lock);
+  pthread_mutex_lock(&n40_mutex);
   inputservices[op] = srv;
-  pthread_mutex_unlock(lock);
+  pthread_mutex_unlock(&n40_mutex);
+
   if (!srv->initialized)
     return -EINVAL;
 
@@ -142,16 +141,13 @@ int n40_register_input_service (n4_opmode op, inputservice *srv) {
  * @brief Unregister the input service implementation. For more detail, refer to N40 header.
  */
 void n40_unregister_input_service (n4_opmode op) {
-  pthread_mutex_t *lock;
-
   assert (op >= 0 && op < N4_OPS_END);
   assert (inputservices[op] != NULL);
 
   /* Wait for others if it is locked */
-  lock = &inputservices[op]->mutex;
-  pthread_mutex_lock(lock);
+  pthread_mutex_lock(&n40_mutex);
   inputservices[op] = NULL;
-  pthread_mutex_unlock(lock);
+  pthread_mutex_unlock(&n40_mutex);
 
   /* The caller (N4x) may destroy now... */
 }