/* * OS�̋N�� */ void StartOS(AppModeType mode) { volatile FP startuphook_adr; LOG_STAOS_ENTER(mode); /* * �A�v���P�[�V�������[�h�̐ݒ� */ appmode = mode; /* * �^�[�Q�b�g�ˑ��̏����� */ cpu_initialize(); sys_initialize(); tool_initialize(); /* * �e���W���[���̏����� */ object_initialize(); /* * StartupHook �̌Ăяo�� * * C�����̋K�i�ł͊��̃A�h���X��0�ɂȂ��Ȃ��Ƃ����O��, * �R���p�C���̍œK���ɂ���StartupHook�̃A�h���X���蕪���� * �폜�����Ă��܂��ꍇ�����邽��, volatile�w�肵�����[�J���ϐ��� * �A�h���X���������Ă��画�肵�Ă����D * */ startuphook_adr = (FP)StartupHook; if (startuphook_adr != NULL) { /* * StartupHook �̒��ŁCSuspendAllInterrupts ���Ă� * �Ă������v�Ȃ悤�ɁCsus_all_cnt �����[���ɂ��Ă����D */ callevel = TCL_STARTUP; sus_all_cnt++; StartupHook(); sus_all_cnt--; } callevel = TCL_TASK; LOG_STAOS_LEAVE(); start_dispatch(); }
/* * OSの起動 */ void StartOS(AppModeType mode) { volatile FP startuphook_adr; LOG_STAOS_ENTER(mode); /* * アプリケーションモードの設定 */ appmode = mode; /* * ターゲット依存の初期化 */ cpu_initialize(); sys_initialize(); tool_initialize(); /* * 各モジュールの初期化 */ object_initialize(); /* * StartupHook の呼び出し * * C言語の規格では関数のアドレスは0にならないという前提から, * コンパイラの最適化によりStartupHookのアドレス判定分岐が * 削除されてしまう場合があるため, volatile指定したローカル変数に * アドレスを代入してから判定している. * */ startuphook_adr = (FP)StartupHook; if (startuphook_adr != NULL) { /* * StartupHook の中で,SuspendAllInterrupts が呼ばれ * ても大丈夫なように,sus_all_cnt を非ゼロにしておく. */ callevel = TCL_STARTUP; sus_all_cnt++; StartupHook(); sus_all_cnt--; } callevel = TCL_TASK; LOG_STAOS_LEAVE(); start_dispatch(); }
/* * OS Start */ void StartOS(AppModeType mode) { volatile FP startuphook_adr; LOG_STAOS_ENTER(mode); /* * Store */ appmode = mode; /* * Do the needed initialize */ cpu_initialize(); /* implemented in cpu_context.c */ sys_initialize(); /* user defined interface */ tool_initialize(); /* user defined interface */ /* * Initialize OSEK OS objects. */ object_initialize(); /* * StartupHook の呼び出し * * C言語の規格では関数のアドレスは0にならないという前提から, * コンパイラの最適化によりStartupHookのアドレス判定分岐が * 削除されてしまう場合があるため, volatile指定したローカル変数に * アドレスを代入してから判定している. * */ startuphook_adr = (FP)StartupHook; if (startuphook_adr != NULL) { /* * StartupHook の中で,SuspendAllInterrupts が呼ばれ * ても大丈夫なように,sus_all_cnt を非ゼロにしておく. */ callevel = TCL_STARTUP; sus_all_cnt++; StartupHook(); sus_all_cnt--; } callevel = TCL_TASK; LOG_STAOS_LEAVE(); start_dispatch(); }
void main() { bt_initialize(); trace_initialize(); i386_initialize_descriptor_tables(); i8259_initialize(); exceptions_initialize(); timer_initialize(); mem_initialize(); dma_initialize(); keyboard_initialize(); floppy_initialize(); tty_initialize(); sys_initialize(); loader_initialize(); clear_display(); printk("Start running processes!!!\nStartup Communications\n Press ALT-LSHIFT for next terminal\n"); i8259_start(); while(1); }