--- a/targets/Linux/plc_Linux_main.c Fri Dec 16 13:46:51 2022 +0100
+++ b/targets/Linux/plc_Linux_main.c Tue Feb 14 12:10:35 2023 +0100
@@ -7,6 +7,7 @@
@@ -237,6 +238,7 @@
struct RT_to_nRT_signal_s {
pthread_mutex_t WakeCondLock;
@@ -257,6 +259,7 @@
_LogAndReturnNull("Failed allocating memory for RT_to_nRT signal");
pthread_cond_init(&sig->WakeCond, NULL);
pthread_mutex_init(&sig->WakeCondLock, NULL);
@@ -266,10 +269,10 @@
void delete_RT_to_nRT_signal(void* handle){
RT_to_nRT_signal_t *sig = (RT_to_nRT_signal_t*)handle;
- pthread_cond_destroy(&sig->WakeCond);
- pthread_mutex_destroy(&sig->WakeCondLock);
+ pthread_mutex_lock(&sig->WakeCondLock); + pthread_cond_signal(&sig->WakeCond); + pthread_mutex_unlock(&sig->WakeCondLock); int wait_RT_to_nRT_signal(void* handle){
@@ -277,7 +280,14 @@
RT_to_nRT_signal_t *sig = (RT_to_nRT_signal_t*)handle;
pthread_mutex_lock(&sig->WakeCondLock);
ret = pthread_cond_wait(&sig->WakeCond, &sig->WakeCondLock);
+ if(!sig->used) ret = -EINVAL; pthread_mutex_unlock(&sig->WakeCondLock);
+ pthread_cond_destroy(&sig->WakeCond); + pthread_mutex_destroy(&sig->WakeCondLock);