summaryrefslogtreecommitdiffstats
path: root/testsuites/psxtests/psxtimer02
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2007-12-17 16:04:40 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2007-12-17 16:04:40 +0000
commiteed0b96d206fcf7e20781120ff7509d8dd85fe9a (patch)
tree00051b7427d3c58377204e364b464c9d2889ba0b /testsuites/psxtests/psxtimer02
parent2007-12-17 Joel Sherrill <joel.sherrill@OARcorp.com> (diff)
downloadrtems-eed0b96d206fcf7e20781120ff7509d8dd85fe9a.tar.bz2
2007-12-17 Joel Sherrill <joel.sherrill@OARcorp.com>
* Makefile.am, configure.ac: Rename psxtimer to psxtimer01 to indicate addition of second POSIX Timer test. Add initial version of psxtimer02 to cover some conditions missed in psxtimer01. More cases left to add. * psxtimer01/.cvsignore, psxtimer01/Makefile.am, psxtimer01/psxtimer.c, psxtimer01/psxtimer01.scn, psxtimer01/system.h, psxtimer02/.cvsignore, psxtimer02/Makefile.am, psxtimer02/psxtimer.c, psxtimer02/psxtimer02.scn, psxtimer02/system.h: New files. * psxtimer/.cvsignore, psxtimer/Makefile.am, psxtimer/psxtimer.c, psxtimer/psxtimer.scn, psxtimer/system.h: Removed.
Diffstat (limited to 'testsuites/psxtests/psxtimer02')
-rw-r--r--testsuites/psxtests/psxtimer02/.cvsignore2
-rw-r--r--testsuites/psxtests/psxtimer02/Makefile.am28
-rw-r--r--testsuites/psxtests/psxtimer02/psxtimer.c110
-rw-r--r--testsuites/psxtests/psxtimer02/psxtimer02.scn16
-rw-r--r--testsuites/psxtests/psxtimer02/system.h37
5 files changed, 193 insertions, 0 deletions
diff --git a/testsuites/psxtests/psxtimer02/.cvsignore b/testsuites/psxtests/psxtimer02/.cvsignore
new file mode 100644
index 0000000000..282522db03
--- /dev/null
+++ b/testsuites/psxtests/psxtimer02/.cvsignore
@@ -0,0 +1,2 @@
+Makefile
+Makefile.in
diff --git a/testsuites/psxtests/psxtimer02/Makefile.am b/testsuites/psxtests/psxtimer02/Makefile.am
new file mode 100644
index 0000000000..d3acc0aac1
--- /dev/null
+++ b/testsuites/psxtests/psxtimer02/Makefile.am
@@ -0,0 +1,28 @@
+##
+## $Id$
+##
+
+MANAGERS = all
+
+rtems_tests_PROGRAMS = psxtimer02.exe
+psxtimer02_exe_SOURCES = psxtimer.c system.h ../include/pmacros.h
+
+dist_rtems_tests_DATA = psxtimer02.scn
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../automake/compile.am
+include $(top_srcdir)/../automake/leaf.am
+
+psxtimer02_exe_LDADD = $(MANAGERS_NOT_WANTED:%=$(PROJECT_LIB)/no-%.rel)
+
+AM_CPPFLAGS += -I$(top_srcdir)/include
+AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+
+LINK_OBJS = $(psxtimer02_exe_OBJECTS) $(psxtimer02_exe_LDADD)
+LINK_LIBS = $(psxtimer02_exe_LDLIBS)
+
+psxtimer02.exe$(EXEEXT): $(psxtimer02_exe_OBJECTS) $(psxtimer02_exe_DEPENDENCIES)
+ @rm -f psxtimer02.exe$(EXEEXT)
+ $(make-exe)
+
+include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/psxtests/psxtimer02/psxtimer.c b/testsuites/psxtests/psxtimer02/psxtimer.c
new file mode 100644
index 0000000000..330d4abbe0
--- /dev/null
+++ b/testsuites/psxtests/psxtimer02/psxtimer.c
@@ -0,0 +1,110 @@
+/*
+ *
+ * This is a simple real-time applications which contains 3 periodic tasks.
+ *
+ * Task A is an independent task.
+ *
+ * Task B and C share a data.
+ *
+ * Tasks are implemented as POSIX threads.
+ *
+ * The share data is protected with a POSIX mutex.
+ *
+ * Other POSIX facilities such as timers, condition, .. is also used
+ *
+ * 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$
+ */
+
+#define CONFIGURE_INIT
+#include "system.h"
+#include "tmacros.h"
+#include <signal.h> /* signal facilities */
+#include <unistd.h> /* sleep facilities */
+#include <time.h> /* time facilities */
+#include <stdio.h> /* console facilities */
+
+void *POSIX_Init (
+ void *argument
+)
+
+{
+ struct sigevent event;
+ int status;
+ timer_t timer;
+ timer_t timer1;
+ struct itimerspec itimer;
+
+ /*
+ * If these are not filled in correctly, we don't pass its error checking.
+ */
+ event.sigev_notify = SIGEV_SIGNAL;
+ event.sigev_signo = SIGUSR1;
+
+ puts( "\n\n*** POSIX Timers Test 02 ***" );
+
+ puts( "timer_create - bad clock id - EINVAL" );
+ status = timer_create( -1, &event, &timer );
+ fatal_posix_service_status_errno( status, EINVAL, "bad clock id" );
+
+ puts( "timer_create - bad timer id pointer - EINVAL" );
+ status = timer_create( CLOCK_REALTIME, &event, NULL );
+ fatal_posix_service_status_errno( status, EINVAL, "bad timer id" );
+
+ puts( "timer_create - OK" );
+ status = timer_create( CLOCK_REALTIME, NULL, &timer );
+ posix_service_failed( status, "timer_create OK" );
+
+ puts( "timer_create - too many - EAGAIN" );
+ status = timer_create( CLOCK_REALTIME, NULL, &timer1 );
+ fatal_posix_service_status_errno( status, EAGAIN, "too many" );
+
+ puts( "timer_delete - bad id - EINVAL" );
+ status = timer_delete( timer1 + 1 );
+ fatal_posix_service_status_errno( status, EINVAL, "bad id" );
+
+ puts( "timer_getoverrun - bad id - EINVAL" );
+ status = timer_getoverrun( timer1 + 1 );
+ fatal_posix_service_status_errno( status, EINVAL, "bad id" );
+
+ puts( "timer_gettime - bad itimer - EINVAL" );
+ status = timer_gettime( timer1, NULL );
+ fatal_posix_service_status_errno( status, EINVAL, "bad id" );
+
+ puts( "timer_gettime - bad id - EINVAL" );
+ status = timer_gettime( timer1 + 1, &itimer );
+ fatal_posix_service_status_errno( status, EINVAL, "bad id" );
+
+ puts( "timer_settime - bad itimer pointer - EINVAL" );
+ status = timer_settime( timer, TIMER_ABSTIME, &itimer, NULL );
+ fatal_posix_service_status_errno( status, EINVAL, "bad itimer pointer" );
+
+ itimer.it_value.tv_nsec = 2000000000;
+ puts( "timer_settime - bad itimer value - too many nanosecond - EINVAL" );
+ status = timer_settime( timer, TIMER_ABSTIME, &itimer, NULL );
+ fatal_posix_service_status_errno( status, EINVAL, "bad itimer value #1" );
+
+ itimer.it_value.tv_nsec = -1;
+ puts( "timer_settime - bad itimer value - negative nanosecond - EINVAL" );
+ status = timer_settime( timer, TIMER_ABSTIME, &itimer, NULL );
+ fatal_posix_service_status_errno( status, EINVAL, "bad itimer value #2" );
+
+ itimer.it_value.tv_nsec = 0;
+ puts( "timer_settime - bad clock value - EINVAL" );
+ status = timer_settime( timer, 0x80, &itimer, NULL );
+ fatal_posix_service_status_errno( status, EINVAL, "bad clock value" );
+
+ puts( "timer_delete - OK" );
+ status = timer_delete( timer );
+ posix_service_failed( status, "timer_delete OK" );
+
+ puts( "timer_delete - bad id - EINVAL" );
+ status = timer_delete( timer );
+ fatal_posix_service_status_errno( status, EINVAL, "bad id" );
+
+ puts( "*** END OF POSIX Timers Test 02 ***" );
+ rtems_test_exit (0);
+}
diff --git a/testsuites/psxtests/psxtimer02/psxtimer02.scn b/testsuites/psxtests/psxtimer02/psxtimer02.scn
new file mode 100644
index 0000000000..e78425a32e
--- /dev/null
+++ b/testsuites/psxtests/psxtimer02/psxtimer02.scn
@@ -0,0 +1,16 @@
+*** POSIX Timers Test 02 ***
+timer_create - bad clock id - EINVAL
+timer_create - bad timer id pointer - EINVAL
+timer_create - OK
+timer_create - too many - EAGAIN
+timer_delete - bad id - EINVAL
+timer_getoverrun - bad id - EINVAL
+timer_gettime - bad itimer - EINVAL
+timer_gettime - bad id - EINVAL
+timer_settime - bad itimer pointer - EINVAL
+timer_settime - bad itimer value - too many nanosecond - EINVAL
+timer_settime - bad itimer value - negative nanosecond - EINVAL
+timer_settime - bad clock value - EINVAL
+timer_delete - OK
+timer_delete - bad id - EINVAL
+*** END OF POSIX Timers Test 02 ***
diff --git a/testsuites/psxtests/psxtimer02/system.h b/testsuites/psxtests/psxtimer02/system.h
new file mode 100644
index 0000000000..5f18d521ca
--- /dev/null
+++ b/testsuites/psxtests/psxtimer02/system.h
@@ -0,0 +1,37 @@
+/* system.h
+ *
+ * This include file contains information that is included in every
+ * function in the test set.
+ *
+ * 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$
+ */
+
+/* functions */
+
+#include <pmacros.h>
+#include <unistd.h>
+#include <errno.h>
+#include <sched.h>
+
+void *POSIX_Init (
+ void *arg
+);
+
+/* configuration information */
+
+#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
+#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
+
+#define CONFIGURE_POSIX_INIT_THREAD_TABLE
+
+#define CONFIGURE_MAXIMUM_POSIX_THREADS 1
+#define CONFIGURE_MAXIMUM_POSIX_TIMERS 1
+
+
+#include <rtems/confdefs.h>
+
+/* end of include file */