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); }
static void task_mutex_opr_entry(void *arg) { kstat_t ret; krhino_mutex_lock(test_mutex, RHINO_WAIT_FOREVER); while (notify_flag != 0x5a) { krhino_task_sleep(5); } ret = krhino_mutex_unlock(test_mutex); if (ret == RHINO_SUCCESS) { test_case_success++; PRINT_RESULT(MODULE_NAME, PASS); } else { test_case_fail++; PRINT_RESULT(MODULE_NAME, FAIL); } next_test_case_notify(); ret = krhino_mutex_dyn_del(test_mutex); if (ret != RHINO_SUCCESS) { test_case_fail++; PRINT_RESULT(MODULE_NAME, FAIL); } krhino_task_dyn_del(krhino_cur_task_get()); }
OSStatus mico_rtos_lock_mutex( mico_mutex_t* mutex ) { kstat_t ret; ret = krhino_mutex_lock(*((kmutex_t **)mutex), RHINO_WAIT_FOREVER); if (ret == RHINO_SUCCESS) { return kNoErr; } return kGeneralErr; }
A_STATUS a_mutex_acquire(A_MUTEX_T *pMutex) { assert(pMutex); if (krhino_mutex_lock(pMutex, RHINO_WAIT_FOREVER) == RHINO_SUCCESS) { return A_OK; } else { return A_ERROR; } }