[PATCH 2/5] posix: add clock_nanosleep and tests
Gedare Bloom
gedare at rtems.org
Wed Jul 13 17:39:47 UTC 2016
updates #2732
---
cpukit/posix/src/nanosleep.c | 55 ++++++++--
testsuites/psxtests/psxhdrs/Makefile.am | 1 +
testsuites/psxtests/psxhdrs/time/clock_nanosleep.c | 35 +++++++
testsuites/psxtmtests/Makefile.am | 3 +
testsuites/psxtmtests/configure.ac | 3 +
.../psxtmtests/psxtmclocknanosleep01/Makefile.am | 25 +++++
testsuites/psxtmtests/psxtmclocknanosleep01/init.c | 59 +++++++++++
.../psxtmclocknanosleep01.doc | 12 +++
.../psxtmtests/psxtmclocknanosleep02/Makefile.am | 25 +++++
testsuites/psxtmtests/psxtmclocknanosleep02/init.c | 109 ++++++++++++++++++++
.../psxtmclocknanosleep02.doc | 10 ++
.../psxtmtests/psxtmclocknanosleep03/Makefile.am | 25 +++++
testsuites/psxtmtests/psxtmclocknanosleep03/init.c | 114 +++++++++++++++++++++
.../psxtmclocknanosleep03.doc | 10 ++
14 files changed, 477 insertions(+), 9 deletions(-)
create mode 100644 testsuites/psxtests/psxhdrs/time/clock_nanosleep.c
create mode 100644 testsuites/psxtmtests/psxtmclocknanosleep01/Makefile.am
create mode 100644 testsuites/psxtmtests/psxtmclocknanosleep01/init.c
create mode 100644 testsuites/psxtmtests/psxtmclocknanosleep01/psxtmclocknanosleep01.doc
create mode 100644 testsuites/psxtmtests/psxtmclocknanosleep02/Makefile.am
create mode 100644 testsuites/psxtmtests/psxtmclocknanosleep02/init.c
create mode 100644 testsuites/psxtmtests/psxtmclocknanosleep02/psxtmclocknanosleep02.doc
create mode 100644 testsuites/psxtmtests/psxtmclocknanosleep03/Makefile.am
create mode 100644 testsuites/psxtmtests/psxtmclocknanosleep03/init.c
create mode 100644 testsuites/psxtmtests/psxtmclocknanosleep03/psxtmclocknanosleep03.doc
diff --git a/cpukit/posix/src/nanosleep.c b/cpukit/posix/src/nanosleep.c
index 8fc86d6..e60dd53 100644
--- a/cpukit/posix/src/nanosleep.c
+++ b/cpukit/posix/src/nanosleep.c
@@ -8,6 +8,8 @@
/*
* COPYRIGHT (c) 1989-2015.
* On-Line Applications Research Corporation (OAR).
+ *
+ * Copyright (c) 2016. Gedare Bloom.
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
@@ -30,12 +32,10 @@
static Thread_queue_Control _Nanosleep_Pseudo_queue =
THREAD_QUEUE_INITIALIZER( "Nanosleep" );
-/*
- * 14.2.5 High Resolution Sleep, P1003.1b-1993, p. 269
- */
-int nanosleep(
+static inline int nanosleep_helper(
const struct timespec *rqtp,
- struct timespec *rmtp
+ struct timespec *rmtp,
+ Watchdog_Discipline discipline
)
{
/*
@@ -57,7 +57,7 @@ int nanosleep(
* FSU and GNU/Linux pthreads shares this behavior.
*/
if ( !_Timespec_Is_valid( rqtp ) )
- rtems_set_errno_and_return_minus_one( EINVAL );
+ return EINVAL;
/*
* Convert the timespec delay into the appropriate number of clock ticks.
@@ -93,7 +93,7 @@ int nanosleep(
executing,
STATES_DELAYING | STATES_INTERRUPTIBLE_BY_SIGNAL,
ticks,
- WATCHDOG_RELATIVE,
+ discipline,
1
);
@@ -110,7 +110,7 @@ int nanosleep(
/*
* If the user wants the time remaining, do the conversion.
*/
- if ( rmtp ) {
+ if ( rmtp && discipline == WATCHDOG_RELATIVE ) {
_Timespec_From_ticks( ticks, rmtp );
}
@@ -122,8 +122,45 @@ int nanosleep(
* If there is time remaining, then we were interrupted by a signal.
*/
if ( ticks )
- rtems_set_errno_and_return_minus_one( EINTR );
+ return EINTR;
#endif
return 0;
}
+/*
+ * 14.2.5 High Resolution Sleep, P1003.1b-1993, p. 269
+ */
+int nanosleep(
+ const struct timespec *rqtp,
+ struct timespec *rmtp
+)
+{
+ int err = nanosleep_helper(rqtp, rmtp, WATCHDOG_RELATIVE);
+ if (err) {
+ rtems_set_errno_and_return_minus_one( err );
+ }
+ return 0;
+}
+
+/*
+ * High Resolution Sleep with Specifiable Clock, IEEE Std 1003.1, 2001
+ */
+int clock_nanosleep(
+ clockid_t clock_id,
+ int flags,
+ const struct timespec *rqtp,
+ struct timespec *rmtp
+)
+{
+ int err = 0;
+ if ( clock_id == CLOCK_REALTIME || clock_id == CLOCK_MONOTONIC ) {
+ if ( flags & TIMER_ABSTIME ) {
+ err = nanosleep_helper(rqtp, rmtp, WATCHDOG_ABSOLUTE);
+ } else {
+ err = nanosleep_helper(rqtp, rmtp, WATCHDOG_RELATIVE);
+ }
+ } else {
+ err = ENOTSUP;
+ }
+ return err;
+}
diff --git a/testsuites/psxtests/psxhdrs/Makefile.am b/testsuites/psxtests/psxhdrs/Makefile.am
index 3eecd84..3c60f8d 100644
--- a/testsuites/psxtests/psxhdrs/Makefile.am
+++ b/testsuites/psxtests/psxhdrs/Makefile.am
@@ -95,6 +95,7 @@ lib_a_SOURCES += time/clock.c
lib_a_SOURCES += time/clock_getcpuclockid.c
lib_a_SOURCES += time/clock_getres.c
lib_a_SOURCES += time/clock_gettime.c
+lib_a_SOURCES += time/clock_nanosleep.c
lib_a_SOURCES += time/clock_settime.c
lib_a_SOURCES += time/ctime.c
lib_a_SOURCES += time/ctime_r.c
diff --git a/testsuites/psxtests/psxhdrs/time/clock_nanosleep.c b/testsuites/psxtests/psxhdrs/time/clock_nanosleep.c
new file mode 100644
index 0000000..d13100d
--- /dev/null
+++ b/testsuites/psxtests/psxhdrs/time/clock_nanosleep.c
@@ -0,0 +1,35 @@
+/*
+ * This test file is used to verify that the header files associated with
+ * invoking this function are correct.
+ *
+ * Copyright (c) 2016 Gedare Bloom.
+ *
+ * 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 <time.h>
+
+#ifndef _POSIX_TIMERS
+#error "rtems is supposed to have clock_nanosleep"
+#endif
+
+int test( void );
+
+int test( void )
+{
+ struct timespec rqtp;
+ struct timespec rmtp;
+ int result;
+
+ rqtp.tv_sec = 0;
+ rqtp.tv_nsec = 0;
+ result = clock_nanosleep( CLOCK_REALTIME, 0, &rqtp, &rmtp );
+
+ return result;
+}
diff --git a/testsuites/psxtmtests/Makefile.am b/testsuites/psxtmtests/Makefile.am
index c4276a4..e7e079a 100644
--- a/testsuites/psxtmtests/Makefile.am
+++ b/testsuites/psxtmtests/Makefile.am
@@ -7,6 +7,9 @@ SUBDIRS += psxtmbarrier01
SUBDIRS += psxtmbarrier02
SUBDIRS += psxtmbarrier03
SUBDIRS += psxtmbarrier04
+SUBDIRS += psxtmclocknanosleep01
+SUBDIRS += psxtmclocknanosleep02
+SUBDIRS += psxtmclocknanosleep03
SUBDIRS += psxtmcond01
SUBDIRS += psxtmcond02
SUBDIRS += psxtmcond03
diff --git a/testsuites/psxtmtests/configure.ac b/testsuites/psxtmtests/configure.ac
index 13cf945..b3ab540 100644
--- a/testsuites/psxtmtests/configure.ac
+++ b/testsuites/psxtmtests/configure.ac
@@ -81,6 +81,9 @@ psxtmbarrier01/Makefile
psxtmbarrier02/Makefile
psxtmbarrier03/Makefile
psxtmbarrier04/Makefile
+psxtmclocknanosleep01/Makefile
+psxtmclocknanosleep02/Makefile
+psxtmclocknanosleep03/Makefile
psxtmcond01/Makefile
psxtmcond02/Makefile
psxtmcond03/Makefile
diff --git a/testsuites/psxtmtests/psxtmclocknanosleep01/Makefile.am b/testsuites/psxtmtests/psxtmclocknanosleep01/Makefile.am
new file mode 100644
index 0000000..2476b6b
--- /dev/null
+++ b/testsuites/psxtmtests/psxtmclocknanosleep01/Makefile.am
@@ -0,0 +1,25 @@
+
+rtems_tests_PROGRAMS = psxtmclocknanosleep01
+psxtmclocknanosleep01_SOURCES = init.c ../../tmtests/include/timesys.h \
+ ../../support/src/tmtests_empty_function.c \
+ ../../support/src/tmtests_support.c
+
+dist_rtems_tests_DATA = psxtmclocknanosleep01.doc
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP at .cfg
+include $(top_srcdir)/../automake/compile.am
+include $(top_srcdir)/../automake/leaf.am
+
+OPERATION_COUNT = @OPERATION_COUNT@
+AM_CPPFLAGS += -I$(top_srcdir)/../tmtests/include
+AM_CPPFLAGS += -DOPERATION_COUNT=$(OPERATION_COUNT)
+AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+
+LINK_OBJS = $(psxtmclocknanosleep01_OBJECTS)
+LINK_LIBS = $(psxtmclocknanosleep01_LDLIBS)
+
+psxtmclocknanosleep01$(EXEEXT): $(psxtmclocknanosleep01_OBJECTS) $(psxtmclocknanosleep01_DEPENDENCIES)
+ @rm -f psxtmclocknanosleep01$(EXEEXT)
+ $(make-exe)
+
+include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/psxtmtests/psxtmclocknanosleep01/init.c b/testsuites/psxtmtests/psxtmclocknanosleep01/init.c
new file mode 100644
index 0000000..86c1f5f
--- /dev/null
+++ b/testsuites/psxtmtests/psxtmclocknanosleep01/init.c
@@ -0,0 +1,59 @@
+/*
+ * COPYRIGHT (c) 1989-2013.
+ * On-Line Applications Research Corporation (OAR).
+ *
+ * Copyright (c) 2016. Gedare Bloom.
+ *
+ * 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 <timesys.h>
+#include <rtems/btimer.h>
+#include "test_support.h"
+
+const char rtems_test_name[] = "PSXTMCLOCKNANOSLEEP 01";
+
+/* forward declarations to avoid warnings */
+void *POSIX_Init(void *argument);
+
+void *POSIX_Init(
+ void *argument
+)
+{
+ benchmark_timer_t end_time;
+ struct timespec sleepTime;
+
+ sleepTime.tv_sec = 0;
+ sleepTime.tv_nsec = 0;
+
+ TEST_BEGIN();
+
+ benchmark_timer_initialize();
+ clock_nanosleep( CLOCK_REALTIME, 0, &sleepTime, (struct timespec *) NULL );
+ end_time = benchmark_timer_read();
+
+ put_time( "nanosleep: yield", end_time, 1, 0, 0 );
+
+ TEST_END();
+
+ rtems_test_exit(0);
+}
+
+/* configuration information */
+
+#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
+#define CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER
+
+#define CONFIGURE_MAXIMUM_POSIX_THREADS 1
+#define CONFIGURE_POSIX_INIT_THREAD_TABLE
+
+#define CONFIGURE_INIT
+
+#include <rtems/confdefs.h>
+/* end of file */
diff --git a/testsuites/psxtmtests/psxtmclocknanosleep01/psxtmclocknanosleep01.doc b/testsuites/psxtmtests/psxtmclocknanosleep01/psxtmclocknanosleep01.doc
new file mode 100644
index 0000000..67370cf
--- /dev/null
+++ b/testsuites/psxtmtests/psxtmclocknanosleep01/psxtmclocknanosleep01.doc
@@ -0,0 +1,12 @@
+# Copyright 2016. Gedare Bloom.
+#
+# 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.
+#
+
+This test benchmarks the following operations:
+
++ Benchmark a call to clock_nanosleep() which yields
+
+
diff --git a/testsuites/psxtmtests/psxtmclocknanosleep02/Makefile.am b/testsuites/psxtmtests/psxtmclocknanosleep02/Makefile.am
new file mode 100644
index 0000000..6e651eb
--- /dev/null
+++ b/testsuites/psxtmtests/psxtmclocknanosleep02/Makefile.am
@@ -0,0 +1,25 @@
+
+rtems_tests_PROGRAMS = psxtmclocknanosleep02
+psxtmclocknanosleep02_SOURCES = init.c ../../tmtests/include/timesys.h \
+ ../../support/src/tmtests_empty_function.c \
+ ../../support/src/tmtests_support.c
+
+dist_rtems_tests_DATA = psxtmclocknanosleep02.doc
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP at .cfg
+include $(top_srcdir)/../automake/compile.am
+include $(top_srcdir)/../automake/leaf.am
+
+OPERATION_COUNT = @OPERATION_COUNT@
+AM_CPPFLAGS += -I$(top_srcdir)/../tmtests/include
+AM_CPPFLAGS += -DOPERATION_COUNT=$(OPERATION_COUNT)
+AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+
+LINK_OBJS = $(psxtmclocknanosleep02_OBJECTS)
+LINK_LIBS = $(psxtmclocknanosleep02_LDLIBS)
+
+psxtmclocknanosleep02$(EXEEXT): $(psxtmclocknanosleep02_OBJECTS) $(psxtmclocknanosleep02_DEPENDENCIES)
+ @rm -f psxtmclocknanosleep02$(EXEEXT)
+ $(make-exe)
+
+include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/psxtmtests/psxtmclocknanosleep02/init.c b/testsuites/psxtmtests/psxtmclocknanosleep02/init.c
new file mode 100644
index 0000000..b35a82b
--- /dev/null
+++ b/testsuites/psxtmtests/psxtmclocknanosleep02/init.c
@@ -0,0 +1,109 @@
+/*
+ * COPYRIGHT (c) 1989-2013.
+ * On-Line Applications Research Corporation (OAR).
+ *
+ * Copyright (c) 2016. Gedare Bloom.
+ *
+ * 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 <timesys.h>
+#include <rtems/btimer.h>
+#include "test_support.h"
+
+#include <pthread.h>
+
+const char rtems_test_name[] = "PSXTMCLOCKNANOSLEEP 02";
+
+/* forward declarations to avoid warnings */
+void *POSIX_Init(void *argument);
+void *Middle(void *argument);
+void *Low(void *argument);
+
+void *Low(
+ void *argument
+)
+{
+ benchmark_timer_t end_time;
+
+ end_time = benchmark_timer_read();
+
+ put_time(
+ "clock_nanosleep: blocking",
+ end_time,
+ OPERATION_COUNT,
+ 0,
+ 0
+ );
+
+ TEST_END();
+
+ rtems_test_exit( 0 );
+ return NULL;
+}
+
+void *Middle(
+ void *argument
+)
+{
+ /* calling nanosleep */
+ struct timespec sleepTime;
+ sleepTime.tv_sec = 0;
+ sleepTime.tv_nsec = 1;
+
+ clock_nanosleep(CLOCK_REALTIME, 0, &sleepTime, (struct timespec *) NULL);
+
+ return NULL;
+}
+
+void *POSIX_Init(
+ void *argument
+)
+{
+ int i;
+ int status;
+ pthread_t threadId;
+ struct timespec sleepTime;
+ struct timespec remainder;
+
+ sleepTime.tv_sec = 0;
+ sleepTime.tv_nsec = 1;
+ remainder.tv_sec = 0;
+ remainder.tv_nsec = 0;
+
+ TEST_BEGIN();
+
+ for ( i=0 ; i < OPERATION_COUNT - 1 ; i++ ) {
+ status = pthread_create( &threadId, NULL, Middle, NULL );
+ rtems_test_assert( !status );
+ }
+
+ status = pthread_create( &threadId, NULL, Low, NULL );
+ rtems_test_assert( !status );
+
+ /* start the timer and switch through all the other tasks */
+ benchmark_timer_initialize();
+ /* calling clock_nanosleep*/
+ clock_nanosleep(CLOCK_REALTIME, 0, &sleepTime, &remainder);
+
+ return NULL;
+}
+
+/* configuration information */
+
+#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
+#define CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER
+
+#define CONFIGURE_MAXIMUM_POSIX_THREADS OPERATION_COUNT + 2
+#define CONFIGURE_POSIX_INIT_THREAD_TABLE
+
+#define CONFIGURE_INIT
+
+#include <rtems/confdefs.h>
+ /* end of file */
diff --git a/testsuites/psxtmtests/psxtmclocknanosleep02/psxtmclocknanosleep02.doc b/testsuites/psxtmtests/psxtmclocknanosleep02/psxtmclocknanosleep02.doc
new file mode 100644
index 0000000..4724ae5
--- /dev/null
+++ b/testsuites/psxtmtests/psxtmclocknanosleep02/psxtmclocknanosleep02.doc
@@ -0,0 +1,10 @@
+# Copyright (c) 2016. Gedare Bloom
+#
+# 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.
+#
+
+This test benchmarks the following operations:
+
++ clock_nanosleep - blocking
diff --git a/testsuites/psxtmtests/psxtmclocknanosleep03/Makefile.am b/testsuites/psxtmtests/psxtmclocknanosleep03/Makefile.am
new file mode 100644
index 0000000..1c8fb55
--- /dev/null
+++ b/testsuites/psxtmtests/psxtmclocknanosleep03/Makefile.am
@@ -0,0 +1,25 @@
+
+rtems_tests_PROGRAMS = psxtmclocknanosleep03
+psxtmclocknanosleep03_SOURCES = init.c ../../tmtests/include/timesys.h \
+ ../../support/src/tmtests_empty_function.c \
+ ../../support/src/tmtests_support.c
+
+dist_rtems_tests_DATA = psxtmclocknanosleep03.doc
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP at .cfg
+include $(top_srcdir)/../automake/compile.am
+include $(top_srcdir)/../automake/leaf.am
+
+OPERATION_COUNT = @OPERATION_COUNT@
+AM_CPPFLAGS += -I$(top_srcdir)/../tmtests/include
+AM_CPPFLAGS += -DOPERATION_COUNT=$(OPERATION_COUNT)
+AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+
+LINK_OBJS = $(psxtmclocknanosleep03_OBJECTS)
+LINK_LIBS = $(psxtmclocknanosleep03_LDLIBS)
+
+psxtmclocknanosleep03$(EXEEXT): $(psxtmclocknanosleep03_OBJECTS) $(psxtmclocknanosleep03_DEPENDENCIES)
+ @rm -f psxtmclocknanosleep03$(EXEEXT)
+ $(make-exe)
+
+include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/psxtmtests/psxtmclocknanosleep03/init.c b/testsuites/psxtmtests/psxtmclocknanosleep03/init.c
new file mode 100644
index 0000000..ccceada
--- /dev/null
+++ b/testsuites/psxtmtests/psxtmclocknanosleep03/init.c
@@ -0,0 +1,114 @@
+/*
+ * COPYRIGHT (c) 1989-2013.
+ * On-Line Applications Research Corporation (OAR).
+ *
+ * Copyright (c) 2016. Gedare Bloom.
+ *
+ * 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 <timesys.h>
+#include <rtems/btimer.h>
+#include "test_support.h"
+
+#include <pthread.h>
+
+const char rtems_test_name[] = "PSXTMCLOCKNANOSLEEP 03";
+
+/* forward declarations to avoid warnings */
+void *POSIX_Init(void *argument);
+void *Middle(void *argument);
+void *Low(void *argument);
+
+void *Low(
+ void *argument
+)
+{
+ benchmark_timer_t end_time;
+
+ end_time = benchmark_timer_read();
+
+ put_time(
+ "clock_nanosleep: blocking",
+ end_time,
+ OPERATION_COUNT,
+ 0,
+ 0
+ );
+
+ TEST_END();
+
+ rtems_test_exit( 0 );
+ return NULL;
+}
+
+void *Middle(
+ void *argument
+)
+{
+ /* calling nanosleep */
+ struct timespec sleepTime;
+ sleepTime.tv_sec = 0;
+ sleepTime.tv_nsec = 1;
+
+ clock_nanosleep(
+ CLOCK_REALTIME,
+ TIMER_ABSTIME,
+ &sleepTime,
+ (struct timespec *) NULL
+ );
+
+ return NULL;
+}
+
+void *POSIX_Init(
+ void *argument
+)
+{
+ int i;
+ int status;
+ pthread_t threadId;
+ struct timespec sleepTime;
+ struct timespec remainder;
+
+ sleepTime.tv_sec = 0;
+ sleepTime.tv_nsec = 1;
+ remainder.tv_sec = 0;
+ remainder.tv_nsec = 0;
+
+ TEST_BEGIN();
+
+ for ( i=0 ; i < OPERATION_COUNT - 1 ; i++ ) {
+ status = pthread_create( &threadId, NULL, Middle, NULL );
+ rtems_test_assert( !status );
+ }
+
+ status = pthread_create( &threadId, NULL, Low, NULL );
+ rtems_test_assert( !status );
+
+ /* start the timer and switch through all the other tasks */
+ benchmark_timer_initialize();
+ /* calling clock_nanosleep*/
+ clock_nanosleep(CLOCK_REALTIME, TIMER_ABSTIME, &sleepTime, &remainder);
+
+ return NULL;
+}
+
+/* configuration information */
+
+#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
+#define CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER
+
+#define CONFIGURE_MAXIMUM_POSIX_THREADS OPERATION_COUNT + 2
+#define CONFIGURE_POSIX_INIT_THREAD_TABLE
+
+#define CONFIGURE_INIT
+
+#include <rtems/confdefs.h>
+ /* end of file */
diff --git a/testsuites/psxtmtests/psxtmclocknanosleep03/psxtmclocknanosleep03.doc b/testsuites/psxtmtests/psxtmclocknanosleep03/psxtmclocknanosleep03.doc
new file mode 100644
index 0000000..8ea20f6
--- /dev/null
+++ b/testsuites/psxtmtests/psxtmclocknanosleep03/psxtmclocknanosleep03.doc
@@ -0,0 +1,10 @@
+# Copyright (c) 2016. Gedare Bloom
+#
+# 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.
+#
+
+This test benchmarks the following operations:
+
++ clock_nanosleep - blocking with TIMER_ABSTIME
--
1.9.1
More information about the devel
mailing list