📄 sys_que.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 + -