From 5aaac70113a23a156be03a22f1e38987f820a972 Mon Sep 17 00:00:00 2001 From: Terraneo Federico <fede.tft@miosix.org> Date: Thu, 9 Jun 2016 17:41:45 +0200 Subject: [PATCH] With the new high resolution timer, the tick is now incremented also when interrupts are enabled. Fixing some tests in the testsuite that relied on the old behaviour --- miosix/_tools/testsuite/testsuite.cpp | 35 ++++++++++++++++++--------- miosix/kernel/kernel.cpp | 2 +- 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/miosix/_tools/testsuite/testsuite.cpp b/miosix/_tools/testsuite/testsuite.cpp index d53486d0..061470b5 100644 --- a/miosix/_tools/testsuite/testsuite.cpp +++ b/miosix/_tools/testsuite/testsuite.cpp @@ -961,7 +961,7 @@ static void test_4() for(int i=0;i<4;i++) { delayMs(100); - if((t4_v1==true)||(tick!=getTick())) + if(t4_v1) { enableInterrupts();// fail("disableInterrupts"); @@ -983,7 +983,7 @@ static void test_4() for(int i=0;i<4;i++) { delayMs(100); - if((t4_v1==true)||(tick!=getTick())) + if(t4_v1) { fastEnableInterrupts();// fail("disableInterrupts"); @@ -1900,8 +1900,23 @@ isKernelRunning() areInterruptsEnabled() */ +static volatile bool t9_v1; + +void t9_p1(void*) +{ + for(;;) + { + if(Thread::testTerminate()) break; + t9_v1=true; + #ifdef SCHED_TYPE_EDF + Thread::sleep(1); + #endif //SCHED_TYPE_EDF + } +} + static void test_9() { + Thread *p=Thread::create(t9_p1,STACK_SMALL,0,NULL,Thread::JOINABLE); test_name("isKernelRunning and save/restore interrupts"); //Testing kernel_running with nested pause_kernel() if(isKernelRunning()==false) fail("isKernelRunning() (1)"); @@ -1927,12 +1942,11 @@ static void test_9() restartKernel();//1 if(isKernelRunning()==false) fail("isKernelRunning() (5)"); //Testing nesting of disableInterrupts() - long long i; if(areInterruptsEnabled()==false) fail("areInterruptsEnabled() (1)"); disableInterrupts();//Now interrupts should be disabled - i=getTick(); + t9_v1=false; delayMs(100); - if(i!=getTick()) + if(t9_v1) { enableInterrupts(); fail("disableInterrups() nesting (1)"); @@ -1943,9 +1957,8 @@ static void test_9() fail("areInterruptsEnabled() (2)"); } disableInterrupts();//Interrupts already disabled - i=getTick(); delayMs(100); - if(i!=getTick()) + if(t9_v1) { enableInterrupts(); fail("disableInterrups() nesting (2)"); @@ -1956,9 +1969,8 @@ static void test_9() fail("areInterruptsEnabled() (3)"); } enableInterrupts();//Now interrupts should remain disabled - i=getTick(); delayMs(100); - if(i!=getTick()) + if(t9_v1) { enableInterrupts(); fail("enableInterrupts() nesting (1)"); @@ -1969,14 +1981,15 @@ static void test_9() fail("areInterruptsEnabled() (4)"); } enableInterrupts();//Now interrupts should be enabled - i=getTick(); delayMs(100); - if(i==getTick()) + if(t9_v1==false) { enableInterrupts(); fail("enableInterrupts() nesting (2)"); } if(areInterruptsEnabled()==false) fail("areInterruptsEnabled() (5)"); + p->terminate(); + p->join(); pass(); } diff --git a/miosix/kernel/kernel.cpp b/miosix/kernel/kernel.cpp index 6a940657..139f97d5 100644 --- a/miosix/kernel/kernel.cpp +++ b/miosix/kernel/kernel.cpp @@ -254,7 +254,7 @@ long long getTick() if(a==b) return a; } #else //USE_CSTIMER - return timer->getCurrentTick(); + return timer->getCurrentTick()/CSQUANTUM; #endif //USE_CSTIMER } -- GitLab