/*
*???м????????????
*?ú????????????ж?????У??????????ж????????
*/
OS_MSG OSQPend(OS_Q *q?? uint32 timeout)
{
 uint32  index;
 uint32  cpu_sr = 0;
 OS_MSG  msg;
 for (index = 0;index < timeout+1;index++)
 {
  OS_ENTER_CRITICAL();
  if (q->front==q->rear)
  {
   OS_EXIT_CRITICAL();
   OSTimeDly(1);
  }
  else
  {
   msg=q->msgQueue[q->front];
   /*???????????????0??????????*/
   q->front=(q->front+1)%MAX_MSG_NUMBER;
   OS_EXIT_CRITICAL();
   return msg;
  }
 }
 OS_EXIT_CRITICAL();
 return NULL ;
}
 
/*
*????????????????????ж??????
*/
OS_MSG OSQGet(OS_Q *q)
{
 OS_MSG msg;
 uint32  cpu_sr = 0;
 OS_ENTER_CRITICAL();
 if (q->front==q->rear)
 {
  OS_EXIT_CRITICAL();
  return NULL;
 }
 else
 {
  msg=q->msgQueue[q->front];
  q->front=(q->front+1)%MAX_MSG_NUMBER;
  OS_EXIT_CRITICAL();
  return msg;
 }
}
?????????????????????

?????????????????????????

???????????????

???????????????“????”??????????????????????У??????????

???????“????”????????????????????????

?????????????????????????????????£?

??????????????С?

????????????????У????????????????????????????????У?

????????????????????????????????е???????????????????????ж????

?????????????????????У????????е???????????????????????С?

?????????????е?????????

????????????????????

???????????????????????????????У?

??????????????????????????????????У?

?????????????????????????????????

???????????????????????

????????????????????????deadline???????????

????????????????????????????????????????

??????????????????????????????????

??????????????£?

?????????????????A??????????????????????C??????

????????????C?????????????B?????????

????????????B?????У???A?????????????????????????У?

?????????????????????A????????????

??????????????????????????????????????