summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
6634567)
This was done to avoid race conditions which causes errors in code.
Unfortunately this change does not help since FOSA is broken and we will
better use plain POSIX here.
extern UL_LOG_CUST(ulogd_forb_executor);
extern UL_LOG_CUST(ulogd_forb_executor);
-int forb_executor_key = -1;
+static int forb_executor_key = -1;
+
+int forb_executor_prepare()
+{
+ return fosa_key_create(&forb_executor_key);
+}
/**
* Initializes executor.
/**
* Initializes executor.
int forb_executor_run(forb_executor_t *executor)
{
int ret;
int forb_executor_run(forb_executor_t *executor)
{
int ret;
- // for thread specific data testing
-#ifdef DEBUG_EXECUTOR
- forb_executor_t *executor_test;
-#endif
-
- // initializing thread specific data (FIXME: maybe should be somewhere else)
- if (forb_executor_key == -1) {
- if ((ret = fosa_key_create(&forb_executor_key)))
- goto ret;
- }
// setting pointer to executor as thread specific data
if ((ret = fosa_thread_set_specific_data(forb_executor_key,
// setting pointer to executor as thread specific data
if ((ret = fosa_thread_set_specific_data(forb_executor_key,
- fosa_thread_self(), executor)))
+ fosa_thread_self(), executor)))
-
-#ifdef DEBUG_EXECUTOR
- printf("Executor: current executor saved: %p\n", executor);
- forb_get_current_executor(&executor_test);
- printf("Executor: current executor loaded: %p\n", executor_test);
-#endif
-
fosa_mutex_lock(&executor->mutex);
while (1) {
fosa_cond_wait(&executor->new_request_in_empty_list,
fosa_mutex_lock(&executor->mutex);
while (1) {
fosa_cond_wait(&executor->new_request_in_empty_list,
+int forb_executor_prepare(void);
int forb_executor_init(forb_executor_t *executor);
void forb_executor_destroy(forb_executor_t *executor);
int forb_executor_register_object(forb_executor_t *executor, forb_object obj);
int forb_executor_init(forb_executor_t *executor);
void forb_executor_destroy(forb_executor_t *executor);
int forb_executor_register_object(forb_executor_t *executor, forb_object obj);
+ forb_executor_prepare();
+
orb = forb_forb_orb_new(NULL, &forb_implementation, forb);
if (!orb) goto err2;
/* Server ID must be assigned manualy */
orb = forb_forb_orb_new(NULL, &forb_implementation, forb);
if (!orb) goto err2;
/* Server ID must be assigned manualy */