示例#1
0
/*
 * Stop system
 */
EXPORT void shutdown_system( INT fin )
{
	/* Stop subsystem */
	finish_subsystems();

	/* Platform dependent finalize sequence */
	finish_device();

	/* Stop library (libtk) */
	_FinishLibtk();

	/* Shutdown message output */
#if USE_KERNEL_MESSAGE
	if ( fin >= 0 ) {
	  tm_putstring((UB*)"\n<< SYSTEM SHUTDOWN >>\n");
	}
#endif
	/* Stop T-Kernel/SM */
	SystemManager(-1, NULL);

	/* Stop memory manager */
	finish_memmgr();

	/* Stop segment manager */
	finish_segmgr();

	if ( fin < 0 ) {
		/* Re-start sequence (platform dependent) */
		restart_device(fin);
	}

	/* Stop system */
	t_kernel_exit();
}
示例#2
0
int Master::Run(int argc, char ** argv)
{
    _HookSignals();
    (gcnew SystemManager())->Run();
    _UnhookSignals();
    return 0;
}
示例#3
0
/*
 * Start system
 */
EXPORT void start_system( void )
{
	ER	ercd;

	/* Initialize segment manager */
	DispProgress(0x30);
	ercd = start_segmgr();
	if ( ercd < E_OK ) {
		goto err_ret;
	}

	/* Start memory manager */
	DispProgress(0x31);
	ercd = start_memmgr();
	if ( ercd < E_OK ) {
		goto err_ret;
	}

	/* Initialize system manager */
	DispProgress(0x32);
	ercd = SystemManager(0, NULL);
	if ( ercd < E_OK ) {
		goto err_ret;
	}

	/* Initialize library (libtk)
	   V/K/Smalloc is available after this. */
	DispProgress(0x33);
	_InitLibtk();

	/* Lower the initial task priority to initialize sequence
	   for the subsystem task at first. */
	tk_chg_pri(TSK_SELF, InitTaskPri);

	/* Start system dependent sequence */
	DispProgress(0x34);
	ercd = start_device();
	if ( ercd < E_OK ) {
		goto err_ret;
	}

	/* Start subsystem */
	DispProgress(0x35);
	ercd = start_subsystems();
	if ( ercd < E_OK ) {
		goto err_ret;
	}

	return;

err_ret:
#if USE_KERNEL_MESSAGE
	tm_putstring((UB*)"!ERROR! start_system\n");
#endif
	tm_monitor();	/* Stop */
}