[b-free 104] Re: main.c

Naitoh Ryuichi (night@bfree.rim.or.jp)
Sun, 27 Oct 1996 00:29:46 +0900

こんにちは。

From: 長谷川 徹<NBF01763@niftyserve.or.jp>
Subject: [b-free 103] main.c
Date: Sat, 26 Oct 1996 12:32:00 +0900
Message-ID: <199610260334.MAA23474@inetnif.niftyserve.or.jp>

> みなさん、こんにちは。
> 隆一さん、さっそくご苦労さまです。
>
> main.c を見ていて、間違いではないか?と思った所が数カ所
> ありましたのでアップしました。コメントが入れてありますので確認
> してください。

あれま。たしかにおかしいですね。
直した 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 ();
/* メッセージバッファ生成に失敗 */
}

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 (;;)
{
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 */
}

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

case FM_MASK: /* FM_MASK == 0x0200 */
fm_receive (request); /* ファイル管理へメッセージを渡す */
break;

case MM_MASK: /* MM_MASK == 0x0300 */
mm_receive (request); /* メモリ管理へメッセージを渡す */
break;

/* ... デバイスドライバ等の処理が入る */

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

ここまで --------------------------------------------------------------

---
B-Free プロジェクト実行中! 詳細はこの Web ページへ
(http://www.b-free.orient.co.jp/)

内藤隆一 (ggc00661@niftyserve.or.jp/night@bfree.rim.or.jp)