From 1f4f392a5f89245c31a4bb8da9ae0004fbde1081 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Wed, 18 Sep 1996 22:23:15 +0000 Subject: new files --- testsuites/psxtests/psx04/task1.c | 44 ++++++++++++++ testsuites/psxtests/psx04/task2.c | 42 ++++++++++++++ testsuites/psxtests/psx04/task3.c | 119 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 205 insertions(+) create mode 100644 testsuites/psxtests/psx04/task1.c create mode 100644 testsuites/psxtests/psx04/task2.c create mode 100644 testsuites/psxtests/psx04/task3.c (limited to 'testsuites') diff --git a/testsuites/psxtests/psx04/task1.c b/testsuites/psxtests/psx04/task1.c new file mode 100644 index 0000000000..f62a85fbea --- /dev/null +++ b/testsuites/psxtests/psx04/task1.c @@ -0,0 +1,44 @@ +/* Task_1 + * + * This routine serves as a test task. + * + * Input parameters: + * argument - task argument + * + * Output parameters: NONE + * + * COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994. + * On-Line Applications Research Corporation (OAR). + * All rights assigned to U.S. Government, 1994. + * + * This material may be reproduced by or for the U.S. Government pursuant + * to the copyright license under the clause at DFARS 252.227-7013. This + * notice must appear in all copies of this file and its derivatives. + * + * $Id$ + */ + +#include "system.h" +#include + +void *Task_1( + void *argument +) +{ + int seconds; + + printf( "Task_1: sleeping for 5 seconds\n" ); + + seconds = sleep( 5 ); + printf( "Task_1: %d seconds left\n", seconds ); + assert( seconds ); + + /* switch to Init */ + + printf( "Task_1: exit\n" ); + pthread_exit( NULL ); + + /* switch to Init */ + + return NULL; /* just so the compiler thinks we returned something */ +} diff --git a/testsuites/psxtests/psx04/task2.c b/testsuites/psxtests/psx04/task2.c new file mode 100644 index 0000000000..e3d5bc1533 --- /dev/null +++ b/testsuites/psxtests/psx04/task2.c @@ -0,0 +1,42 @@ +/* Task_2 + * + * This routine serves as a test task. + * + * Input parameters: + * argument - task argument + * + * Output parameters: NONE + * + * COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994. + * On-Line Applications Research Corporation (OAR). + * All rights assigned to U.S. Government, 1994. + * + * This material may be reproduced by or for the U.S. Government pursuant + * to the copyright license under the clause at DFARS 252.227-7013. This + * notice must appear in all copies of this file and its derivatives. + * + * $Id$ + */ + +#include "system.h" +#include + +void *Task_2( + void *argument +) +{ + int status; + + printf( "Task_2: sending SIGUSR1\n" ); + status = pthread_kill( Init_id, SIGUSR1 ); + assert( !status ); + + /* switch to Init */ + + printf( "Task_2: exit\n" ); + pthread_exit( NULL ); + + /* switch to Init */ + + return NULL; /* just so the compiler thinks we returned something */ +} diff --git a/testsuites/psxtests/psx04/task3.c b/testsuites/psxtests/psx04/task3.c new file mode 100644 index 0000000000..6eb14b9db7 --- /dev/null +++ b/testsuites/psxtests/psx04/task3.c @@ -0,0 +1,119 @@ +/* Task_3 + * + * This routine serves as a test task. + * + * Input parameters: + * argument - task argument + * + * Output parameters: NONE + * + * COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994. + * On-Line Applications Research Corporation (OAR). + * All rights assigned to U.S. Government, 1994. + * + * This material may be reproduced by or for the U.S. Government pursuant + * to the copyright license under the clause at DFARS 252.227-7013. This + * notice must appear in all copies of this file and its derivatives. + * + * $Id$ + */ + +#include "system.h" +#include + +void *Task_3( + void *argument +) +{ + int status; + int sig; + union sigval value; + sigset_t mask; + siginfo_t info; + + value.sival_int = SIGUSR1; + + printf( "Task_3: sigqueue SIGUSR1 with value= %d\n", value.sival_int ); + status = sigqueue( getpid(), SIGUSR1, value ); + assert( !status ); + + /* catch signal with sigwaitinfo */ + + empty_line(); + + status = sigemptyset( &mask ); + assert( !status ); + + status = sigaddset( &mask, SIGUSR1 ); + assert( !status ); + + printf( "Task_3: sigwaitinfo SIGUSR1 with value= %d\n", value.sival_int ); + status = sigwaitinfo( &mask, &info ); + + /* switch to Init */ + + assert( !(status==-1) ); + printf( + "Task_3: si_signo= %d si_code= %d value= %d\n", + info.si_signo, + info.si_code, + info.si_value.sival_int + ); + + /* catch signal with sigwait */ + + empty_line(); + + status = sigemptyset( &mask ); + assert( !status ); + + status = sigaddset( &mask, SIGUSR1 ); + assert( !status ); + + printf( "Task_3: sigwait SIGUSR1\n" ); + status = sigwait( &mask, &sig ); + + /* switch to Init */ + + assert( !status ); + printf( "Task_3: signo= %d\n", sig ); + + /* catch signal with pause */ + + empty_line(); + + status = sigemptyset( &mask ); + assert( !status ); + + status = sigaddset( &mask, SIGUSR1 ); + assert( !status ); + + printf( "Task_3: pause\n" ); + status = pause( ); + + /* switch to Init */ + + assert( !(status==-1) ); + printf( "Task_3: pause= %d\n", status ); + + + /* send signal to Init task before it has pended for a signal */ + + empty_line(); + + printf( "Task_3: sending SIGUSR2\n" ); + status = pthread_kill( Init_id, SIGUSR2 ); + assert( !status ); + + printf( "Task_3: sleep so the Init task can reguest a signal\n" ); + status = sleep( 1 ); + assert( !status ); + + /* end of task 3 */ + printf( "Task_3: exit\n" ); + pthread_exit( NULL ); + + /* switch to Init */ + + return NULL; /* just so the compiler thinks we returned something */ +} -- cgit v1.2.3