www.pudn.com > WinGOS.rar > Kernel.h


#ifndef _GOS_KERNEL_H_ 
#define _GOS_KERNEL_H_ 
 
#define EnableSwitchThread() g_pKernel->UnlockSwitch() 
#define DisableSwitchThread() g_pKernel->LockSwitch() 
#define GetCurrentThread() g_pKernel->GetCur() 
 
enum _tagKernel 
{ 
	ThreadSwitchInterval=200, 
}; 
 
class CKernel : public CThread 
{ 
public: 
	static BOOL SwitchThread(); 
	static BOOL ThreadTableAdd(CThread* pThread,int nPriority); 
	static BOOL ThreadTableRemove(CThread* pThread); 
	static BOOL SetPriority(CThread* pThread,int nPriority); 
	static void LockSwitch(){m_bLockSwitch=TRUE;} 
	static void UnlockSwitch(); 
	static PVOID MemoryAlloc(PVOID pBlock,DWORD nSize); 
	static CThread* GetCur(){return m_pCurThread;} 
	static BOOL GetSwitchTime(){return m_nSwitchTime;} 
	static BOOL IsLockSwitch(){return m_bLockSwitch;} 
	static CHeap& GetCurHeap(){return m_pCurThread->m_heap;} 
public: 
	BOOL CreateThread(PVOID pParam); 
	BOOL ExitThread(DWORD dwExitCode); 
private: 
	static BOOL m_bLockSwitch; 
	static DWORD m_nSwitchTime; 
	static CThread* m_pCurThread; 
	static CThread* m_aThreadTable; 
	static CCriticalSection m_klock; 
}; 
extern CKernel* g_pKernel; 
 
#endif //_GOS_KERNEL_H_