Files
rtems/testsuites/psxtests/psxalarm01/init.c
Joel Sherrill 33c46f1a70 2010-10-21 Joel Sherrill <joel.sherrill@oarcorp.com>
* psx02/init.c, psx02/task.c, psx03/init.c, psx04/init.c,
	psx04/task1.c, psx04/task2.c, psx04/task3.c, psx05/init.c,
	psx05/task.c, psx05/task2.c, psx05/task3.c, psx06/init.c,
	psx06/task.c, psx06/task2.c, psx07/init.c, psx08/init.c,
	psx08/task2.c, psx08/task3.c, psx09/init.c, psx10/init.c,
	psx10/task.c, psx10/task2.c, psx10/task3.c, psx11/init.c,
	psx11/task.c, psx12/init.c, psxalarm01/init.c, psxbarrier01/test.c,
	psxcancel01/init.c, psxchroot01/test.c, psxitimer/init.c,
	psxkey01/task.c, psxkey02/init.c, psxkey03/init.c, psxmount/test.c,
	psxmsgq01/init.c, psxmsgq03/init.c, psxmsgq04/init.c,
	psxrwlock01/test.c, psxsem01/init.c, psxsignal01/init.c,
	psxsignal01/task1.c, psxsignal02/init.c, psxsignal03/init.c,
	psxsignal05/init.c, psxspin01/test.c, psxspin02/test.c,
	psxstack01/init.c, psxstack02/init.c, psxualarm/init.c: Eliminate
	double space after parenthesis on rtems_test_assert().
2010-10-21 21:22:25 +00:00

123 lines
2.5 KiB
C

/*
* COPYRIGHT (c) 1989-2009.
* 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.com/license/LICENSE.
*
* $Id$
*/
#include <pmacros.h>
#include <signal.h>
#include <errno.h>
volatile int Signal_occurred;
volatile int Signal_count;
void Signal_handler( int signo );
void Signal_info_handler(
int signo,
siginfo_t *info,
void *context
);
void Signal_handler(
int signo
)
{
Signal_count++;
printf(
"Signal: %d caught by 0x%" PRIxpthread_t " (%d)\n",
signo,
pthread_self(),
Signal_count
);
Signal_occurred = 1;
}
void Signal_info_handler(
int signo,
siginfo_t *info,
void *context
)
{
Signal_count++;
printf(
"Signal_info: %d caught by 0x%" PRIxpthread_t " (%d) si_signo= %d si_code= %d value= %d\n",
signo,
pthread_self(),
Signal_count,
info->si_signo,
info->si_code,
info->si_value.sival_int
);
Signal_occurred = 1;
}
void *POSIX_Init(
void *argument
)
{
unsigned int remaining;
int sc;
struct sigaction act;
sigset_t mask;
puts( "\n\n*** POSIX ALARM TEST 01 ***" );
/* install a signal handler for SIGALRM and unblock it */
sc = sigemptyset( &act.sa_mask );
rtems_test_assert( !sc );
act.sa_handler = Signal_handler;
act.sa_flags = 0;
sigaction( SIGALRM, &act, NULL );
sc = sigemptyset( &mask );
rtems_test_assert( !sc );
sc = sigaddset( &mask, SIGALRM );
rtems_test_assert( !sc );
puts( "Init: Unblock SIGALRM" );
sc = sigprocmask( SIG_UNBLOCK, &mask, NULL );
rtems_test_assert( !sc );
/* schedule the alarm */
puts( "Init: Firing alarm in 1 second" );
remaining = alarm( 1 );
printf( "Init: %d seconds left on previous alarm\n", sc );
rtems_test_assert( !sc );
puts( "Init: Wait for alarm" );
sleep( 2 );
puts( "Init: Cancel alarm" );
remaining = alarm( 0 );
printf( "Init: %d seconds left on previous alarm\n", remaining );
rtems_test_assert( remaining == 0 );
puts( "*** END OF POSIX ALARM TEST 01***" );
rtems_test_exit( 0 );
return NULL; /* just so the compiler thinks we returned something */
}
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
#define CONFIGURE_MAXIMUM_POSIX_THREADS 1
#define CONFIGURE_POSIX_INIT_THREAD_TABLE
#define CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE \
(RTEMS_MINIMUM_STACK_SIZE * 4)
#define CONFIGURE_INIT
#include <rtems/confdefs.h>