⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 statcpu.h

📁 小型的操作系统开发的原代码
💻 H
字号:
//***********************************************************************/
//    Author                    : Garry
//    Original Date             : Oct,22 2006
//    Module Name               : STATCPU.H
//    Module Funciton           : 
//                                Countains CPU overload ratio statistics related
//                                data structures and routines.
//    Last modified Author      :
//    Last modified Date        :
//    Last modified Content     :
//                                1.
//                                2.
//    Lines number              :
//***********************************************************************/

#define GET_KERNEL_MEMORY(size)   KMemAlloc(size,KMEM_SIZE_TYPE_ANY)
#define FREE_KERNEL_MEMORY(p)     KMemFree(p,KMEM_SIZE_TYPE_ANY,0L)

#define MAX_STAT_PERIOD        300
#define PERIOD_TIME            1000
#define ONE_MINUTE_PERIOD      60

struct __THREAD_STAT_OBJECT{
	__THREAD_STAT_OBJECT*     lpPrev;
	__THREAD_STAT_OBJECT*     lpNext;

	__U64                     TotalCpuCycle;
	__U64                     CurrPeriodCycle;
	__U64                     PreviousTsc;

	__KERNEL_THREAD_OBJECT*   lpKernelThread;

	WORD                      wQueueHdr;
	WORD                      wQueueTail;
	WORD                      RatioQueue[MAX_STAT_PERIOD];
	WORD                      wOneMinuteRatio;  //CPU ratio in last 1 minute.
	WORD                      wMaxStatRatio;    //CPU ratio in last maximal statistics
	                                            //period,such as 5 minutes.
	WORD                      wCurrPeriodRatio;
	WORD                      wReserved;
};

struct __STAT_CPU_OBJECT{
	//__KERNEL_THREAD_OBJECT*   lpStatKernelThread;
	__U64                     PreviousTsc;       //Previous time stamp counter.
	__U64                     CurrPeriodCycle;   //CPU cycle conter in this stat period.
	__U64                     TotalCpuCycle;     //Total CPU cycle counter since
	                                             //system startup.
	__THREAD_STAT_OBJECT      IdleThreadStatObj;

	BOOL                     (*Initialize)(__STAT_CPU_OBJECT*);    //Initialize routine.
	__THREAD_STAT_OBJECT*    (*GetFirstThreadStatObj)();
	__THREAD_STAT_OBJECT*    (*GetNextThreadSTatObj)(__THREAD_STAT_OBJECT*);
	VOID                     (*DoStat)();
	VOID                     (*ShowStat)();
};

extern __THREAD_HOOK_ROUTINE lpCreateHook;
extern __THREAD_HOOK_ROUTINE lpBeginScheduleHook;
extern __THREAD_HOOK_ROUTINE lpEndScheduleHook;
extern __THREAD_HOOK_ROUTINE lpTerminalHook;

extern __STAT_CPU_OBJECT  StatCpuObject;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -