File indexing completed on 2025-05-11 08:24:48
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028 #ifdef HAVE_CONFIG_H
0029 #include "config.h"
0030 #endif
0031
0032 #include <tmacros.h>
0033
0034 const char rtems_test_name[] = "SPNSEXT 1";
0035
0036 static rtems_task Init(rtems_task_argument argument)
0037 {
0038 rtems_status_code sc = RTEMS_SUCCESSFUL;
0039 RTEMS_INTERRUPT_LOCK_DECLARE(, lock)
0040 rtems_interrupt_lock_context lock_context;
0041 rtems_interval t0 = 0;
0042 rtems_interval t1 = 0;
0043 int i = 0;
0044 int n = 0;
0045 struct timespec uptime;
0046 struct timespec new_uptime;
0047
0048 TEST_BEGIN();
0049
0050
0051 t0 = rtems_clock_get_ticks_since_boot();
0052 while ((t1 = rtems_clock_get_ticks_since_boot()) == t0) {
0053
0054 }
0055
0056 t0 = t1;
0057 sc = rtems_clock_get_uptime(&uptime);
0058 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0059 while ((t1 = rtems_clock_get_ticks_since_boot()) == t0) {
0060 ++n;
0061 sc = rtems_clock_get_uptime(&new_uptime);
0062 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0063 rtems_test_assert(!_Timespec_Less_than(&new_uptime, &uptime));
0064 uptime = new_uptime;
0065 }
0066
0067 n = (3 * n) / 2;
0068
0069 rtems_interrupt_lock_initialize(&lock, "test");
0070 rtems_interrupt_lock_acquire(&lock, &lock_context);
0071 sc = rtems_clock_get_uptime(&uptime);
0072 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0073 for (i = 0; i < n; ++i) {
0074
0075 rtems_clock_get_ticks_since_boot();
0076
0077 sc = rtems_clock_get_uptime(&new_uptime);
0078 rtems_test_assert(sc == RTEMS_SUCCESSFUL);
0079 rtems_test_assert(!_Timespec_Less_than(&new_uptime, &uptime));
0080 uptime = new_uptime;
0081 }
0082 rtems_interrupt_lock_release(&lock, &lock_context);
0083 rtems_interrupt_lock_destroy(&lock);
0084
0085 TEST_END();
0086
0087 rtems_test_exit(0);
0088 }
0089
0090 #define CONFIGURE_INIT
0091
0092 #define CONFIGURE_MICROSECONDS_PER_TICK 100000
0093
0094 #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
0095 #define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
0096
0097 #define CONFIGURE_MAXIMUM_TASKS 1
0098
0099 #define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
0100
0101 #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
0102
0103 #include <rtems/confdefs.h>