summaryrefslogtreecommitdiffstats
path: root/cpukit/libmisc/testsupport/testbusy.c
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/libmisc/testsupport/testbusy.c')
-rw-r--r--cpukit/libmisc/testsupport/testbusy.c124
1 files changed, 0 insertions, 124 deletions
diff --git a/cpukit/libmisc/testsupport/testbusy.c b/cpukit/libmisc/testsupport/testbusy.c
deleted file mode 100644
index 4cc8aa01fe..0000000000
--- a/cpukit/libmisc/testsupport/testbusy.c
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright (c) 2014, 2018 embedded brains GmbH. All rights reserved.
- *
- * embedded brains GmbH
- * Dornierstr. 4
- * 82178 Puchheim
- * Germany
- * <rtems@embedded-brains.de>
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <rtems/test.h>
-#include <rtems.h>
-#include <rtems/score/threadimpl.h>
-
-static uint_fast32_t estimate_busy_loop_maximum( void )
-{
- uint_fast32_t units = 0;
- uint_fast32_t initial = rtems_clock_get_ticks_since_boot();
-
- while ( initial == rtems_clock_get_ticks_since_boot() ) {
- ++units;
- }
-
- return units;
-}
-
-static uint_fast32_t wait_for_tick_change( void )
-{
- uint_fast32_t initial = rtems_clock_get_ticks_since_boot();
- uint_fast32_t now;
-
- do {
- now = rtems_clock_get_ticks_since_boot();
- } while ( now == initial );
-
- return now;
-}
-
-/*
- * It is important that we use actually use the same rtems_test_busy() function
- * at the various places, since otherwise the obtained maximum value might be
- * wrong. So, the compiler must not inline this function.
- */
-RTEMS_NO_INLINE void rtems_test_busy( uint_fast32_t count )
-{
- uint_fast32_t i = 0;
-
- do {
- __asm__ volatile ("");
- ++i;
- } while ( i < count );
-}
-
-uint_fast32_t rtems_test_get_one_tick_busy_count( void )
-{
- uint_fast32_t last;
- uint_fast32_t now;
- uint_fast32_t a;
- uint_fast32_t b;
- uint_fast32_t m;
-
- /* Choose a lower bound */
- a = 1;
-
- /* Estimate an upper bound */
-
- wait_for_tick_change();
- b = 2 * estimate_busy_loop_maximum();
-
- while ( true ) {
- last = wait_for_tick_change();
- rtems_test_busy( b );
- now = rtems_clock_get_ticks_since_boot();
-
- if ( now != last ) {
- break;
- }
-
- b *= 2;
- last = now;
- }
-
- /* Find a good value */
- do {
- m = ( a + b ) / 2;
-
- last = wait_for_tick_change();
- rtems_test_busy( m );
- now = rtems_clock_get_ticks_since_boot();
-
- if ( now != last ) {
- b = m;
- } else {
- a = m;
- }
- } while ( b - a > 1 );
-
- return m;
-}
-
-void rtems_test_busy_cpu_usage( time_t seconds, long nanoseconds )
-{
- Thread_Control *executing;
- Timestamp_Control busy;
- Timestamp_Control start;
- Timestamp_Control now;
-
- executing = _Thread_Get_executing();
- _Thread_Get_CPU_time_used( executing, &start );
- _Timestamp_Set( &busy, seconds, nanoseconds );
-
- do {
- _Thread_Get_CPU_time_used( executing, &now );
- } while ( now - start < busy );
-}