This test was enhanced to test for the case in sigtimedwait() where it

must deal with a pending process oriented signal.  Prior to the addition
of this testcase, sigtimedwait() did not return properly when a process
oriented signal was pending.  The problem was reported by Wayne
Bullaughey <wayneb@cacdsp.com>.
This commit is contained in:
Joel Sherrill
2000-01-11 15:43:00 +00:00
parent 4fa5eaee52
commit e0c01614d9
4 changed files with 64 additions and 0 deletions
+28
View File
@@ -166,6 +166,34 @@ void *POSIX_Init(
assert( siginfo.si_code == SI_USER );
assert( siginfo.si_value.sival_int != -1 ); /* rtems does always set this */
/* try out a process signal */
empty_line();
puts( "Init: kill with SIGUSR2." );
status = kill( getpid(), SIGUSR2 );
assert( !status );
siginfo.si_code = -1;
siginfo.si_signo = -1;
siginfo.si_value.sival_int = -1;
status = sigemptyset( &waitset );
assert( !status );
status = sigaddset( &waitset, SIGUSR1 );
assert( !status );
status = sigaddset( &waitset, SIGUSR2 );
assert( !status );
puts( "Init: waiting on any signal for 3 seconds." );
signo = sigtimedwait( &waitset, &siginfo, &timeout );
printf( "Init: received (%d) SIGUSR2=%d\n", siginfo.si_signo, SIGUSR2 );
assert( signo == SIGUSR2 );
assert( siginfo.si_signo == SIGUSR2 );
assert( siginfo.si_code == SI_USER );
assert( siginfo.si_value.sival_int != -1 ); /* rtems does always set this */
/* exit this thread */
puts( "*** END OF POSIX TEST 3 ***" );
+4
View File
@@ -14,4 +14,8 @@ Task_2: Fri May 24 11:05:06 1996
Task_1: pthread_kill - SIGUSR1 to Init
Signal: 16 caught by 0xc010001 (1)
Init: received (16) SIGUSR1=16
Init: kill with SIGUSR2.
Init: waiting on any signal for 3 seconds.
Init: received (17) SIGUSR2=17
*** END OF POSIX TEST 3 ***
+28
View File
@@ -166,6 +166,34 @@ void *POSIX_Init(
assert( siginfo.si_code == SI_USER );
assert( siginfo.si_value.sival_int != -1 ); /* rtems does always set this */
/* try out a process signal */
empty_line();
puts( "Init: kill with SIGUSR2." );
status = kill( getpid(), SIGUSR2 );
assert( !status );
siginfo.si_code = -1;
siginfo.si_signo = -1;
siginfo.si_value.sival_int = -1;
status = sigemptyset( &waitset );
assert( !status );
status = sigaddset( &waitset, SIGUSR1 );
assert( !status );
status = sigaddset( &waitset, SIGUSR2 );
assert( !status );
puts( "Init: waiting on any signal for 3 seconds." );
signo = sigtimedwait( &waitset, &siginfo, &timeout );
printf( "Init: received (%d) SIGUSR2=%d\n", siginfo.si_signo, SIGUSR2 );
assert( signo == SIGUSR2 );
assert( siginfo.si_signo == SIGUSR2 );
assert( siginfo.si_code == SI_USER );
assert( siginfo.si_value.sival_int != -1 ); /* rtems does always set this */
/* exit this thread */
puts( "*** END OF POSIX TEST 3 ***" );
+4
View File
@@ -14,4 +14,8 @@ Task_2: Fri May 24 11:05:06 1996
Task_1: pthread_kill - SIGUSR1 to Init
Signal: 16 caught by 0xc010001 (1)
Init: received (16) SIGUSR1=16
Init: kill with SIGUSR2.
Init: waiting on any signal for 3 seconds.
Init: received (17) SIGUSR2=17
*** END OF POSIX TEST 3 ***