Browse Source

feat(multithreading): Adding new macro for assertions and rename UA_LOCK_RELEASE to UA_LOCK_DESTROY

Ubuntu 5 years ago
parent
commit
30c8b7d92c

+ 2 - 2
arch/eCos/ua_architecture.h

@@ -90,10 +90,10 @@ int gethostname_ecos(char* name, size_t len);
 #define UA_LOCK_TYPE(mutexName)
 #define UA_LOCK_TYPE_POINTER(mutexName)
 #define UA_LOCK_INIT(mutexName)
-#define UA_LOCK_RELEASE(mutexName)
+#define UA_LOCK_DESTROY(mutexName)
 #define UA_LOCK(mutexName)
 #define UA_UNLOCK(mutexName)
-#define UA_LOCK_SWITCH(currentMutex, newMutex)
+#define UA_LOCK_ASSERT(mutexName, num)
 #endif
 
 #include <open62541/architecture_functions.h>

+ 2 - 2
arch/freertosLWIP/ua_architecture.h

@@ -21,10 +21,10 @@
 #define UA_LOCK_TYPE(mutexName)
 #define UA_LOCK_TYPE_POINTER(mutexName)
 #define UA_LOCK_INIT(mutexName)
-#define UA_LOCK_RELEASE(mutexName)
+#define UA_LOCK_DESTROY(mutexName)
 #define UA_LOCK(mutexName)
 #define UA_UNLOCK(mutexName)
-#define UA_LOCK_SWITCH(currentMutex, newMutex)
+#define UA_LOCK_ASSERT(mutexName, num)
 #endif
 
 #include <open62541/architecture_functions.h>

+ 4 - 5
arch/posix/ua_architecture.h

@@ -157,7 +157,7 @@ extern void * (*UA_globalRealloc)(void *ptr, size_t size);
                                         pthread_mutexattr_settype(&mutexName##_attr, PTHREAD_MUTEX_RECURSIVE); \
                                         pthread_mutex_init(&mutexName, &mutexName##_attr); \
                                         mutexName##Counter = 0;
-#define UA_LOCK_RELEASE(mutexName) pthread_mutex_destroy(&mutexName); \
+#define UA_LOCK_DESTROY(mutexName) pthread_mutex_destroy(&mutexName); \
                                    pthread_mutexattr_destroy(&mutexName##_attr);
 
 #define UA_LOCK(mutexName) pthread_mutex_lock(&mutexName); \
@@ -165,16 +165,15 @@ extern void * (*UA_globalRealloc)(void *ptr, size_t size);
 
 #define UA_UNLOCK(mutexName) UA_assert(--(mutexName##Counter) == 0); \
                              pthread_mutex_unlock(&mutexName);
-#define UA_LOCK_SWITCH(currentMutex, newMutex)  UA_UNLOCK(currentMutex) \
-                                                UA_LOCK(newMutex)
+#define UA_LOCK_ASSERT(mutexName, num) UA_assert(mutexName##Counter == num);
 #else
 #define UA_LOCK_TYPE_NAME
 #define UA_LOCK_TYPE(mutexName)
 #define UA_LOCK_INIT(mutexName)
-#define UA_LOCK_RELEASE(mutexName)
+#define UA_LOCK_DESTROY(mutexName)
 #define UA_LOCK(mutexName)
 #define UA_UNLOCK(mutexName)
-#define UA_LOCK_SWITCH(currentMutex, newMutex)
+#define UA_LOCK_ASSERT(mutexName, num)
 #endif
 
 #include <open62541/architecture_functions.h>

+ 2 - 2
arch/vxworks/ua_architecture.h

@@ -116,10 +116,10 @@
 #define UA_LOCK_TYPE(mutexName)
 #define UA_LOCK_TYPE_POINTER(mutexName)
 #define UA_LOCK_INIT(mutexName)
-#define UA_LOCK_RELEASE(mutexName)
+#define UA_LOCK_DESTROY(mutexName)
 #define UA_LOCK(mutexName)
 #define UA_UNLOCK(mutexName)
-#define UA_LOCK_SWITCH(currentMutex, newMutex)
+#define UA_LOCK_ASSERT(mutexName, num)
 #endif
 
 #include <open62541/architecture_functions.h>

+ 1 - 2
arch/wec7/ua_architecture.h

@@ -144,10 +144,9 @@ char *strerror(int errnum);
 #define UA_LOCK_TYPE(mutexName)
 #define UA_LOCK_TYPE_POINTER(mutexName)
 #define UA_LOCK_INIT(mutexName)
-#define UA_LOCK_RELEASE(mutexName)
+#define UA_LOCK_DESTROY(mutexName)
 #define UA_LOCK(mutexName)
 #define UA_UNLOCK(mutexName)
-#define UA_LOCK_SWITCH(currentMutex, newMutex)
 #endif
 
 #include <open62541/architecture_functions.h>

+ 4 - 5
arch/win32/ua_architecture.h

@@ -149,22 +149,21 @@
                                 int mutexName##Counter;
 #define UA_LOCK_INIT(mutexName) InitializeCriticalSection(&mutexName); \
                                 mutexName##Counter = 0;;
-#define UA_LOCK_RELEASE(mutexName) DeleteCriticalSection(&mutexName);
+#define UA_LOCK_DESTROY(mutexName) DeleteCriticalSection(&mutexName);
 #define UA_LOCK(mutexName) EnterCriticalSection(&mutexName); \
                            UA_assert(++(mutexName##Counter) == 1);
 #define UA_UNLOCK(mutexName) UA_assert(--(mutexName##Counter) == 0); \
                              LeaveCriticalSection(&mutexName);
-#define UA_LOCK_SWITCH(currentMutex, newMutex)  UA_UNLOCK(currentMutex) \
-                                                        UA_LOCK(newMutex)
+#define UA_LOCK_ASSERT(mutexName, num) UA_assert(mutexName##Counter == num);
 #else
 #define UA_LOCK_TYPE_NAME
 #define UA_LOCK_TYPE(mutexName)
 #define UA_LOCK_TYPE_POINTER(mutexName)
 #define UA_LOCK_INIT(mutexName)
-#define UA_LOCK_RELEASE(mutexName)
+#define UA_LOCK_DESTROY(mutexName)
 #define UA_LOCK(mutexName)
 #define UA_UNLOCK(mutexName)
-#define UA_LOCK_SWITCH(currentMutex, newMutex)
+#define UA_LOCK_ASSERT(mutexName, num)
 #endif
 
 #include <open62541/architecture_functions.h>

+ 1 - 1
plugins/ua_nodestore_default.c

@@ -348,7 +348,7 @@ UA_Nodestore_delete(void *nsCtx) {
 
     NodeMap *ns = (NodeMap*)nsCtx;
 #if UA_MULTITHREADING >= 100
-    UA_LOCK_RELEASE(ns->lock);
+    UA_LOCK_DESTROY(ns->lock);
 #endif
     ZIP_ITER(NodeTree, &ns->root, deleteNodeVisitor, NULL);
     UA_free(ns);

+ 2 - 2
src/server/ua_server.c

@@ -176,8 +176,8 @@ void UA_Server_delete(UA_Server *server) {
 #endif
 
 #if UA_MULTITHREADING >= 100
-    UA_LOCK_RELEASE(server->networkMutex)
-    UA_LOCK_RELEASE(server->serviceMutex)
+    UA_LOCK_DESTROY(server->networkMutex)
+    UA_LOCK_DESTROY(server->serviceMutex)
 #endif
 
     /* Clean up the Admin Session */