亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? os_entry.cpp

?? 自己動手寫操作系統(tǒng)源代碼,不可多得的代碼
?? CPP
字號:
#ifndef __STDAFX_H__
#include ".\INCLUDE\StdAfx.h"
#endif

#include ".\INCLUDE\STATCPU.H"
#include ".\INCLUDE\STAT_S.H"
#include ".\INCLUDE\L_STDIO.H"

//Welcome information.
char* pszStartMsg1 = "Hello China running now.If you have any question,";
char* pszStartMsg2 = "please send email to : garryxin@yahoo.com.cn.";
char* pszWelcome   = "Welcome to use Hello China!";

//Help information.
char* pszHelpInfo = "Any help please press 'help' + return.";

//External global variables.
extern __DRIVER_ENTRY DriverEntryArray[];

KEY_HANDLER g_keyHandler = NULL;
INT_HANDLER g_intHandler = NULL;

void DeadLoop()
{
	while(true);
}

//
//System idle thread.
//When there is no kernel thread to schedule,the system idle thread will run.
//In this kernel thread,some system level tasks can be done.
//This kernel thread will never exit until the system is down.
//

#define GLOBAL_COUNTER 1024*1024*8*20

static DWORD dwIdleCounter = 0L;
DWORD SystemIdle(LPVOID lpData)
{
	DWORD* lpdwCounter = NULL;
	lpdwCounter = (DWORD*)lpData;
	//DWORD dwCounter = 0L;
	while(TRUE)
	{
		(*lpdwCounter) ++;
		if(GLOBAL_COUNTER == *lpdwCounter)
		{
			(*lpdwCounter) = 0;
			//PrintLine("System idle thread is sheduled,I-I-I-I-I-I-I-I-I-I-I.");
		}
	}
}

//
//System shell thread.
//This kernel thread is a shell.
//

DWORD SystemShell(LPVOID)
{
	EntryPoint();
	/*DWORD dwCounter = 0L;
	while(TRUE)
	{
		dwCounter ++;
		if(GLOBAL_COUNTER == dwCounter)
		{
			dwCounter = 0;
			PrintLine("System shell thread is scheduled.");
		}
	}*/
	return 0L;
}

//
//System keeper kernel thread.
//

DWORD SystemKeeper(LPVOID)
{
	DWORD dwCounter = 0L;
	while(TRUE)
	{
		dwCounter ++;
		if(GLOBAL_COUNTER == dwCounter)
		{
			dwCounter = 0;
			PrintLine("System keeper thread is scheduled,K-K-K-K-K-K-K-K-K-K-K-K-K.");
		}
	}
}

//
//The following function as a kernal thread function's wraper.
//The kernal thread's start routine's type is VOID KThreadRoutine(LPVOID).
//
VOID ShellThreadWrap(LPVOID)
{
	EntryPoint();
}

