kernel/eka/include/nkernsmp/nk_priv.h
changeset 201 43365a9b78a3
parent 90 947f0dc9f7a8
equal deleted inserted replaced
200:73ea206103e6 201:43365a9b78a3
   627 __ASSERT_COMPILE(!(_FOFF(TSubScheduler,iReschedCount)&7));
   627 __ASSERT_COMPILE(!(_FOFF(TSubScheduler,iReschedCount)&7));
   628 __ASSERT_COMPILE(sizeof(TSubSchedulerX)==256);
   628 __ASSERT_COMPILE(sizeof(TSubSchedulerX)==256);
   629 __ASSERT_COMPILE(sizeof(TSubScheduler)==(1<<KSubSchedulerShift));	// make it a nice power of 2 size for easy indexing
   629 __ASSERT_COMPILE(sizeof(TSubScheduler)==(1<<KSubSchedulerShift));	// make it a nice power of 2 size for easy indexing
   630 
   630 
   631 struct SCoreControlAction;
   631 struct SCoreControlAction;
       
   632 struct SVariantInterfaceBlock;
   632 
   633 
   633 /**
   634 /**
   634 @internalComponent
   635 @internalComponent
   635 */
   636 */
   636 class TScheduler
   637 class TScheduler
   667 	static TDfcQue* RebalanceDfcQ();
   668 	static TDfcQue* RebalanceDfcQ();
   668 	static NThread* LBThread();
   669 	static NThread* LBThread();
   669 	static TBool CoreControlSupported();
   670 	static TBool CoreControlSupported();
   670 	static void CCInitiatePowerUp(TUint32 aCores);
   671 	static void CCInitiatePowerUp(TUint32 aCores);
   671 	static void CCIndirectPowerDown(TAny*);
   672 	static void CCIndirectPowerDown(TAny*);
       
   673 	static void DoFrequencyChanged(TAny*);
   672 public:
   674 public:
   673 	TLinAddr		iMonitorExceptionHandler;
   675 	TLinAddr		iMonitorExceptionHandler;
   674 	TLinAddr		iProcessHandler;
   676 	TLinAddr		iProcessHandler;
   675 
   677 
   676 	volatile TUint32 iThreadAcceptCpus;			// bit n set if CPU n is accepting unlocked threads
   678 	volatile TUint32 iThreadAcceptCpus;			// bit n set if CPU n is accepting unlocked threads
   725 	volatile TUint32 iCCIpiReactivate;			// Cores to be woken up because of IPIs
   727 	volatile TUint32 iCCIpiReactivate;			// Cores to be woken up because of IPIs
   726 
   728 
   727 	TDfc			iCCRequestDfc;				// runs when a request is made to change the number of active cores
   729 	TDfc			iCCRequestDfc;				// runs when a request is made to change the number of active cores
   728 	TDfc			iCCPowerDownDfc;			// runs when indirect power down of core(s) is required
   730 	TDfc			iCCPowerDownDfc;			// runs when indirect power down of core(s) is required
   729 	TDfc			iCCIpiReactIDFC;			// runs when an IPI needs to wake up a core
   731 	TDfc			iCCIpiReactIDFC;			// runs when an IPI needs to wake up a core
       
   732 	TDfc			iFreqChgDfc;				// runs when frequency changes required
   730 
   733 
   731 	TSubScheduler*	iPoweringOff;				// CPU last to power off
   734 	TSubScheduler*	iPoweringOff;				// CPU last to power off
   732 	TUint32			iDetachCount;				// detach count before power off
   735 	TUint32			iDetachCount;				// detach count before power off
   733 
   736 
   734 	TUint32			i_Scheduler_Padding[54];
   737 	SVariantInterfaceBlock* iVIB;
       
   738 	TUint32			i_Scheduler_Padding[29];
   735 	};
   739 	};
   736 
   740 
   737 __ASSERT_COMPILE(!(_FOFF(TScheduler,iGenIPILock)&7));
   741 __ASSERT_COMPILE(!(_FOFF(TScheduler,iGenIPILock)&7));
   738 __ASSERT_COMPILE(!(_FOFF(TScheduler,iIdleSpinLock)&7));
   742 __ASSERT_COMPILE(!(_FOFF(TScheduler,iIdleSpinLock)&7));
   739 __ASSERT_COMPILE(!(_FOFF(TScheduler,iIdleBalanceLock)&7));
   743 __ASSERT_COMPILE(!(_FOFF(TScheduler,iIdleBalanceLock)&7));
   740 __ASSERT_COMPILE(!(_FOFF(TScheduler,iEnumerateLock)&7));
   744 __ASSERT_COMPILE(!(_FOFF(TScheduler,iEnumerateLock)&7));
   741 __ASSERT_COMPILE(!(_FOFF(TScheduler,iBalanceListLock)&7));
   745 __ASSERT_COMPILE(!(_FOFF(TScheduler,iBalanceListLock)&7));
   742 __ASSERT_COMPILE(sizeof(TSchedulerX)==16*4);
   746 __ASSERT_COMPILE(sizeof(TSchedulerX)==32*4);
   743 __ASSERT_COMPILE(sizeof(TScheduler)==1024);
   747 __ASSERT_COMPILE(sizeof(TScheduler)==1024);
   744 
   748 
   745 extern TScheduler TheScheduler;
   749 extern TScheduler TheScheduler;
   746 extern TSubScheduler TheSubSchedulers[KMaxCpus];
   750 extern TSubScheduler TheSubSchedulers[KMaxCpus];
   747 
   751