kernel/eka/nkernsmp/nk_timer.cpp
branchRCL_3
changeset 257 3e88ff8f41d5
parent 256 c1f20ce4abcf
--- a/kernel/eka/nkernsmp/nk_timer.cpp	Tue Aug 31 16:34:26 2010 +0300
+++ b/kernel/eka/nkernsmp/nk_timer.cpp	Wed Sep 01 12:34:56 2010 +0100
@@ -26,7 +26,7 @@
 
 GLDEF_D NTimerQ TheTimerQ;
 
-extern "C" void send_irq_ipi(TSubScheduler*, TInt);
+extern "C" void send_irq_ipi(TSubScheduler*);
 
 #ifndef __MSTIM_MACHINE_CODED__
 #ifdef _DEBUG
@@ -345,6 +345,7 @@
 // Wait aTime from last trigger time - used for periodic timers
 //
 	{
+	__NK_ASSERT_DEBUG(aTime>0);
 	TInt irq = TheTimerQ.iTimerSpinLock.LockIrqSave();
 	if (!IsValid())
 		{
@@ -585,8 +586,6 @@
 	{
 	__KTRACE_OPT(KBOOT,DEBUGPRINT("NTimerQ::Init3 DFCQ at %08x",aDfcQ));
 	TheTimerQ.iDfc.SetDfcQ(aDfcQ);
-	NThreadBase* t = aDfcQ->iThread;
-	t->iRebalanceAttr = 1;
 	}
 
 #ifndef __MSTIM_MACHINE_CODED__
@@ -743,7 +742,8 @@
 EXPORT_C void NTimerQ::Tick()
 	{
 	TInt irq = iTimerSpinLock.LockIrqSave();
-	TInt i = TInt(__e32_atomic_add_rlx64(&iMsCount64, 1)) & ETimerQMask;
+	TInt i=iMsCount & ETimerQMask;
+	iMsCount++;
 	STimerQ* pQ=iTickQ+i;
 	iPresent &= ~(1<<i);
 	TBool doDfc=FALSE;
@@ -802,10 +802,10 @@
 					{
 					pC->i_NTimer_iState = TUint8(NTimer::EEventQ + cpu);
 					TSubScheduler* ss = TheSubSchedulers + cpu;
-					TInt kick = ss->QueueEvent(pC);
+					TBool kick = ss->QueueEvent(pC);
 					iTimerSpinLock.UnlockIrqRestore(irq);
 					if (kick)
-						send_irq_ipi(ss, kick);
+						send_irq_ipi(ss);
 					continue;
 					}
 				}
@@ -921,8 +921,8 @@
  */
 EXPORT_C void NTimerQ::Advance(TInt aTicks)
 	{
-	CHECK_PRECONDITIONS(MASK_INTERRUPTS_DISABLED,"NTimerQ::Advance");
-	__e32_atomic_add_rlx64(&TheTimerQ.iMsCount64, TUint64(TUint32(aTicks)));
+	CHECK_PRECONDITIONS(MASK_INTERRUPTS_DISABLED,"NTimerQ::Advance");	
+	TheTimerQ.iMsCount+=(TUint32)aTicks;
 	}