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

📄 sys_sem.c

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