[b-free 103] main.c

長谷川 徹 (NBF01763@niftyserve.or.jp)
Sat, 26 Oct 1996 12:32:00 +0900

みなさん、こんにちは。
隆一さん、さっそくご苦労さまです。

main.c を見ていて、間違いではないか?と思った所が数カ所
ありましたのでアップしました。コメントが入れてありますので確認
してください。

---ここから--
main.c --------------------------------------------------------

/*
* BTRON マネージャの main 関数
*
*/
void
main (void)
{
/* メッセージポートの登録
*/
recvport = get_port (sizeof (MANAGER_MSG), sizeof (MANAGER_MSG));
if (recvport <= 0)
{
dbg_printf ("manager: cannot make receive port.\n");
slp_tsk ();
/* メッセージバッファ生成に失敗 */
}

more>
error = regist_port (MANAGER, recvport);
if (error != E_OK)
{
dbg_printf ("manager: cannot regist port (error = %d)\n", error);
}

/* マネージャの初期化
*
* ファイル管理部分
* メモリ管理部分
* プロセス管理部分
*
*/
fm_init ();
pm_init ();
mm_init ();

/* メッセージ取り出し - 処理ループ
*/
for (;;)
{
more>
W rsize;

/* 要求の受信 */

rsize = sizeof (req);
get_req (recvport, &req, &rsize);
switch (sys_errno)
{
case E_OK:
/* 正常ケース */
doit (&req);
break;

default:
/* Unknown error */
dbg_printf ("CONSOLE: get_req() Unknown error(error = %d)\n", err);
break;
}
}

/* NOT REACHED */
}
more>

/* doit --- 各機能別のモジュールへ処理を分岐する
*
*/
static void
doit (MANAGER_MSG *request)
{
switch ((request->req.cmd) & 0xff00)
{
case PM_MASK: /* PM_MSK == 0x0100 */
pm_receive (request);
break;

case FM_MASK: /* FM_MSK == 0x0200 ←0x0100 ではない?*/
fm_receive (request);
/* pm_receive (request); ←これは間違いでは? */
break;

case MM_MASK: /* MM_MSK == 0x0300 ←0x0100 ではない?*/
mm_receive (request);
/* pm_receive (request); ←これは間違いでは? */
break;

default: /* 理解できないメッセージを受けとった */
unknown_error (request);
break;
}
}

--ここまで--

電脳丸三郎太こと
長谷川 徹