void __init()
{
	__KERNEL_THREAD_OBJECT*       lpIdleThread     = NULL;
	__KERNEL_THREAD_OBJECT*       lpShellThread    = NULL;
	__KERNEL_THREAD_OBJECT*       lpKeeperThread   = NULL;
	DWORD                         dwKThreadID      = 0;
	DWORD                         dwIndex          = 0;
	BYTE                          strInfo[64];


	DisableInterrupt();    //The following code is executed in no-interruptable envrionment.

	ClearScreen();         //Print out welcome message.
	PrintStr(pszStartMsg1);
	PrintStr(pszStartMsg2);
	ChangeLine();
	GotoHome();

	PrintStr(pszHelpInfo); //Print out help information.
	ChangeLine();
	GotoHome();

	g_keyHandler = SetKeyHandler(_KeyHandler);     //Set key board handler.

	*(__PDE*)PD_START = NULL_PDE;    //Set the first page directory entry to NULL,to indicate
	                                 //this location is not initialized yet.


	/********************************************************************************
	*********************************************************************************
	*********************************************************************************
	*********************************************************************************
	*********************************************************************************/
	//
	//The following code initializes system level global objects.
	//

#ifdef __ENABLE_VIRTUAL_MEMORY    //Should enable virtual memory model.

	lpVirtualMemoryMgr = (__VIRTUAL_MEMORY_MANAGER*)ObjectManager.CreateObject(&ObjectManager,
		NULL,
		OBJECT_TYPE_VIRTUAL_MEMORY_MANAGER);    //Create virtual memory manager object.
	if(NULL == lpVirtualMemoryMgr)    //Failed to create this object.
		goto __TERMINAL;

	if(!lpVirtualMemoryMgr->Initialize((__COMMON_OBJECT*)lpVirtualMemoryMgr))
		goto __TERMINAL;
#endif
	
	if(!KernelThreadManager.Initialize((__COMMON_OBJECT*)&KernelThreadManager))
		goto __TERMINAL;                                                     //Initialize 
	                                                                         //Kernel Thread
	                                                                         //Manager.

	if(!System.Initialize((__COMMON_OBJECT*)&System))                        //Initialize
		                                                                     //system object.
		goto __TERMINAL;


	if(!PageFrameManager.Initialize((__COMMON_OBJECT*)&PageFrameManager,
		(LPVOID)0x02000000,
		(LPVOID)0x09FFFFFF))
		goto __TERMINAL;

	if(!MemoryManager.Initialize((__COMMON_OBJECT*)&MemoryManager))
		goto __TERMINAL;

	if(!IOManager.Initialize((__COMMON_OBJECT*)&IOManager))                  //Initialize
	                                                                         //Input-Output
	                                                                         //Manager.
		goto __TERMINAL;

	if(!DeviceManager.Initialize(&DeviceManager))                            //Initialize the
		                                                                     //Device manager.
	    goto __TERMINAL;

	if(!StatCpuObject.Initialize(&StatCpuObject))  //Initialize CPU statistics object.
	{
		goto __TERMINAL;
	}

	//
	//Load drivers here.
	//All drivers embedded into the kernel will be loaded here,and the drivers
	//implemented as module will be loaded later.
	//
	dwIndex = 0;
	while(DriverEntryArray[dwIndex])
	{
		if(!IOManager.LoadDriver(DriverEntryArray[dwIndex])) //Failed to load.
		{
			sprintf(strInfo,"Failed to load the %dth driver.",dwIndex); //Show an error.
			PrintLine(strInfo);
		}
		dwIndex ++;  //Continue to load.
	}

	lpIdleThread = KernelThreadManager.CreateKernelThread(    //Create system idle thread.
		(__COMMON_OBJECT*)&KernelThreadManager,
		0L,
		KERNEL_THREAD_STATUS_READY,
		PRIORITY_LEVEL_LOWEST,                                //Lowest priority level.
		SystemIdle,
		(LPVOID)(&dwIdleCounter),
		NULL,
		"IDLE");

	if(NULL == lpIdleThread)
	{
		//PrintLine("Can not create idle kernel thread,please restart the system.");
		__ERROR_HANDLER(ERROR_LEVEL_FATAL,0L,NULL);
		goto __TERMINAL;
	}

	//Create statistics kernel thread.
	lpStatKernelThread = KernelThreadManager.CreateKernelThread(
		(__COMMON_OBJECT*)&KernelThreadManager,
		0L,
		KERNEL_THREAD_STATUS_READY,
		PRIORITY_LEVEL_HIGH,  //With high priority.
		StatThreadRoutine,
		NULL,
		NULL,
		"CPU STAT");

	if(NULL == lpStatKernelThread)
	{
		//PrintLine("Can not create idle kernel thread,please restart the system.");
		__ERROR_HANDLER(ERROR_LEVEL_FATAL,0L,NULL);
		goto __TERMINAL;
	}

	lpShellThread = KernelThreadManager.CreateKernelThread(   //Create shell thread.
		(__COMMON_OBJECT*)&KernelThreadManager,
		0L,
		KERNEL_THREAD_STATUS_READY,
		PRIORITY_LEVEL_NORMAL,
		SystemShell,
		NULL,
		NULL,
		"SHELL");

	if(NULL == lpShellThread)
	{
		//PrintLine("Can not create system shell thread,please restart the system.");
		__ERROR_HANDLER(ERROR_LEVEL_FATAL,0L,NULL);
		goto __TERMINAL;
	}
	g_lpShellThread = lpShellThread;     //Initialize the shell thread global variable.

	if(!DeviceInputManager.Initialize((__COMMON_OBJECT*)&DeviceInputManager,
		                              NULL,
		                              (__COMMON_OBJECT*)lpShellThread))
									    //Initialize the DeviceInputManager object.
	{
		__ERROR_HANDLER(ERROR_LEVEL_FATAL,0L,NULL);
		goto __TERMINAL;
	}

#ifdef __ENABLE_VIRTUAL_MEMORY
	//
	//Now,we enable the page mechanism.
	//
	__asm{
		push eax
		mov eax,PD_START
		mov cr3,eax
		mov eax,cr0
		or eax,0x80000000
		mov cr0,eax
		pop eax
	}
#endif

	//g_intHandler = SetTimerHandler(TimerHandler);  //Set the timer interrupt handler.
	SetTimerHandler(GeneralIntHandler);

	//g_pCurrentTask = &tcbShell;  //************  Will be deleted *********

	StrCpy("[system-view]",&HostName[0]);

	//EntryPoint();                //Create the shell process.

	//
	//The following kernal thread is created,and it is the
	//first kernal thread,as a operating system shell.
	//

	/*dwKThreadID = CreateKThread(16384,
		KTHREAD_STATUS_READY,
		0L,
		ShellThreadWrap,
		NULL,
		NULL);
	if(0 == dwKThreadID)          //If can not create the shell thread.
		goto __TERMINAL;

	g_pShellCtrlBlock = GetKThreadControlBlock(dwKThreadID);  //Initialize the shell's
	                                                          //control block.*/

	EnableInterrupt();

	DeadLoop();
	//EntryPoint();
	//ScheduleKThread();            //Schedule the kernal thread.

	//The following code will never be executed if corrected.
__TERMINAL:
	ChangeLine();
	GotoHome();
	//PrintStr("STOP : An error occured,please power off your computer and restart it.");
	__ERROR_HANDLER(ERROR_LEVEL_FATAL,0L,"Initializing process failed!");
    
	DeadLoop();
}

