1 /*
2  * Copyright (c) 2002, Intel Corporation. All rights reserved.
3  * Copyright (c) 2013 Cyril Hrubis <chrubis@suse.cz>
4  *
5  * Created by:  julie.fleischer REMOVE-THIS AT intel DOT com
6  * This file is licensed under the GPL license.  For the full content
7  * of this license, see the COPYING file at the top level of this
8  * source tree.
9  *
10  * Test that sigaddset() will add all defined signal numbers to a signal
11  * set.
12  *
13  *  Test steps:
14  * 1)  Initialize an empty signal set.
15  * For each signal number:
16  *   2)  Add the signal to the empty signal set.
17  *   3)  Verify that the signal is a member of the signal set.
18  */
19 #include <stdio.h>
20 #include <signal.h>
21 #include "posixtest.h"
22 
23 static const int sigs[] = {
24 	SIGABRT, SIGALRM, SIGBUS,  SIGCHLD, SIGCONT,
25 	SIGFPE,  SIGHUP,  SIGILL,  SIGINT,  SIGKILL,
26 	SIGPIPE, SIGQUIT, SIGSEGV, SIGSTOP, SIGTERM,
27 	SIGTSTP, SIGTTIN, SIGTTOU, SIGUSR1, SIGUSR2,
28 	SIGURG,
29 };
30 
main(void)31 int main(void)
32 {
33 	sigset_t signalset;
34 	unsigned int i;
35 	int err = 0;
36 
37 	if (sigemptyset(&signalset) == -1) {
38 		perror("sigemptyset failed -- test aborting\n");
39 		return PTS_UNRESOLVED;
40 	}
41 
42 	for (i = 0; i < sizeof(sigs)/sizeof(int); i++) {
43 		if (sigaddset(&signalset, sigs[i]) == 0) {
44 			if (sigismember(&signalset, sigs[i]) != 1) {
45 				err++;
46 				printf("Signal %d wasn't added \n", sigs[i]);
47 			}
48 		} else {
49 			err++;
50 			printf("Failed to add sinal %d\n", sigs[i]);
51 		}
52 	}
53 
54 	if (err) {
55 		printf("FAILED: Some signals not added\n");
56 		return PTS_FAIL;
57 	} else {
58 		printf("Test PASSED: All signals added\n");
59 		return PTS_PASS;
60 	}
61 }
62