int aos_timer_change(aos_timer_t *timer, int ms) { int ret; if (timer == NULL) { return -EINVAL; } ret = krhino_timer_change(timer->hdl, MS2TICK(ms), MS2TICK(ms)); if (ret == RHINO_SUCCESS) { return 0; } ERRNO_MAPPING(ret); }
int aos_event_get ( aos_event_t *event, unsigned int flags, unsigned char opt, unsigned int *actl_flags, unsigned int timeout ) { kstat_t ret; if (event == NULL) { return -EINVAL; } if (timeout == AOS_WAIT_FOREVER) { ret = krhino_event_get(event->hdl, flags, opt, actl_flags, RHINO_WAIT_FOREVER); } else { ret = krhino_event_get(event->hdl, flags, opt, actl_flags, MS2TICK(timeout)); } if (ret == RHINO_SUCCESS) { return 0; } ERRNO_MAPPING(ret); }
int aos_mutex_lock(aos_mutex_t *mutex, unsigned int timeout) { kstat_t ret; if (mutex == NULL) { return -EINVAL; } if (timeout == AOS_WAIT_FOREVER) { ret = krhino_mutex_lock(mutex->hdl, RHINO_WAIT_FOREVER); } else { ret = krhino_mutex_lock(mutex->hdl, MS2TICK(timeout)); } /* rhino allow nested */ if (ret == RHINO_MUTEX_OWNER_NESTED) { ret = RHINO_SUCCESS; } if (ret == RHINO_SUCCESS) { return 0; } ERRNO_MAPPING(ret); }
PRIVATE s32 coretimer_init() { /* core timer */ writel(CORETMLOAD, MS2TICK(1000/OS_HZ)); /* 23-bit counter & irq enable & timer enable */ writel(CORETMCTRL, 0x1 << 1 | 0x1 << 5 | 0x1 << 7); request_irq(IRQ_CORE_TIMER, coretimer_irq_handler); enable_irq(IRQ_CORE_TIMER); return 0; }
int aos_queue_recv(aos_queue_t *queue, unsigned int ms, void *msg, unsigned int *size) { int ret; if (queue == NULL) { return -EINVAL; } ret = krhino_buf_queue_recv(queue->hdl, MS2TICK(ms), msg, size); if (ret == RHINO_SUCCESS) { return 0; } ERRNO_MAPPING(ret); }
int aos_sem_wait(aos_sem_t *sem, unsigned int timeout) { kstat_t ret; if (sem == NULL) { return -EINVAL; } if (timeout == AOS_WAIT_FOREVER) { ret = krhino_sem_take(sem->hdl, RHINO_WAIT_FOREVER); } else { ret = krhino_sem_take(sem->hdl, MS2TICK(timeout)); } if (ret == RHINO_SUCCESS) { return 0; } ERRNO_MAPPING(ret); }
int aos_work_init(aos_work_t *work, void (*fn)(void *), void *arg, int dly) { kstat_t ret; kwork_t *w; if (work == NULL) { return -EINVAL; } w = aos_malloc(sizeof(kwork_t)); if (w == NULL) { return -ENOMEM; } ret = krhino_work_init(w, fn, arg, MS2TICK(dly)); if (ret != RHINO_SUCCESS) { aos_free(w); ERRNO_MAPPING(ret); } work->hdl = w; return 0; }
void aos_msleep(int ms) { krhino_task_sleep(MS2TICK(ms)); }
int aos_timer_new_ext(aos_timer_t *timer, void (*fn)(void *, void *), void *arg, int ms, int repeat, unsigned char auto_run) { kstat_t ret; if (timer == NULL) { return -EINVAL; } if (repeat == 0) { ret = krhino_timer_dyn_create(((ktimer_t **)(&timer->hdl)), "AOS", (timer_cb_t)fn, MS2TICK(ms), 0, arg, auto_run); } else { ret = krhino_timer_dyn_create(((ktimer_t **)(&timer->hdl)), "AOS", (timer_cb_t)fn, MS2TICK(ms), MS2TICK(ms), arg, auto_run); } if (ret != RHINO_SUCCESS) { ERRNO_MAPPING(ret); } return 0; }