1 #include <stdlib.h> 2 #include <hal_mutex.h> 3 4 #define PEND_TICK_MAX (0x7FFFFFFF - 1) 5 #define HAL_MUTEX_OK 0 6 hal_mutex_create(void)7hal_mutex_t hal_mutex_create(void) 8 { 9 return rt_mutex_create("hal_mutex", RT_IPC_FLAG_FIFO); 10 } 11 hal_mutex_delete(hal_mutex_t mutex)12int hal_mutex_delete(hal_mutex_t mutex) 13 { 14 if (!mutex) 15 { 16 return -1; 17 } 18 return rt_mutex_delete(mutex); 19 } 20 hal_mutex_lock(hal_mutex_t mutex)21int hal_mutex_lock(hal_mutex_t mutex) 22 { 23 if (!mutex) 24 { 25 return -1; 26 } 27 return rt_mutex_take(mutex, PEND_TICK_MAX); 28 } 29 hal_mutex_unlock(hal_mutex_t mutex)30int hal_mutex_unlock(hal_mutex_t mutex) 31 { 32 if (!mutex) 33 { 34 return -1; 35 } 36 return rt_mutex_release(mutex); 37 } 38 hal_mutex_trylock(hal_mutex_t mutex)39int hal_mutex_trylock(hal_mutex_t mutex) 40 { 41 if (!mutex) 42 { 43 return -1; 44 } 45 if (rt_mutex_take(mutex, 0) == 0) 46 { 47 return 0; 48 } 49 return -2; 50 } 51 hal_mutex_timedwait(hal_mutex_t mutex,int ticks)52int hal_mutex_timedwait(hal_mutex_t mutex, int ticks) 53 { 54 if (!mutex) 55 { 56 return -1; 57 } 58 return rt_mutex_take(mutex, ticks); 59 } 60