diff -r c1f20ce4abcf -r 3e88ff8f41d5 kernel/eka/nkernsmp/nk_timer.cpp --- 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_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; }