This is an automated email from the ASF dual-hosted git repository.

pnoltes pushed a commit to branch feature/cap_req_model_lib
in repository https://gitbox.apache.org/repos/asf/celix.git

commit 8aaed860dc4c259ffeba82212a3cbba0846ca509
Author: Pepijn Noltes <[email protected]>
AuthorDate: Thu Apr 6 15:55:00 2023 +0200

    Replace c11 tss usage with posix tss
---
 libs/rcm/src/celix_rcm_err.c | 27 ++++++++++++++++++---------
 1 file changed, 18 insertions(+), 9 deletions(-)

diff --git a/libs/rcm/src/celix_rcm_err.c b/libs/rcm/src/celix_rcm_err.c
index d98fdbbf..8938726e 100644
--- a/libs/rcm/src/celix_rcm_err.c
+++ b/libs/rcm/src/celix_rcm_err.c
@@ -18,16 +18,18 @@
  */
 
 #include <stdlib.h>
-#include <threads.h>
 #include <stdarg.h>
 #include <stdio.h>
+//#include <threads.h>
+#include <pthread.h>
 
 #include "celix_array_list.h"
 #include "celix_rcm_err_private.h"
 #include "celix_rcm_err.h"
 #include "celix_utils.h"
 
-static tss_t celix_rcm_tssErrorsKey;
+//static tss_t celix_rcm_tssErrorsKey;
+pthread_key_t celix_rcm_tssErrorsKey;
 
 static void celix_rcm_destroyTssErrors(void* data) {
     celix_array_list_t* errors = data;
@@ -41,16 +43,19 @@ static void celix_rcm_destroyTssErrors(void* data) {
 }
 
 __attribute__((constructor)) static void 
celix_rcm_initThreadSpecificStorageKey() {
-    tss_create(&celix_rcm_tssErrorsKey, celix_rcm_destroyTssErrors);
+    //tss_create(&celix_rcm_tssErrorsKey, celix_rcm_destroyTssErrors);
+    pthread_key_create(&celix_rcm_tssErrorsKey, celix_rcm_destroyTssErrors);
 }
 
 __attribute__((destructor)) static void 
celix_rcm_deinitThreadSpecificStorageKey() {
-    tss_delete(celix_rcm_tssErrorsKey);
+    //tss_delete(celix_rcm_tssErrorsKey);
+    pthread_key_delete(celix_rcm_tssErrorsKey);
 }
 
 char* celix_rcmErr_popLastError() {
     char* result = NULL;
-    celix_array_list_t* errors = tss_get(celix_rcm_tssErrorsKey);
+    //celix_array_list_t* errors = tss_get(celix_rcm_tssErrorsKey);
+    celix_array_list_t* errors = pthread_getspecific(celix_rcm_tssErrorsKey);
     if (errors != NULL && celix_arrayList_size(errors) > 0) {
         result = celix_arrayList_get(errors, 0);
         celix_arrayList_removeAt(errors, 0);
@@ -60,7 +65,8 @@ char* celix_rcmErr_popLastError() {
 
 int celix_rcmErr_getErrorCount() {
     int result = 0;
-    celix_array_list_t* errors = tss_get(celix_rcm_tssErrorsKey);
+    //celix_array_list_t* errors = tss_get(celix_rcm_tssErrorsKey);
+    celix_array_list_t* errors = pthread_getspecific(celix_rcm_tssErrorsKey);
     if (errors != NULL) {
         result = celix_arrayList_size(errors);
     }
@@ -68,7 +74,8 @@ int celix_rcmErr_getErrorCount() {
 }
 
 void celix_rcmErr_resetErrors() {
-    celix_array_list_t* errors = tss_get(celix_rcm_tssErrorsKey);
+    //celix_array_list_t* errors = tss_get(celix_rcm_tssErrorsKey);
+    celix_array_list_t* errors = pthread_getspecific(celix_rcm_tssErrorsKey);
     if (errors != NULL) {
         for (int i = 0; i < celix_arrayList_size(errors); ++i) {
             char* msg = celix_arrayList_get(errors, i);
@@ -79,10 +86,12 @@ void celix_rcmErr_resetErrors() {
 }
 
 static void celix_rcm_pushMsg(char* msg) {
-    celix_array_list_t* errors = tss_get(celix_rcm_tssErrorsKey);
+    //celix_array_list_t* errors = tss_get(celix_rcm_tssErrorsKey);
+    celix_array_list_t* errors = pthread_getspecific(celix_rcm_tssErrorsKey);
     if (errors == NULL) {
         errors = celix_arrayList_create();
-        tss_set(celix_rcm_tssErrorsKey, errors);
+        //tss_set(celix_rcm_tssErrorsKey, errors);
+        pthread_setspecific(celix_rcm_tssErrorsKey, errors);
     }
     if (errors != NULL) {
         celix_arrayList_add(errors, msg);

Reply via email to