#include "fdmp_kernel.h" #include "class.h" #include "time_event.h" #include "syslog.h" #include "cyclic.h"
#include "fdmp_kernel.h"
#include "class.h"
#include "time_event.h"
#include "syslog.h"
#include "cyclic.h"
startup.cのインクルード依存関係図
ソースコードを見る。
startup.c で定義されています。
カーネルの終了処理(startup.c)
startup.c の 618 行で定義されています。
参照先 call_atexit()・call_terrtn・cpu_terminate・FALSE・i_lock_cpu・iniflg・sense_context()・sense_lock()・sys_exit・syslog_terminate・t_lock_cpu.
00619 { 00620 /* 00621 * 割込みを禁止 00622 */ 00623 if (!sense_lock()) { 00624 if (sense_context()) { 00625 i_lock_cpu(); 00626 } 00627 else { 00628 t_lock_cpu(); 00629 } 00630 } 00631 iniflg = FALSE; 00632 00633 /* 00634 * 終了処理ルーチンの実行 00635 */ 00636 call_terrtn(); 00637 00638 /* 00639 * atexit の処理とデストラクタの実行 00640 */ 00641 call_atexit(); 00642 00643 /* 00644 * システムログ機能の終了処理 00645 */ 00646 syslog_terminate(); 00647 00648 /* 00649 * ターゲット依存の終了処理 00650 */ 00651 cpu_terminate(); 00652 sys_exit(); 00653 }
関数の呼び出しグラフ:
カーネルの初期化
startup.c の 532 行で定義されています。
参照先 call_inirtn・ccb_convert・cpu_initialize・cyclic_init_sta()・exccb_initialize・exit_and_dispatch・iniflg・LOG_NOTICE・MASTER_PROC・mp_init_sync・mp_initialize・mp_start・object_initialize・print_banner・sys_initialize・syslog()・syslog_initialize・task_init_activate()・tmevt_initialize・tool_initialize・TRUE.
00533 { 00534 /* 00535 * ターゲット依存の初期化 00536 */ 00537 cpu_initialize(); 00538 sys_initialize(); 00539 tool_initialize(); 00540 00541 /* 00542 * システムログ機能の初期化 00543 */ 00544 syslog_initialize(); 00545 00546 /* 00547 * 起動メッセージの表示 00548 */ 00549 print_banner(); 00550 00551 /* 00552 * EXCCBの初期化同期 00553 */ 00554 if(MASTER_PROC()){ 00555 /* 他プロセッサとの同期用データの初期化 */ 00556 mp_initialize(); 00557 syslog(LOG_NOTICE,"Start %d processors.", NO_PROC); 00558 }else{ 00559 /* その他プロセッサはマスタプロセッサによる初期化待ち */ 00560 syslog(LOG_NOTICE,"waiting for EXCCB initialized"); 00561 mp_init_sync(); 00562 syslog(LOG_NOTICE,"OK"); 00563 } 00564 00565 /* 00566 * EXCCBの該当エントリへ登録(IDとロック) 00567 */ 00568 exccb_initialize(); 00569 00570 /* 00571 * 各モジュールの初期化 00572 * 00573 * タイムイベント管理モジュールは他のモジュールより先に初期化 00574 * する必要がある. 00575 */ 00576 tmevt_initialize(); 00577 object_initialize(); 00578 00579 /* 00580 * 初期化ルーチンの実行 00581 */ 00582 call_inirtn(); 00583 00584 /* 00585 * 他のプロセッサと同期 00586 * EXCCBの初期化待ち 00587 */ 00588 mp_start(); 00589 00590 /* 00591 * EXCCBテーブルの情報をCCBテーブルへ変換 00592 */ 00593 ccb_convert(); 00594 00595 /* 00596 * TA_ACTが指定されたタスクの起動 00597 */ 00598 task_init_activate(); 00599 00600 /* 00601 * TA_STAが指定された周期ハンドラの起動 00602 */ 00603 cyclic_init_sta(); 00604 00605 /* 00606 * カーネル動作の開始 00607 */ 00608 iniflg = TRUE; 00609 exit_and_dispatch(); 00610 }
カーネル動作状態フラグ(startup.c)
startup.c の 525 行で定義されています。