From 6131b849081335e101f92b4a99e01572153d44f5 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Wed, 9 Mar 2016 15:15:37 -0600 Subject: Add pthread_condattr_getclock() and pthread_condattr_setclock() updates #2608. --- testsuites/psxtests/Makefile.am | 2 +- testsuites/psxtests/configure.ac | 1 + testsuites/psxtests/psxcond02/Makefile.am | 24 +++++++ testsuites/psxtests/psxcond02/init.c | 105 ++++++++++++++++++++++++++++ testsuites/psxtests/psxcond02/psxcond02.doc | 27 +++++++ testsuites/psxtests/psxcond02/psxcond02.scn | 12 ++++ 6 files changed, 170 insertions(+), 1 deletion(-) create mode 100644 testsuites/psxtests/psxcond02/Makefile.am create mode 100644 testsuites/psxtests/psxcond02/init.c create mode 100644 testsuites/psxtests/psxcond02/psxcond02.doc create mode 100644 testsuites/psxtests/psxcond02/psxcond02.scn (limited to 'testsuites/psxtests') diff --git a/testsuites/psxtests/Makefile.am b/testsuites/psxtests/Makefile.am index 6dd5649a34..a3bffb900f 100644 --- a/testsuites/psxtests/Makefile.am +++ b/testsuites/psxtests/Makefile.am @@ -7,7 +7,7 @@ _SUBDIRS += psxhdrs psx01 psx02 psx03 psx04 psx05 psx06 psx07 psx08 psx09 \ psxaio01 psxaio02 psxaio03 \ psxalarm01 psxautoinit01 psxautoinit02 psxbarrier01 \ psxcancel psxcancel01 psxclassic01 psxcleanup psxcleanup01 \ - psxconcurrency01 psxcond01 psxconfig01 psxenosys \ + psxconcurrency01 psxcond01 psxcond02 psxconfig01 psxenosys \ psxitimer psxmsgq01 psxmsgq02 psxmsgq03 psxmsgq04 \ psxmutexattr01 psxobj01 psxrwlock01 psxsem01 psxsignal01 psxsignal02 \ psxsignal03 psxsignal04 psxsignal05 psxsignal06 \ diff --git a/testsuites/psxtests/configure.ac b/testsuites/psxtests/configure.ac index 779e0b5d15..be4a21f6c7 100644 --- a/testsuites/psxtests/configure.ac +++ b/testsuites/psxtests/configure.ac @@ -145,6 +145,7 @@ psxclock/Makefile psxclock01/Makefile psxconcurrency01/Makefile psxcond01/Makefile +psxcond02/Makefile psxconfig01/Makefile psxeintr_join/Makefile psxenosys/Makefile diff --git a/testsuites/psxtests/psxcond02/Makefile.am b/testsuites/psxtests/psxcond02/Makefile.am new file mode 100644 index 0000000000..82aa29c20e --- /dev/null +++ b/testsuites/psxtests/psxcond02/Makefile.am @@ -0,0 +1,24 @@ + +rtems_tests_PROGRAMS = psxcond02 +psxcond02_SOURCES = init.c ../include/pmacros.h + +dist_rtems_tests_DATA = psxcond02.scn +dist_rtems_tests_DATA += psxcond02.doc + +include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg +include $(top_srcdir)/../automake/compile.am +include $(top_srcdir)/../automake/leaf.am + + +AM_CPPFLAGS += -I$(top_srcdir)/include +AM_CPPFLAGS += -I$(top_srcdir)/../support/include + +LINK_OBJS = $(psxcond02_OBJECTS) +LINK_LIBS = $(psxcond02_LDLIBS) + +psxcond02$(EXEEXT): $(psxcond02_OBJECTS) \ + $(psxcond02_DEPENDENCIES) + @rm -f psxcond02$(EXEEXT) + $(make-exe) + +include $(top_srcdir)/../automake/local.am diff --git a/testsuites/psxtests/psxcond02/init.c b/testsuites/psxtests/psxcond02/init.c new file mode 100644 index 0000000000..6314762285 --- /dev/null +++ b/testsuites/psxtests/psxcond02/init.c @@ -0,0 +1,105 @@ +/* + * COPYRIGHT (c) 2016. + * 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.org/license/LICENSE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "tmacros.h" +#include +#include +#include + +const char rtems_test_name[] = "PSXCOND 2"; + +/* forward declarations to avoid warnings */ +void *POSIX_Init(void *argument); + +static void test_exercise_clock_attribute_errors(void) +{ + int sc; + pthread_condattr_t attr; + clockid_t clock; + + /* NULL attribute pointer errors */ + puts( "pthread_condattr_getclock (NULL attribute) - EINVAL" ); + sc = pthread_condattr_getclock( NULL, &clock ); + fatal_posix_service_status( sc, EINVAL, "condattr getclock" ); + + puts( "pthread_condattr_getclock (NULL clock) - EINVAL" ); + sc = pthread_condattr_getclock( &attr, NULL ); + fatal_posix_service_status( sc, EINVAL, "condattr getclock" ); + + puts( "pthread_condattr_setclock (NULL attribute) - EINVAL" ); + sc = pthread_condattr_setclock( NULL, CLOCK_REALTIME ); + fatal_posix_service_status( sc, EINVAL, "condattr setclock" ); + + /* invalid clock errors */ + puts( "pthread_condattr_init - OK" ); + sc = pthread_condattr_init( &attr ); + fatal_posix_service_status( sc, 0, "condattr init" ); + + puts( "pthread_condattr_setclock (bad clock)- EINVAL" ); + sc = pthread_condattr_setclock( &attr, -1 ); + fatal_posix_service_status( sc, EINVAL, "condattr setclock" ); + + puts( "pthread_condattr_setclock (CLOCK_PROCESS_CPUTIME_ID)- EINVAL" ); + sc = pthread_condattr_setclock( &attr, CLOCK_PROCESS_CPUTIME_ID ); + fatal_posix_service_status( sc, EINVAL, "condattr setclock" ); + + puts( "pthread_condattr_setclock (CLOCK_THREAD_CPUTIME_ID)- EINVAL" ); + sc = pthread_condattr_setclock( &attr, CLOCK_THREAD_CPUTIME_ID ); + fatal_posix_service_status( sc, EINVAL, "condattr setclock" ); +} + +static void test_exercise_clock_attribute(void) +{ + int sc; + pthread_condattr_t attr; + + puts( "pthread_condattr_init - OK" ); + sc = pthread_condattr_init( &attr ); + fatal_posix_service_status( sc, 0, "condattr init" ); + + puts( "pthread_condattr_setclock (CLOCK_REALTIME)- OK" ); + sc = pthread_condattr_setclock( &attr, CLOCK_REALTIME ); + fatal_posix_service_status( sc, 0, "condattr setclock" ); + + puts( "pthread_condattr_setclock (CLOCK_MONOTONIC)- OK" ); + sc = pthread_condattr_setclock( &attr, CLOCK_MONOTONIC ); + fatal_posix_service_status( sc, 0, "condattr setclock" ); +} + +void *POSIX_Init( + void *argument +) +{ + TEST_BEGIN(); + + test_exercise_clock_attribute_errors(); + + test_exercise_clock_attribute(); + + TEST_END(); + rtems_test_exit( 0 ); + + return NULL; /* just so the compiler thinks we returned something */ +} + +#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER +#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER + +#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION + +#define CONFIGURE_MAXIMUM_POSIX_THREADS 1 + +#define CONFIGURE_POSIX_INIT_THREAD_TABLE + +#define CONFIGURE_INIT +#include diff --git a/testsuites/psxtests/psxcond02/psxcond02.doc b/testsuites/psxtests/psxcond02/psxcond02.doc new file mode 100644 index 0000000000..9e6f88a212 --- /dev/null +++ b/testsuites/psxtests/psxcond02/psxcond02.doc @@ -0,0 +1,27 @@ +# COPYRIGHT (c) 2016 +# 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.org/license/LICENSE. +# + +This file describes the directives and concepts tested by this test set. + +test set name: psxcond02 + +directives: + + pthread_condattr_init + pthread_condcondattr_getclock + pthread_condcondattr_setclock + +concepts: + ++ Verify error conditions in pthread_condattr_getclock + ++ Verify error conditions in pthread_condattr_setclock + ++ Verify normal paths through pthread_condattr_getclock + ++ Verify normal paths through pthread_condattr_setclock diff --git a/testsuites/psxtests/psxcond02/psxcond02.scn b/testsuites/psxtests/psxcond02/psxcond02.scn new file mode 100644 index 0000000000..511d1f39aa --- /dev/null +++ b/testsuites/psxtests/psxcond02/psxcond02.scn @@ -0,0 +1,12 @@ +*** BEGIN OF TEST PSXCOND 2 *** +pthread_condattr_getclock (NULL attribute) - EINVAL +pthread_condattr_getclock (NULL clock) - EINVAL +pthread_condattr_setclock (NULL attribute) - EINVAL +pthread_condattr_init - OK +pthread_condattr_setclock (bad clock)- EINVAL +pthread_condattr_setclock (CLOCK_PROCESS_CPUTIME_ID)- EINVAL +pthread_condattr_setclock (CLOCK_THREAD_CPUTIME_ID)- EINVAL +pthread_condattr_init - OK +pthread_condattr_setclock (CLOCK_REALTIME)- OK +pthread_condattr_setclock (CLOCK_MONOTONIC)- OK +*** END OF TEST PSXCOND 2 *** -- cgit v1.2.3