📄 sys_sem.c
字号:
#include "syscfg.h"#ifdef __cplusplusextern "C"{#endif #include "sys/sys_pub.h"#include "aos.h"AOS_ASSERTFILE()AOS_INLINE U32 sys_sem_create( S8 name[AOS_NAME_LEN+1], U32 flags, U32 value, SYS_SEM_T *sem ){ U32 tmpflags; if((SYS_SEM_T *)NULL == sem) { return SYS_CALL_FAIL; } if(flags == AOS_FIFO) { tmpflags = SEM_Q_FIFO; } else if(flags == AOS_PRIORITY) { tmpflags = SEM_Q_PRIORITY; } else { return SYS_CALL_FAIL; } *sem = semCCreate(tmpflags,value); if( NULL == *sem ) { return SYS_OBJ_CREATE_FAIL; } (void)name; return AOS_SUCC;}AOS_INLINE U32 sys_sem_cancel(SYS_SEM_T *sem){ S32 result; if((SYS_SEM_T *)NULL == sem) { return SYS_CALL_FAIL; } result = semDelete(*sem); if(result != OK) { return SYS_CALL_FAIL; } return AOS_SUCC;}AOS_INLINE U32 sys_sem_wait( SYS_SEM_T *sem, U32 time_out ){ S32 result; S32 tick; if((SYS_SEM_T *)NULL == sem) { return SYS_CALL_FAIL; } if( 0 == time_out ) { tick = WAIT_FOREVER; } else { tick = (S32)(time_out*CONFIG_TICKS_PER_SECOND/1000); if(tick == 0 ) { tick = 1; } } result = semTake(*sem,tick); if(result != OK) { switch((S32)errno) { case S_intLib_NOT_ISR_CALLABLE: return SYS_CALL_FAIL; case S_objLib_OBJ_ID_ERROR: return SYS_OBJ_INVALID; case S_objLib_OBJ_UNAVAILABLE: return SYS_OBJ_UNAVAILABLE; case S_objLib_OBJ_TIMEOUT: return SYS_WAIT_TIMEOUT; default: return SYS_CALL_FAIL; } } return AOS_SUCC;}AOS_INLINE U32 sys_sem_trywait( SYS_SEM_T *sem ){ S32 result; if((SYS_SEM_T *)NULL == sem) { return SYS_CALL_FAIL; } result = semTake(*sem,NO_WAIT); if(result != AOS_SUCC) { switch((S32)errno) { case S_intLib_NOT_ISR_CALLABLE: return SYS_CALL_FAIL; case S_objLib_OBJ_ID_ERROR: return SYS_OBJ_INVALID; case S_objLib_OBJ_UNAVAILABLE: return SYS_OBJ_UNAVAILABLE; case S_objLib_OBJ_TIMEOUT: return SYS_WAIT_TIMEOUT; default: return SYS_CALL_FAIL; } } return AOS_SUCC;}AOS_INLINE U32 sys_sem_post( SYS_SEM_T *sem ){ S32 result; if((SYS_SEM_T *)NULL == sem) { return SYS_CALL_FAIL; } result = semGive(*sem); if(result != OK) { return SYS_CALL_FAIL; } return AOS_SUCC;}#ifdef __cplusplus}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -