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);
