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)