#include #include #include "mbox.h" int msg_init(mbox_t *MailBox) { sema_init(&(MailBox->NotFull), 1, USYNC_THREAD, (void *) NULL); sema_init(&(MailBox->NotEmpty), 0, USYNC_THREAD, (void *) NULL); MailBox->Data = 0; return (0); } int msg_send(mbox_t *MailBox, int *Value) { sema_wait(&(MailBox->NotFull)); MailBox->Data = *Value; sema_post(&(MailBox->NotEmpty)); return (*Value); } int msg_receive(mbox_t *MailBox, int *Value) { sema_wait(&(MailBox->NotEmpty)); *Value = MailBox->Data; sema_post(&(MailBox->NotFull)); return (*Value); }