int rtos_mutex_unlock( rt_mutex_t* m) { CHK_LXRT_CALL(); CHK_LXRT_PTR(m->sem); return rt_sem_signal(m->sem); }
int rtos_mutex_lock( rt_mutex_t* m) { CHK_LXRT_CALL(); CHK_LXRT_PTR(m->sem); return rt_sem_wait(m->sem); }
int rtos_mutex_trylock( rt_mutex_t* m) { CHK_LXRT_CALL(); CHK_LXRT_PTR(m->sem); return rt_sem_wait_if(m->sem) > 0 ? 0 : -EAGAIN; }
int rtos_mutex_rec_destroy(rt_mutex_t* m ) { CHK_LXRT_CALL(); CHK_LXRT_PTR(m->sem); return rt_sem_delete(m->sem); }
int rtos_mutex_rec_lock_until( rt_rec_mutex_t* m, NANO_TIME abs_time) { CHK_LXRT_CALL(); return rt_sem_wait_until(m->sem, nano2count(abs_time)) < SEM_TIMOUT ? 0 : -EAGAIN; }
int rtos_sem_value(rt_sem_t* m ) { CHK_LXRT_CALL(); return rt_sem_count(m->sem); }
int rtos_mutex_init(rt_mutex_t* m) { CHK_LXRT_CALL(); m->sem = rt_typed_sem_init( rt_get_name(0),1, BIN_SEM | PRIO_Q); return m->sem == 0 ? -1 : 0; }
int rtos_sem_signal(rt_sem_t* m ) { CHK_LXRT_CALL(); return rt_sem_signal(m->sem); }
int rtos_sem_trywait(rt_sem_t* m ) { CHK_LXRT_CALL(); return rt_sem_wait_if(m->sem); }
int rtos_sem_destroy(rt_sem_t* m ) { CHK_LXRT_CALL(); return rt_sem_delete(m->sem); }
int rtos_nanosleep(const TIME_SPEC *rqtp, TIME_SPEC *rmtp) { CHK_LXRT_CALL(); nanosleep(rqtp,rmtp); // rtai 24.1.9 return 0; }
int rtos_cond_broadcast(rt_cond_t *cond) { CHK_LXRT_CALL(); return rt_cond_broadcast(cond->cond); }
int rtos_cond_destroy(rt_cond_t *cond) { CHK_LXRT_CALL(); return rt_cond_delete(cond->cond); }
int rtos_cond_init(rt_cond_t *cond) { CHK_LXRT_CALL(); cond->cond = rt_cond_init(0); return cond->cond == 0 ? -1 : 0; }