[rtems commit] smpschededf01: Use rtems_test_busy_cpu_usage()
Sebastian Huber
sebh at rtems.org
Fri Feb 2 14:19:42 UTC 2018
Module: rtems
Branch: master
Commit: cf56b18af117c289015162e7fe533fcf6968e61f
Changeset: http://git.rtems.org/rtems/commit/?id=cf56b18af117c289015162e7fe533fcf6968e61f
Author: Sebastian Huber <sebastian.huber at embedded-brains.de>
Date: Fri Feb 2 07:48:08 2018 +0100
smpschededf01: Use rtems_test_busy_cpu_usage()
The rtems_test_busy() is not accurate enough and may lead to sporadic
test failures.
---
testsuites/smptests/smpschededf01/init.c | 16 +++++-----------
1 file changed, 5 insertions(+), 11 deletions(-)
diff --git a/testsuites/smptests/smpschededf01/init.c b/testsuites/smptests/smpschededf01/init.c
index bf9b93c..9f53a96 100644
--- a/testsuites/smptests/smpschededf01/init.c
+++ b/testsuites/smptests/smpschededf01/init.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2017, 2018 embedded brains GmbH. All rights reserved.
*
* embedded brains GmbH
* Dornierstr. 4
@@ -24,18 +24,16 @@
const char rtems_test_name[] = "SMPSCHEDEDF 1";
typedef struct {
- uint_fast32_t one_tick_busy;
rtems_id task[2];
} test_context;
static test_context test_instance;
-static void t(test_context *ctx, rtems_interval p, uint_fast32_t c)
+static void t(test_context *ctx, rtems_interval p, long nanoseconds)
{
rtems_status_code sc;
rtems_id period;
rtems_name name;
- uint_fast32_t busy;
sc = rtems_object_get_classic_name(rtems_task_self(), &name);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
@@ -43,10 +41,8 @@ static void t(test_context *ctx, rtems_interval p, uint_fast32_t c)
sc = rtems_rate_monotonic_create(name, &period);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
- busy = (c - 1) * ctx->one_tick_busy + (4 * ctx->one_tick_busy) / 5;
-
while (true) {
- rtems_test_busy(busy);
+ rtems_test_busy_cpu_usage(0, nanoseconds);
sc = rtems_rate_monotonic_period(period, p);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
@@ -57,22 +53,20 @@ static void t1(rtems_task_argument arg)
{
test_context *ctx = (test_context *) arg;
- t(ctx, 50, 25);
+ t(ctx, 50, 25000000);
}
static void t2(rtems_task_argument arg)
{
test_context *ctx = (test_context *) arg;
- t(ctx, 75, 30);
+ t(ctx, 75, 30000000);
}
static void test(test_context *ctx)
{
rtems_status_code sc;
- ctx->one_tick_busy = rtems_test_get_one_tick_busy_count();
-
sc = rtems_task_create(
rtems_build_name('T', '1', ' ', ' '),
2,
More information about the vc
mailing list