- if ((errcode = pthread_create(&(stub->res->t), NULL, wrapper_start_routine, stub)))
- THROW0(system_error,errcode, "pthread_create failed");
-
- return stub->res;
+ if ((errcode = pthread_create(&(res_thread->t), NULL, wrapper_start_routine, res_thread)))
+ THROW1(system_error,errcode, "pthread_create failed: %s",strerror(errcode));
+
+ return res_thread;
+}
+
+void
+xbt_thread_join(xbt_thread_t thread,void ** thread_return) {
+
+ int errcode;
+
+ if ((errcode = pthread_join(thread->t,thread_return)))
+ THROW1(system_error,errcode, "pthread_join failed: %s",
+ strerror(errcode));
+ free(thread);