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;
}
}
--ここまで--
電脳丸三郎太こと
長谷川 徹