static int xbt_thread_create_wrapper(int argc, char *argv[])
{
+ smx_process_t self = SIMIX_process_self();
xbt_thread_t t =
- (xbt_thread_t) SIMIX_process_self_get_data();
- SIMIX_req_process_set_data(SIMIX_process_self(), t->father_data);
- (*t->code) (t->userparam);
+ (xbt_thread_t) SIMIX_process_self_get_data(self);
+ SIMIX_req_process_set_data(self, t->father_data);
+ t->code(t->userparam);
if (t->joinable) {
t->done = 1;
xbt_mutex_acquire(t->mutex);
res->name = xbt_strdup(name);
res->userparam = param;
res->code = code;
- res->father_data = SIMIX_process_self_get_data();
+ res->father_data = SIMIX_process_self_get_data(SIMIX_process_self());
/* char*name = bprintf("%s#%p",SIMIX_process_self_get_name(), param); */
- res->s_process = SIMIX_req_process_create(name,
- xbt_thread_create_wrapper, res,
- SIMIX_host_self_get_name(), 0, NULL,
- /*props */ NULL);
+ SIMIX_req_process_create(&res->s_process, name,
+ xbt_thread_create_wrapper, res,
+ SIMIX_host_self_get_name(), 0, NULL,
+ /*props */ NULL);
res->joinable = joinable;
res->done = 0;
res->cond = xbt_cond_init();
void xbt_thread_join(xbt_thread_t thread)
{
xbt_mutex_acquire(thread->mutex);
- xbt_assert1(thread->joinable,
+ xbt_assert(thread->joinable,
"Cannot join on %p: wasn't created joinable", thread);
if (!thread->done) {
xbt_cond_wait(thread->cond, thread->mutex);
xbt_thread_t xbt_thread_self(void)
{
- return SIMIX_process_self_get_data();
+ return SIMIX_process_self_get_data(SIMIX_process_self());
}
void xbt_thread_yield(void)
{
- SIMIX_process_yield();
+ SIMIX_process_yield(SIMIX_process_self());
}
/****** mutex related functions ******/