void main()
{
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久欧美精品sm网站| 韩国三级中文字幕hd久久精品| 亚洲h动漫在线| 捆绑紧缚一区二区三区视频| 国产精品综合二区| 色综合久久久久综合体桃花网| 91精品麻豆日日躁夜夜躁| 国产亲近乱来精品视频| 午夜不卡av免费| 成人黄色在线看| 欧美一区二区三区在线电影| 国产精品三级av| 日本不卡123| 91免费在线看| 久久精品亚洲乱码伦伦中文| 亚洲第一福利视频在线| 成人精品国产免费网站| 日韩色在线观看| 一区二区三区中文字幕精品精品| 狠狠色2019综合网| 欧美视频在线观看一区| 国产精品色一区二区三区| 久久国产日韩欧美精品| 在线视频一区二区三区| 亚洲国产高清不卡| 精品亚洲欧美一区| 欧美男人的天堂一二区| 依依成人精品视频| 成人三级在线视频| 337p粉嫩大胆噜噜噜噜噜91av| 香蕉成人伊视频在线观看| 91香蕉视频mp4| 国产精品三级av在线播放| 国产乱码精品一品二品| 日韩精品最新网址| 日韩精品免费视频人成| 欧美午夜电影网| 亚洲一区二区在线视频| 一本久久a久久精品亚洲| 中文字幕一区二区三区不卡| 国产成人av福利| 久久久久久一级片| 国产一区在线观看视频| 亚洲精品在线三区| 久久国产欧美日韩精品| 欧美成人精品高清在线播放| 蜜桃视频一区二区三区在线观看| 欧美无砖专区一中文字| 亚洲自拍偷拍网站| 欧美亚洲尤物久久| 亚洲电影一级片| 欧美一区二区国产| 久久精品国产99| 久久久久久久久久美女| 国产精品12区| 亚洲欧洲av在线| 色综合天天天天做夜夜夜夜做| 欧美aaaaaa午夜精品| 欧美一区二区三区在线看| 麻豆精品视频在线| 久久久久久久性| 91免费精品国自产拍在线不卡| 自拍偷拍国产亚洲| 欧美日韩国产电影| 激情综合网激情| 精品国产麻豆免费人成网站| 国产.欧美.日韩| 一区二区国产盗摄色噜噜| 56国语精品自产拍在线观看| 国产在线精品一区二区| 国产精品国模大尺度视频| 91国产成人在线| 奇米一区二区三区| 亚洲电影一级片| 欧美xxxx在线观看| 99精品久久久久久| 日本视频一区二区三区| 国产亚洲婷婷免费| 日本精品视频一区二区三区| 麻豆专区一区二区三区四区五区| 久久精品综合网| 欧美午夜一区二区三区免费大片| 蜜臀av性久久久久av蜜臀妖精| 国产视频911| 欧美亚洲高清一区二区三区不卡| 久久精品免费看| 亚洲三级在线看| 欧美一区二区三区日韩视频| 国产91在线观看丝袜| 性做久久久久久| 国产欧美视频一区二区三区| 欧美性欧美巨大黑白大战| 国产一区二区三区国产| 亚洲h动漫在线| 亚洲日本韩国一区| 久久女同精品一区二区| 欧美日韩高清在线播放| 成人黄色大片在线观看| 蜜臀国产一区二区三区在线播放 | 91福利视频在线| 久久成人18免费观看| 亚洲免费观看高清完整版在线| 精品88久久久久88久久久| 欧美三级三级三级| 不卡的av在线| 国产乱人伦精品一区二区在线观看| 一区二区三区免费观看| 久久精品亚洲一区二区三区浴池| 91精品国产综合久久福利| 91丨国产丨九色丨pron| 美女脱光内衣内裤视频久久网站 | 欧美精品777| 91美女视频网站| 国产精品18久久久久久久久| 五月婷婷综合激情| 亚洲精品日韩专区silk| 中文字幕久久午夜不卡| 亚洲精品在线观看视频| 日韩欧美第一区| 欧美伦理影视网| 欧美在线观看18| 色哟哟国产精品| 99久久久国产精品免费蜜臀| 高潮精品一区videoshd| 国产一区亚洲一区| 国产综合久久久久影院| 激情成人午夜视频| 久久国产夜色精品鲁鲁99| 青青草原综合久久大伊人精品 | 一区二区三区在线观看动漫| 国产精品狼人久久影院观看方式| 久久久久久麻豆| 国产亚洲成av人在线观看导航| 精品国产一二三| 久久影视一区二区| 久久先锋影音av| 国产香蕉久久精品综合网| 2019国产精品| 国产亚洲精品久| 国产精品蜜臀在线观看| 中文字幕视频一区二区三区久| 国产精品理论片在线观看| 亚洲人成网站影音先锋播放| 综合精品久久久| 亚洲图片一区二区| 首页综合国产亚洲丝袜| 日本亚洲最大的色成网站www| 日韩不卡手机在线v区| 精品在线视频一区| 国产91综合网| 在线观看亚洲精品视频| 欧美精品久久99| 久久久久久久久久电影| 国产精品麻豆网站| 亚洲高清中文字幕| 激情综合五月天| 99久久国产综合精品色伊| 91高清视频在线| 日韩欧美中文字幕制服| 久久久蜜桃精品| 一区二区在线观看视频在线观看| 亚洲mv大片欧洲mv大片精品| 精品在线一区二区三区| 91原创在线视频| 正在播放亚洲一区| 国产午夜精品福利| 亚洲最新视频在线播放| 日韩成人精品在线| 成人高清视频在线| 欧美日韩免费一区二区三区 | 亚洲国产你懂的| 美国十次综合导航| 不卡av电影在线播放| 欧美日韩国产一区二区三区地区| 欧美本精品男人aⅴ天堂| 亚洲色图制服诱惑| 久久成人久久爱| 在线观看一区二区视频| 精品成a人在线观看| 一区二区三区蜜桃| 国产一区二区主播在线| 色成人在线视频| 精品成人a区在线观看| 亚洲美女视频一区| 韩国三级中文字幕hd久久精品| 色欧美片视频在线观看| 精品国产乱码久久久久久老虎| 亚洲色欲色欲www| 国产精品综合二区| 欧美一级片在线| 一级精品视频在线观看宜春院| 国产一区视频网站| 日韩一本二本av| 亚洲综合视频网| 成人美女在线观看| 精品久久久久久久久久久久久久久 | 激情小说欧美图片| 欧美色视频一区| 综合分类小说区另类春色亚洲小说欧美| 蜜桃视频一区二区|