diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2011-03-03 14:38:54 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2011-03-03 14:38:54 +0000 |
commit | a8da4176aaf75a753f61b68f1f03ea33b9960af9 (patch) | |
tree | e2224d702b736215ef6765f1b434a36e38c7709a /misc/nanosecond_tick_wrap/init.c | |
parent | 2010-12-17 Joel Sherrill <joel.sherrill@oarcorp.com> (diff) | |
download | rtems-examples-a8da4176aaf75a753f61b68f1f03ea33b9960af9.tar.bz2 |
2011-03-03 Joel Sherrill <joel.sherrill@oarcorp.com>
PR 1749/bsps
* Makefile: Add new test program for wrapping clock tick.
* nanosecond_tick_wrap/.cvsignore, nanosecond_tick_wrap/Makefile,
nanosecond_tick_wrap/README, nanosecond_tick_wrap/init.c: New files.
Diffstat (limited to '')
-rw-r--r-- | misc/nanosecond_tick_wrap/init.c | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/misc/nanosecond_tick_wrap/init.c b/misc/nanosecond_tick_wrap/init.c new file mode 100644 index 0000000..1740df2 --- /dev/null +++ b/misc/nanosecond_tick_wrap/init.c @@ -0,0 +1,73 @@ +/* + * COPYRIGHT (c) 1989-2011. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + * + * $Id$ + */ + +/* Based upon code in PR1748 */ + +#include <stdio.h> +#include <stdlib.h> + +#include <bsp.h> + +#define LOOPS 1000 +uint32_t uptime_usec[LOOPS]; +struct timespec uptime[LOOPS]; + +rtems_task Init( + rtems_task_argument argument +) +{ + int i; + uint32_t t0=0; + + puts( "\n\n*** Nanosecond Clock Tick Wrap Test ***" ); + for ( i=0; i<LOOPS; i++ ) { + + rtems_clock_get_uptime( &uptime[i] ); + uptime_usec[i] = ((uint32_t)uptime[i].tv_sec * 1000000) + + ((uint32_t)uptime[i].tv_nsec / 1000); + } + + for ( i=0; i<LOOPS; i++ ) { + unsigned t1, usec, msec, sec; + + t1 = uptime_usec[i]; + usec = t1 % 1000; + msec = (t1 / 1000) % 1000; + sec = t1 / 1000000; + + printf( + "TEST:rtems=%u.%09u t=%u.%03u.%03u dt=%u\n", + uptime[i].tv_sec, uptime[i].tv_nsec, sec, msec, usec, (t1-t0) + ); + t0 = t1; + } + + puts( "*** END OF Nanosecond Clock Tick Wrap Test ***" ); + exit(0); +} + +/**************** START OF CONFIGURATION INFORMATION ****************/ + +#define CONFIGURE_INIT + +#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER +#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER + +#define CONFIGURE_MAXIMUM_TASKS 1 +#define CONFIGURE_MICROSECONDS_PER_TICK \ + (RTEMS_MILLISECONDS_TO_MICROSECONDS(1) / 2) + +#define CONFIGURE_RTEMS_INIT_TASKS_TABLE + +#include <rtems/confdefs.h> + +/**************** END OF CONFIGURATION INFORMATION ****************/ + |