static void sendmsg(kz_msgbox *mboxp, kz_thread *thp, int size, char *p) { kz_msgbuf *mp; mp = (kz_msgbuf *)kzmem_alloc(sizeof(*mp)); if (mp == NULL) kz_sysdown(); mp->next = NULL; mp->sender = thp; /* thp is current thread */ mp->param.size = size; mp->param.p = p; if (mboxp->tail) { mboxp->tail->next = mp; } else { mboxp->head = mp; } mboxp->tail = mp; }
/* メッセージの送信処理 */ static void sendmsg(kz_msgbox *mboxp, kz_thread *thp, int size, char *p) { kz_msgbuf *mp; /* メッセージ・バッファの作成 */ mp = (kz_msgbuf *)kzmem_alloc(sizeof(*mp)); if (mp == NULL) kz_sysdown(); mp->next = NULL; mp->sender = thp; mp->param.size = size; mp->param.p = p; /* メッセージ・ボックスの末尾にメッセージを接続する */ if (mboxp->tail) { mboxp->tail->next = mp; } else { mboxp->head = mp; } mboxp->tail = mp; }
/* システム・コールの処理(kz_kmalloc():動的メモリ獲得) */ static void *thread_kmalloc(int size) { putcurrent(); return kzmem_alloc(size); }