文档详情

《嵌入式操作系统原理与面向任务程序设计》课件第四讲M.ppt

发布:2024-12-18约9.91万字共77页下载文档
文本预览下载声明

****************************************************************************4.5.4消息邮箱请求函数1void*OSMboxPend(OS_EVENT*pevent,INT16Utimeout,INT8U*perr)2{3void*pmsg;4#ifOS_CRITICAL_METHOD==3/*AllocatestorageforCPUstatusregister*/5OS_CPU_SRcpu_sr=0;6#endif78#ifOS_ARG_CHK_EN09if(perr==(INT8U*)0){/*Validateperr*/10return((void*)0);11}12if(pevent==(OS_EVENT*)0){/*Validatepevent*/13*perr=OS_ERR_PEVENT_NULL;14return((void*)0);15}16#endif17if(pevent-OSEventType!=OS_EVENT_TYPE_MBOX){18*perr=OS_ERR_EVENT_TYPE;19return((void*)0);20}21if(OSIntNesting0){22*perr=OS_ERR_PEND_ISR;23return((void*)0);24}25if(OSLockNesting0){26*perr=OS_ERR_PEND_LOCKED;27return((void*)0);28}29OS_ENTER_CRITICAL();30pmsg=pevent-OSEventPtr;31if(pmsg!=(void*)0){32pevent-OSEventPtr=(void*)0;33OS_EXIT_CRITICAL();34*perr=OS_ERR_NONE;35return(pmsg);36}37OSTCBCur-OSTCBStat|=OS_STAT_MBOX;38OSTCBCur-OSTCBStatPend=OS_STAT_PEND_OK;39OSTCBCur-OSTCBDly=timeout;40OS_EventTaskWait(pevent);41OS_EXIT_CRITICAL();42OS_Sched();43OS_ENTER_CRITICAL();44switch(OSTCBCur-OSTCBStatPend){45caseOS_STAT_PEND_OK:46pmsg=OSTCBCur-OSTCBMsg;47*perr=OS_ERR_NONE;48

显示全部
相似文档