summaryrefslogtreecommitdiffstats
path: root/testsuites/psxtests/psxtimer
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/psxtimer
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/psxtimer')
-rw-r--r--testsuites/psxtests/psxtimer/.cvsignore2
-rw-r--r--testsuites/psxtests/psxtimer/Makefile.am28
-rw-r--r--testsuites/psxtests/psxtimer/psxtimer.c339
-rw-r--r--testsuites/psxtests/psxtimer/psxtimer.scn37
-rw-r--r--testsuites/psxtests/psxtimer/system.h64
5 files changed, 0 insertions, 470 deletions
diff --git a/testsuites/psxtests/psxtimer/.cvsignore b/testsuites/psxtests/psxtimer/.cvsignore
deleted file mode 100644
index 282522db03..0000000000
--- a/testsuites/psxtests/psxtimer/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-Makefile
-Makefile.in
diff --git a/testsuites/psxtests/psxtimer/Makefile.am b/testsuites/psxtests/psxtimer/Makefile.am
deleted file mode 100644
index c0defa10ad..0000000000
--- a/testsuites/psxtests/psxtimer/Makefile.am
+++ /dev/null
@@ -1,28 +0,0 @@
-##
-## $Id$
-##
-
-MANAGERS = all
-
-rtems_tests_PROGRAMS = psxtimer.exe
-psxtimer_exe_SOURCES = psxtimer.c system.h ../include/pmacros.h
-
-dist_rtems_tests_DATA = psxtimer.scn
-
-include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
-include $(top_srcdir)/../automake/compile.am
-include $(top_srcdir)/../automake/leaf.am
-
-psxtimer_exe_LDADD = $(MANAGERS_NOT_WANTED:%=$(PROJECT_LIB)/no-%.rel)
-
-AM_CPPFLAGS += -I$(top_srcdir)/include
-AM_CPPFLAGS += -I$(top_srcdir)/../support/include
-
-LINK_OBJS = $(psxtimer_exe_OBJECTS) $(psxtimer_exe_LDADD)
-LINK_LIBS = $(psxtimer_exe_LDLIBS)
-
-psxtimer.exe$(EXEEXT): $(psxtimer_exe_OBJECTS) $(psxtimer_exe_DEPENDENCIES)
- @rm -f psxtimer.exe$(EXEEXT)
- $(make-exe)
-
-include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/psxtests/psxtimer/psxtimer.c b/testsuites/psxtests/psxtimer/psxtimer.c
deleted file mode 100644
index ba79b8b266..0000000000
--- a/testsuites/psxtests/psxtimer/psxtimer.c
+++ /dev/null
@@ -1,339 +0,0 @@
-/*
- *
- * 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 <pthread.h> /* thread facilities */
-#include <signal.h> /* signal facilities */
-#include <unistd.h> /* sleep facilities */
-#include <sched.h> /* schedule facilities */
-#include <time.h> /* time facilities */
-#include <stdio.h> /* console facilities */
-
-
-
-/* temporal parameters of a task */
-
-struct periodic_params {
- struct timespec period;
- int signo; /* signal number */
- int id; /* task identification */
- };
-
-pthread_attr_t attr;
-
-/* shared datum */
-
-struct shared_data {
- pthread_mutex_t mutex;
- pthread_cond_t sync;
- int updated;
- int x;
- };
-
-struct shared_data data;
-
-/* task A */
-
-void * task_a (void *arg)
-{
- struct timespec my_period;
- int my_sig, received_sig;
- struct itimerspec timerdata;
- timer_t timer_id;
- time_t clock;
- struct sigevent event;
- sigset_t set;
-
- my_period = ((struct periodic_params*) arg)->period;
- my_sig = ((struct periodic_params*) arg)->signo;
-
- /* timer create */
- event.sigev_notify = SIGEV_SIGNAL;
- event.sigev_signo = my_sig;
- if (timer_create (CLOCK_REALTIME, &event, &timer_id) == -1) {
- perror ("Error in timer creation\n");
- pthread_exit ((void *) -1);
- }
-
- /* block the timer signal */
- sigemptyset (&set);
- sigaddset (&set,my_sig);
- pthread_sigmask(SIG_BLOCK,&set,NULL);
-
- /* set the timer in periodic mode */
- timerdata.it_interval = my_period;
- timerdata.it_value = my_period;
- if (timer_settime(timer_id, 0, &timerdata, NULL) == -1) {
- perror ("Error in timer setting\n");
- pthread_exit ((void *) -1);
- }
-
- /* periodic activity */
- while(1) {
- if (sigwait(&set,&received_sig) == -1) {
- perror ("Error in sigwait\n");
- }
- clock = time(NULL);
- printf("Executing task A %s", ctime(&clock));
- }
- return NULL;
-}
-
-/* task B */
-
-void * task_b (void *arg)
-{
- struct timespec my_period;
- int my_sig, received_sig;
- struct itimerspec timerdata;
- timer_t timer_id;
- time_t clock;
- struct sigevent event;
- sigset_t set;
-
- int x; /* value to be copied to the shared datum */
-
- my_period = ((struct periodic_params*) arg)->period;
- my_sig = ((struct periodic_params*) arg)->signo;
-
- x = 1;
-
- /* timer create */
- event.sigev_notify = SIGEV_SIGNAL;
- event.sigev_signo = my_sig;
- if (timer_create (CLOCK_REALTIME, &event, &timer_id) == -1) {
- perror ("Error in timer creation\n");
- pthread_exit ((void *) -1);
- }
-
- /* block the timer signal */
- sigemptyset (&set);
- sigaddset (&set,my_sig);
- pthread_sigmask(SIG_BLOCK,&set,NULL);
-
- /* set the timer in periodic mode */
- timerdata.it_interval = my_period;
- timerdata.it_value = my_period;
- if (timer_settime(timer_id, 0, &timerdata, NULL) == -1) {
- perror ("Error in timer setting\n");
- pthread_exit ((void *) -1);
- }
-
- /* periodic activity */
- while(1) {
- if (sigwait(&set,&received_sig) == -1) {
- perror ("Error in sigwait\n");
- pthread_exit ((void *) -1);
- }
- pthread_mutex_lock (&data.mutex);
- clock = time(NULL);
- printf("Executing task B with x = %i %s", x, ctime(&clock));
- data.x = x;
- data.updated = TRUE;
- pthread_cond_signal (&data.sync);
- pthread_mutex_unlock (&data.mutex);
- x++;
- }
- return NULL;
-}
-
-/* task C */
-
-void * task_c (void *arg)
-{
- struct timespec my_period;
- int my_sig, received_sig;
- struct itimerspec timerdata;
- timer_t timer_id;
- time_t clock;
- struct sigevent event;
- sigset_t set;
-
- int x; /* value to be copied to the shared datum */
-
- my_period = ((struct periodic_params*) arg)->period;
- my_sig = ((struct periodic_params*) arg)->signo;
-
- x = 0;
-
- /* timer create */
- event.sigev_notify = SIGEV_SIGNAL;
- event.sigev_signo = my_sig;
- if (timer_create (CLOCK_REALTIME, &event, &timer_id) == -1) {
- perror ("Error in timer creation\n");
- pthread_exit ((void *) -1);
- }
-
- /* block the timer signal */
- sigemptyset (&set);
- sigaddset (&set,my_sig);
- pthread_sigmask(SIG_BLOCK,&set,NULL);
-
- /* set the timer in periodic mode */
- timerdata.it_interval = my_period;
- timerdata.it_value = my_period;
- if (timer_settime(timer_id, 0, &timerdata, NULL) == -1) {
- perror ("Error in timer setting\n");
- pthread_exit ((void *) -1);
- }
-
- /* periodic activity */
- while(1) {
- if (sigwait(&set,&received_sig) == -1) {
- perror ("Error in sigwait\n");
- pthread_exit ((void *) -1);
- }
- pthread_mutex_lock (&data.mutex);
- while (data.updated == FALSE) {
- pthread_cond_wait (&data.sync,&data.mutex);
- }
- x = data.x;
- clock = time(NULL);
- printf("Executing task C with x = %i %s", x, ctime(&clock));
- pthread_mutex_unlock (&data.mutex);
- }
- return NULL;
-}
-
-
-/* main */
-
-void *POSIX_Init (
- void *argument
-)
-
-{
- pthread_mutexattr_t mutexattr; /* mutex attributes */
- pthread_condattr_t condattr; /* condition attributes */
- pthread_attr_t attr; /* task attributes */
- pthread_t ta,tb,tc; /* threads */
- sigset_t set; /* signals */
-
- struct sched_param sch_param; /* schedule parameters */
- struct periodic_params params_a, params_b, params_c;
-
- puts( "\n\n*** POSIX Timers Test ***" );
-
- data.updated = FALSE;
- data.x = 0;
-
- /* mask signal */
- sigemptyset (&set);
- sigaddset (&set,SIGALRM);
- pthread_sigmask (SIG_BLOCK,&set,NULL);
-
- /* set mutex attributes */
- if (pthread_mutexattr_init (&mutexattr) != 0) {
- perror ("Error in mutex attribute init\n");
- }
-
- /* init mutex */
- if (pthread_mutex_init (&data.mutex,&mutexattr) != 0) {
- perror ("Error in mutex init");
- }
-
- /* init condition attributes */
- if (pthread_condattr_init (&condattr) != 0) {
- perror ("Error in condition attribute init\n");
- }
-
- /* init condition */
- if (pthread_cond_init (&data.sync,&condattr) != 0) {
- perror ("Error in condition init");
- }
-
- /* init task attributes */
- if (pthread_attr_init(&attr) != 0) {
- perror ("Error in attribute init\n");
- }
-
- /* set explicit schedule for every task */
- if (pthread_attr_setinheritsched (&attr,
- PTHREAD_EXPLICIT_SCHED) != 0) {
- perror("Error in attribute inheritsched\n");
- }
-
- /* set task independent (join will not use) */
- if (pthread_attr_setdetachstate (&attr,
- PTHREAD_CREATE_DETACHED) != 0) {
- perror ("Error in attribute detachstate\n");
- }
-
- /* schedule policy POSIX_FIFO (priority preemtive and FIFO within the same
- priority) */
- if (pthread_attr_setschedpolicy (&attr,
- SCHED_FIFO) != 0) {
- perror ("Error in attribute setschedpolicy\n");
- }
-
- /* set and create thread A with priority 1 */
-
- sch_param.sched_priority = 1;
- if (pthread_attr_setschedparam(&attr, &sch_param) != 0) {
- perror ("Error in attribute schedparam\n");
- }
-
- /* Temporal parameters (1 sec. periodicity) */
-
- params_a.period.tv_sec = 1; /* seconds */
- params_a.period.tv_nsec = 000000000; /* nanoseconds */
- params_a.signo = SIGALRM;
- if (pthread_create (&ta, &attr, task_a, &params_a) != 0 ) {
- perror ("Error in thread create for task a\n");
- }
-
- /* set and create thread B with priority 15 */
-
- sch_param.sched_priority = 15;
- if (pthread_attr_setschedparam(&attr, &sch_param) != 0) {
- perror ("Error in attribute schedparam");
- }
-
- /* Temporal parameters (2 sec. periodicity) */
- params_b.period.tv_sec = 2; /* seconds */
- params_b.period.tv_nsec = 000000000; /* nanoseconds */
- params_b.signo = SIGALRM;
- if (pthread_create (&tb, &attr, task_b, &params_b) != 0) {
- perror ("Error in thread create for task b\n");
- }
-
- /* set and create thread B with priority 14 */
-
- sch_param.sched_priority = 14;
- if (pthread_attr_setschedparam(&attr, &sch_param) != 0 ) {
- perror ("Error in attribute schedparam\n");
- }
-
- /* Temporal parameters (3 sec. periodicity) */
- params_c.period.tv_sec = 3; /* seconds */
- params_c.period.tv_nsec = 000000000; /* nanoseconds */
- params_c.signo = SIGALRM;
- if (pthread_create (&tc, &attr, task_c, &params_c) != 0) {
- perror ("Error in thread create for task c\n");
- }
-
-
- /* execute 20 seconds and finish */
- sleep (20);
- puts( "\n\n*** END OF POSIX Timers Test ***" );
- rtems_test_exit (0);
- }
diff --git a/testsuites/psxtests/psxtimer/psxtimer.scn b/testsuites/psxtests/psxtimer/psxtimer.scn
deleted file mode 100644
index 5d9ce6ab89..0000000000
--- a/testsuites/psxtests/psxtimer/psxtimer.scn
+++ /dev/null
@@ -1,37 +0,0 @@
-*** POSIX Timers Test ***
-Executing task A Fri Jan 1 00:00:01 1988
-Executing task B with x = 1 Fri Jan 1 00:00:02 1988
-Executing task A Fri Jan 1 00:00:02 1988
-Executing task C with x = 1 Fri Jan 1 00:00:03 1988
-Executing task A Fri Jan 1 00:00:03 1988
-Executing task B with x = 2 Fri Jan 1 00:00:04 1988
-Executing task A Fri Jan 1 00:00:04 1988
-Executing task A Fri Jan 1 00:00:05 1988
-Executing task B with x = 3 Fri Jan 1 00:00:06 1988
-Executing task C with x = 3 Fri Jan 1 00:00:06 1988
-Executing task A Fri Jan 1 00:00:06 1988
-Executing task A Fri Jan 1 00:00:07 1988
-Executing task B with x = 4 Fri Jan 1 00:00:08 1988
-Executing task A Fri Jan 1 00:00:08 1988
-Executing task C with x = 4 Fri Jan 1 00:00:09 1988
-Executing task A Fri Jan 1 00:00:09 1988
-Executing task B with x = 5 Fri Jan 1 00:00:10 1988
-Executing task A Fri Jan 1 00:00:10 1988
-Executing task A Fri Jan 1 00:00:11 1988
-Executing task B with x = 6 Fri Jan 1 00:00:12 1988
-Executing task C with x = 6 Fri Jan 1 00:00:12 1988
-Executing task A Fri Jan 1 00:00:12 1988
-Executing task A Fri Jan 1 00:00:13 1988
-Executing task B with x = 7 Fri Jan 1 00:00:14 1988
-Executing task A Fri Jan 1 00:00:14 1988
-Executing task C with x = 7 Fri Jan 1 00:00:15 1988
-Executing task A Fri Jan 1 00:00:15 1988
-Executing task B with x = 8 Fri Jan 1 00:00:16 1988
-Executing task A Fri Jan 1 00:00:16 1988
-Executing task A Fri Jan 1 00:00:17 1988
-Executing task B with x = 9 Fri Jan 1 00:00:18 1988
-Executing task C with x = 9 Fri Jan 1 00:00:18 1988
-Executing task A Fri Jan 1 00:00:18 1988
-Executing task A Fri Jan 1 00:00:19 1988
-Executing task B with x = 10 Fri Jan 1 00:00:20 1988
-*** END OF POSIX Timers Test ***
diff --git a/testsuites/psxtests/psxtimer/system.h b/testsuites/psxtests/psxtimer/system.h
deleted file mode 100644
index 2b471f5b32..0000000000
--- a/testsuites/psxtests/psxtimer/system.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* 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.
- *
- * system.h,v 1.9 1996/08/09 18:48:33 joel Exp
- */
-
-/* functions */
-
-#include <pmacros.h>
-#include <unistd.h>
-#include <errno.h>
-#include <sched.h>
-
-void *POSIX_Init (
- void *arg
-);
-
-void *task_a(
- void *arg
-);
-
-void *task_b(
- void *arg
-);
-
-void *task_c(
- 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 4
-#define CONFIGURE_MAXIMUM_POSIX_TIMERS 4
-#define CONFIGURE_MAXIMUM_TIMERS 4
-#define CONFIGURE_MAXIMUM_POSIX_MUTEXES 2
-#define CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES 2
-
-
-#include <rtems/confdefs.h>
-
-/* global variables */
-
-#ifdef CONFIGURE_INIT
-#define TEST_EXTERN
-#else
-#define TEST_EXTERN extern
-#endif
-
-TEST_EXTERN pthread_t Init_id;
-TEST_EXTERN pthread_t Task_id;
-
-/* end of include file */