Home | History | Annotate | Download | only in sigaction
      1 /*
      2  * Copyright (c) 2002-2003, Intel Corporation. All rights reserved.
      3  * Created by:  rusty.lynch REMOVE-THIS AT intel DOT com
      4  * This file is licensed under the GPL license.  For the full content
      5  * of this license, see the COPYING file at the top level of this
      6  * source tree.
      7 
      8   Test case for assertion #8 of the sigaction system call that verifies
      9   that if signals in the sa_mask (passed in the sigaction struct of the
     10   sigaction function call) are added to the process signal mask during
     11   execution of the signal-catching function.
     12 */
     13 
     14 #include <signal.h>
     15 #include <stdio.h>
     16 #include <stdlib.h>
     17 #include <sys/wait.h>
     18 #include <unistd.h>
     19 #include "posixtest.h"
     20 
     21 int SIGUSR2_count = 0;
     22 
     23 void SIGUSR2_handler(int signo)
     24 {
     25 	SIGUSR2_count++;
     26 }
     27 
     28 void SIGUSR1_handler(int signo)
     29 {
     30 	raise(SIGUSR2);
     31 	if (SIGUSR2_count) {
     32 		printf("Got SIGUSR2\nTest FAILED\n");
     33 		exit(PTS_FAIL);
     34 	}
     35 }
     36 
     37 int main(void)
     38 {
     39 	struct sigaction act;
     40 
     41 	act.sa_handler = SIGUSR1_handler;
     42 	act.sa_flags = 0;
     43 	sigemptyset(&act.sa_mask);
     44 	sigaddset(&act.sa_mask, SIGUSR2);
     45 
     46 	if (sigaction(SIGUSR1, &act, 0) == -1) {
     47 		perror("Unexpected error while attempting to "
     48 		       "setup test pre-conditions");
     49 		return PTS_UNRESOLVED;
     50 	}
     51 
     52 	act.sa_handler = SIGUSR2_handler;
     53 	act.sa_flags = 0;
     54 	sigemptyset(&act.sa_mask);
     55 
     56 	if (sigaction(SIGUSR2, &act, 0) == -1) {
     57 		perror("Unexpected error while attempting to "
     58 		       "setup test pre-conditions");
     59 		return PTS_UNRESOLVED;
     60 	}
     61 
     62 	if (raise(SIGUSR1) == -1) {
     63 		perror("Unexpected error while attempting to "
     64 		       "setup test pre-conditions");
     65 		return PTS_UNRESOLVED;
     66 	}
     67 
     68 	printf("Test PASSED\n");
     69 	return PTS_PASS;
     70 }
     71