From 538cadbd02d9d9b01547570d8e4ede8e31fa7650 Mon Sep 17 00:00:00 2001 From: Petr Benes Date: Fri, 28 Jan 2011 18:47:01 +0100 Subject: [PATCH] Using plain POSIX instead of FOSA for thread specific data. --- src/executor.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/executor.c b/src/executor.c index 14977b6..f1a068d 100644 --- a/src/executor.c +++ b/src/executor.c @@ -58,14 +58,15 @@ #include "object.h" #include #include +#include extern UL_LOG_CUST(ulogd_forb_executor); -static int forb_executor_key = -1; +static pthread_key_t forb_executor_key = -1; int forb_executor_prepare() { - return fosa_key_create(&forb_executor_key); + return pthread_key_create(&forb_executor_key, NULL); } /** @@ -142,10 +143,9 @@ int forb_executor_run(forb_executor_t *executor) int ret; // setting pointer to executor as thread specific data - if ((ret = fosa_thread_set_specific_data(forb_executor_key, - fosa_thread_self(), executor))) + if ((ret = pthread_setspecific(forb_executor_key, executor))) goto ret; - + fosa_mutex_lock(&executor->mutex); while (1) { fosa_cond_wait(&executor->new_request_in_empty_list, @@ -200,11 +200,10 @@ error: */ int forb_get_current_executor(forb_executor_t **executor) { - int ret; - ret = fosa_thread_get_specific_data(forb_executor_key, - fosa_thread_self(), ((void *) executor)); + int ret = 0; + *executor = (void *) pthread_getspecific(forb_executor_key); - if (ret) - *executor = NULL; + if (!(*executor)) + ret = 1; return ret; } -- 2.39.2