Mailbox

공부기록·2023년 10월 14일
0
post-thumbnail

관련함수

예시 : mailbox에서 숫자를 보내고 가장 우선순위가 높은 task에게 'w'문자를 보냄 (decision task 기준)


Mailbox 생성

  • OS_EVENT OSMboxCreate(void msg);
  • return은 생성된 mailbox의 주소 -> pevent
	OS_EVENT* mbox_to_decision[4]; //숫자 4개 보낼거라 4개 생성함. 각각의 msg ptr 존재
    for (i = 0; i < 4; i++)
      {
         mbox_to_decision[i] = OSMboxCreate(0);
      }

Mailbox 삭제

  • OS_EVENT OSMboxDel(OS_EVENT pevent, INT8U opt, INT8U *err);

메시지 기다리기

  • void OSMboxPend(OS_EVENT pevent, INT16U timeout, INT8U *err)
     INT8U err;
     int get_number[4] //배열이라 자체가 ptr이다.
     for(i = 0; i < N_TASK -1; i++{
    		get_number[i] = (int)OSMboxPend(mbox_to_decision[i], 0, &err);
       //OSEventPtr에 담겨있는 정보를 가져온다.
     }
  • OSEventPtr이 NULL Ptr이면 waiting한다. post로 인한 msg 할당을 기다린다.

메시지 보내기

  • 메시지를 mailbox에 저장한다.
  • INT8U OSMboxPost(OS_EVENT pevent, void *msg)
    //우선순위가 가장 높은 task는 W 문자를 받는다.
    if (i = min_task){
    		 push_letter = 'W';
    }
    OSMboxPost(mbox_to_random[i], (void*)push_letter);
    //msg에 push_letter의 주소가 할당된다.

대기중인 모든 task에게 메시지 보냄

  • OSMboxPostOpt(OS_EVENT pevent, void msg, INT8U opt)
  • opt = OS_POST_OPT_BROADCAST

0개의 댓글

관련 채용 정보