[PATCH 2/4] posix: add clock_nanosleep and tests

Gedare Bloom gedare at rtems.org
Thu Jun 23 19:26:45 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