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

📄 sys_que.c

📁 abstract rtos
💻 C
字号:
#include "syscfg.h"#ifdef __cplusplusextern "C"{#endif #include "sys/sys_pub.h"#include "aos.h"U32 sys_mq_create( S8 name[AOS_NAME_LEN+1], U32 flags, U32 maxmsg, U32 msgsize, SYS_MQD_T*mqp ){    SYS_MQD_T mqdes;    U32       tmpflags=MSG_Q_FIFO;        if( (flags != AOS_FIFO) && (flags != AOS_PRIORITY) )    {        return SYS_CALL_FAIL;    }        if(flags == AOS_FIFO)    {        tmpflags = MSG_Q_FIFO;    }    else if(flags == AOS_PRIORITY)    {        tmpflags = MSG_Q_PRIORITY;    }    if( NULL == mqp )    {        return SYS_CALL_FAIL;    }        mqdes = msgQCreate(maxmsg,msgsize,tmpflags);    if(mqdes == NULL)    {        *mqp = (SYS_MQD_T)NULL;        return SYS_OBJ_CREATE_FAIL;    }    (void)name;        *mqp = mqdes;        return AOS_SUCC;}U32 sys_mq_cancel( SYS_MQD_T mqdes ){    S32 result;        if(NULL == mqdes)    {        return SYS_OBJ_INVALID;    }    result = msgQDelete(mqdes);    if(OK != result)    {        return SYS_CALL_FAIL;    }    return AOS_SUCC;}U32 sys_mq_send( SYS_MQD_T mqdes, U8 *ptr, U32 length, U32 timeout ){    S32 tick,result;        if(NULL == mqdes)    {        return SYS_OBJ_INVALID;    }    if(ptr == NULL)    {        return SYS_OBJ_INVALID;    }    if(timeout == 0)	{	    tick = WAIT_FOREVER;	}	else	{	    tick = (S32)(timeout*CONFIG_TICKS_PER_SECOND/1000);        if(tick == 0 )        {            tick = 1;        }	}	result = msgQSend(mqdes,ptr,length,tick,MSG_PRI_NORMAL);    if(result != OK)    {        switch((S32)errno)        {            case S_objLib_OBJ_TIMEOUT:                result = SYS_WAIT_TIMEOUT;                break;            case S_objLib_OBJ_UNAVAILABLE:                result = SYS_OBJ_UNAVAILABLE;                break;            case S_objLib_OBJ_ID_ERROR:                result = SYS_OBJ_INVALID;                break;            default:                result = SYS_CALL_FAIL;                break;        }        return (U32)result;    }    return AOS_SUCC;}U32 sys_mq_receive( SYS_MQD_T mqdes , U8 *ptr, U32 length, U32 timeout ){    S32 result,tick;        if(NULL == mqdes)    {        return U32_BUTT;    }    if(timeout == 0)	{	    tick = WAIT_FOREVER;	}	else	{	    tick = (S32)(timeout*CONFIG_TICKS_PER_SECOND/1000);        if(tick == 0 )        {            tick = 1;        }	}	result = msgQReceive(mqdes,ptr,length,tick);    if(result == ERROR)    {        return U32_BUTT;    }        return (U32)result;    }U32 sys_mq_trysend( SYS_MQD_T mqdes, U8 *ptr, U32 length ){    S32 result;        if(NULL == mqdes)    {        return SYS_OBJ_INVALID;    }    if(ptr == NULL)    {        return SYS_OBJ_INVALID;    }	result = msgQSend(mqdes,ptr,length,NO_WAIT,MSG_PRI_NORMAL);    if(result != OK)    {        switch((S32)errno)        {            case S_objLib_OBJ_TIMEOUT:                result = SYS_WAIT_TIMEOUT;                break;            case S_objLib_OBJ_UNAVAILABLE:                result = SYS_OBJ_UNAVAILABLE;                break;            case S_objLib_OBJ_ID_ERROR:                result = SYS_OBJ_INVALID;                break;            default:                result = SYS_CALL_FAIL;                break;        }        return (U32)result;    }        return AOS_SUCC;}U32 sys_mq_tryreceive( SYS_MQD_T mqdes , U8 *ptr, U32 length ){    S32 result;        if(NULL == mqdes)    {        return U32_BUTT;    }	result = msgQReceive(mqdes,ptr,length,NO_WAIT);    if(result == ERROR)    {        return U32_BUTT;    }        return (U32)result;}U32 sys_mq_curmsgs( SYS_MQD_T mqdes ){    S32 ret;	    if(NULL == mqdes)    {        return U32_BUTT;    }    ret = msgQNumMsgs(mqdes);    if(ret == ERROR)    {        return U32_BUTT;    }    return (U32)ret;}U32 sys_mq_info( SYS_MQD_T mqdes, U32 *pFlags, U32 *pulMaxMsg, U32 *pulMsgSize){    S32 ret;    MSG_Q_INFO msginfo;	    if(NULL == mqdes)    {        return AOS_FAIL;    }    if((pFlags == (U32 *)NULL) ||       (pulMaxMsg == (U32 *)NULL) ||       (pulMsgSize == (U32 *)NULL))    {        return AOS_FAIL;    }    ret = msgQInfoGet(mqdes,&msginfo);    if(ret == ERROR)    {        return AOS_FAIL;    }    *pFlags     = (U32)msginfo.options;    *pulMaxMsg  = (U32)msginfo.maxMsgs;    *pulMsgSize = (U32)msginfo.maxMsgLength;        return AOS_SUCC;}#ifdef __cplusplus}#endif 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -