diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2007-12-17 16:04:40 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2007-12-17 16:04:40 +0000 |
commit | eed0b96d206fcf7e20781120ff7509d8dd85fe9a (patch) | |
tree | 00051b7427d3c58377204e364b464c9d2889ba0b /testsuites/psxtests/psxtimer | |
parent | 2007-12-17 Joel Sherrill <joel.sherrill@OARcorp.com> (diff) | |
download | rtems-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/.cvsignore | 2 | ||||
-rw-r--r-- | testsuites/psxtests/psxtimer/Makefile.am | 28 | ||||
-rw-r--r-- | testsuites/psxtests/psxtimer/psxtimer.c | 339 | ||||
-rw-r--r-- | testsuites/psxtests/psxtimer/psxtimer.scn | 37 | ||||
-rw-r--r-- | testsuites/psxtests/psxtimer/system.h | 64 |
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, ¶ms_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, ¶ms_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, ¶ms_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 */ |