-void xbt_os_thread_yield(void) {
- sched_yield();
-}
-/****** mutex related functions ******/
-typedef struct xbt_os_mutex_ {
- pthread_mutex_t m;
-} s_xbt_os_mutex_t;
-
-xbt_os_mutex_t xbt_os_mutex_init(void) {
- xbt_os_mutex_t res = xbt_new(s_xbt_os_mutex_t,1);
- int errcode;
-
- if ((errcode = pthread_mutex_init(&(res->m),NULL)))
- THROW1(system_error,errcode,"pthread_mutex_init() failed: %s",
- strerror(errcode));
-
- return res;
-}
-
-void xbt_os_mutex_lock(xbt_os_mutex_t mutex) {
- int errcode;
-
- if ((errcode=pthread_mutex_lock(&(mutex->m))))
- THROW2(system_error,errcode,"pthread_mutex_lock(%p) failed: %s",
- mutex, strerror(errcode));
-}
-
-void xbt_os_mutex_unlock(xbt_os_mutex_t mutex) {
- int errcode;
-
- if ((errcode=pthread_mutex_unlock(&(mutex->m))))
- THROW2(system_error,errcode,"pthread_mutex_unlock(%p) failed: %s",
- mutex, strerror(errcode));
-}
-
-void xbt_os_mutex_destroy(xbt_os_mutex_t mutex) {
- int errcode;
-
- if (!mutex) return;
-
- if ((errcode=pthread_mutex_destroy(&(mutex->m))))
- THROW2(system_error,errcode,"pthread_mutex_destroy(%p) failed: %s",
- mutex, strerror(errcode));
- free(mutex);
-}
-
-/***** condition related functions *****/
-typedef struct xbt_os_cond_ {
- pthread_cond_t c;
-} s_xbt_os_cond_t;
-
-xbt_os_cond_t xbt_os_cond_init(void) {
- xbt_os_cond_t res = xbt_new(s_xbt_os_cond_t,1);
- int errcode;
- if ((errcode=pthread_cond_init(&(res->c),NULL)))
- THROW1(system_error,errcode,"pthread_cond_init() failed: %s",
- strerror(errcode));
-
- return res;
-}
-
-void xbt_os_cond_wait(xbt_os_cond_t cond, xbt_os_mutex_t mutex) {
- int errcode;
- if ((errcode=pthread_cond_wait(&(cond->c),&(mutex->m))))
- THROW3(system_error,errcode,"pthread_cond_wait(%p,%p) failed: %s",
- cond,mutex, strerror(errcode));
-}
-
-void xbt_os_cond_signal(xbt_os_cond_t cond) {
- int errcode;
- if ((errcode=pthread_cond_signal(&(cond->c))))
- THROW2(system_error,errcode,"pthread_cond_signal(%p) failed: %s",
- cond, strerror(errcode));
-}
-
-void xbt_os_cond_broadcast(xbt_os_cond_t cond){
- int errcode;
- if ((errcode=pthread_cond_broadcast(&(cond->c))))
- THROW2(system_error,errcode,"pthread_cond_broadcast(%p) failed: %s",
- cond, strerror(errcode));
-}
-void xbt_os_cond_destroy(xbt_os_cond_t cond){
- int errcode;