summaryrefslogtreecommitdiff
path: root/examples/kernel
diff options
context:
space:
mode:
authorGrissiom <[email protected]>2013-12-21 13:18:09 +0800
committerGrissiom <[email protected]>2013-12-21 13:18:46 +0800
commitf6bf69f233688952391da88bff961ad267de381c (patch)
treea29e0d6c4e6fd9fba302a8eeffd49a0cb56980a2 /examples/kernel
parentf7b14218800ad7ed6c47c67d4d043a3340d63116 (diff)
TC: more tolerate for tick in TC thread
Diffstat (limited to 'examples/kernel')
-rw-r--r--examples/kernel/semaphore_static.c8
-rw-r--r--examples/kernel/thread_delay.c4
-rw-r--r--examples/kernel/thread_priority.c18
3 files changed, 17 insertions, 13 deletions
diff --git a/examples/kernel/semaphore_static.c b/examples/kernel/semaphore_static.c
index 2ffe3ae9e8..cb199886a4 100644
--- a/examples/kernel/semaphore_static.c
+++ b/examples/kernel/semaphore_static.c
@@ -27,9 +27,13 @@ static void thread_entry(void* parameter)
result = rt_sem_take(&sem, 10);
if (result == -RT_ETIMEOUT)
{
- /* 超时后判断是否刚好是10个OS Tick */
- if (rt_tick_get() - tick != 10)
+ rt_tick_t new_tick = rt_tick_get();
+ /* 可以有两个 tick 的误差 */
+ if (new_tick - tick >= 12)
{
+ rt_kprintf("tick error to large: expect: 10, get %d\n",
+ new_tick - tick);
+
tc_done(TC_STAT_FAILED);
rt_sem_detach(&sem);
return;
diff --git a/examples/kernel/thread_delay.c b/examples/kernel/thread_delay.c
index 30b673ca11..f9404d704c 100644
--- a/examples/kernel/thread_delay.c
+++ b/examples/kernel/thread_delay.c
@@ -14,7 +14,7 @@ static void thread_entry(void* parameter)
rt_kprintf("thread delay 10 tick\n");
tick = rt_tick_get();
rt_thread_delay(10);
- if (rt_tick_get() - tick > 10)
+ if (rt_tick_get() - tick > 11)
{
tc_done(TC_STAT_FAILED);
return;
@@ -23,7 +23,7 @@ static void thread_entry(void* parameter)
rt_kprintf("thread delay 15 tick\n");
tick = rt_tick_get();
rt_thread_delay(15);
- if (rt_tick_get() - tick > 15)
+ if (rt_tick_get() - tick > 16)
{
tc_done(TC_STAT_FAILED);
return;
diff --git a/examples/kernel/thread_priority.c b/examples/kernel/thread_priority.c
index 81a9bc0382..0045b0e578 100644
--- a/examples/kernel/thread_priority.c
+++ b/examples/kernel/thread_priority.c
@@ -45,21 +45,21 @@ int thread_priority_init()
rt_err_t result;
result = rt_thread_init(&thread1,
- "t1",
- thread1_entry, RT_NULL,
- &thread1_stack[0], sizeof(thread1_stack),
- THREAD_PRIORITY - 1, THREAD_TIMESLICE);
-
+ "t1",
+ thread1_entry, RT_NULL,
+ &thread1_stack[0], sizeof(thread1_stack),
+ THREAD_PRIORITY - 1, THREAD_TIMESLICE);
+
if (result == RT_EOK)
rt_thread_startup(&thread1);
else
tc_stat(TC_STAT_FAILED);
rt_thread_init(&thread2,
- "t2",
- thread2_entry, RT_NULL,
- &thread2_stack[0], sizeof(thread2_stack),
- THREAD_PRIORITY + 1, THREAD_TIMESLICE);
+ "t2",
+ thread2_entry, RT_NULL,
+ &thread2_stack[0], sizeof(thread2_stack),
+ THREAD_PRIORITY + 1, THREAD_TIMESLICE);
if (result == RT_EOK)
rt_thread_startup(&thread2);