📄 sys_sem.c
字号:
#include "syscfg.h"#ifdef __cplusplus#if __cplusplusextern "C"{#endif #endif #include "sys/sys_pub.h"#include "os/assert_pub.h"AOS_ASSERTFILE()AOS_INLINE U32 sys_sem_create( S8 name[AOS_NAME_LEN+1], U32 flags, U32 value, SYS_SEM_T *sem ){ AOS_ASSERT( (SYS_SEM_T *)NULL != sem ); if(sem == NULL) { return SYS_OBJ_CREATE_FAIL; } *sem = CreateSemaphore( NULL, (S32)value,2147483647,NULL ); if( NULL == *sem ) { return SYS_OBJ_CREATE_FAIL; } (void)name; (void)flags; return AOS_SUCC;}AOS_INLINE U32 sys_sem_cancel(SYS_SEM_T *sem){ AOS_ASSERT( (SYS_SEM_T *)NULL != sem ); if(sem == NULL) { return SYS_CALL_FAIL; } if( 0 == CloseHandle(*sem) ) { return SYS_CALL_FAIL; } return AOS_SUCC;}AOS_INLINE U32 sys_sem_wait( SYS_SEM_T *sem, U32 time_out ){ U32 result; AOS_ASSERT( (SYS_SEM_T *)NULL != sem ); if(sem == NULL) { return SYS_OBJ_INVALID; } if( 0 == time_out ) { time_out = INFINITE; } result = WaitForSingleObject( *sem, time_out ); if( WAIT_OBJECT_0 == result ) { result = AOS_SUCC; } else if( WAIT_TIMEOUT == result ) { result = SYS_WAIT_TIMEOUT; } else if( WAIT_FAILED == result ) { result = SYS_OBJ_INVALID; } else { result = SYS_CALL_FAIL; } return result;}AOS_INLINE U32 sys_sem_trywait( SYS_SEM_T *sem ){ U32 result; AOS_ASSERT( (SYS_SEM_T *)NULL != sem ); if(sem == NULL) { return SYS_OBJ_INVALID; } result = WaitForSingleObject( *sem, 0 ); if( WAIT_OBJECT_0 == result ) { result = AOS_SUCC; } else if( WAIT_TIMEOUT == result ) { result = SYS_WAIT_TIMEOUT; } else if( WAIT_FAILED == result ) { result = SYS_OBJ_INVALID; } else { result = SYS_CALL_FAIL; } return result;}AOS_INLINE U32 sys_sem_post( SYS_SEM_T *sem ){ AOS_ASSERT( (SYS_SEM_T *)NULL != sem ); if(sem == NULL) { return SYS_OBJ_INVALID; } if( 0 == ReleaseSemaphore( *sem, 1, NULL) ) { return SYS_CALL_FAIL; } return AOS_SUCC;}#ifdef __cplusplus#if __cplusplus}#endif #endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -