⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sys_sem.c

📁 abstract rtos
💻 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 + -