1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- /* Derived from the test case in
- http://sourceware.org/bugzilla/show_bug.cgi?id=838. */
- #include <assert.h>
- #include <errno.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <sys/types.h>
- #include <sys/wait.h>
- #include "../test-skeleton.h"
- #ifdef __ARCH_USE_MMU__
- static void
- sig_handler (int signum)
- {
- pid_t child = fork ();
- if (child == 0)
- exit (0);
- TEMP_FAILURE_RETRY (waitpid (child, NULL, 0));
- }
- static int
- do_test (void)
- {
- pid_t parent = getpid ();
- struct sigaction action = { .sa_handler = sig_handler };
- sigemptyset (&action.sa_mask);
- malloc (sizeof (int));
- if (sigaction (SIGALRM, &action, NULL) != 0)
- {
- puts ("sigaction failed");
- return 1;
- }
- /* Create a child that sends the signal to be caught. */
- pid_t child = fork ();
- if (child == 0)
- {
- if (kill (parent, SIGALRM) == -1)
- perror ("kill");
- exit (0);
- }
- TEMP_FAILURE_RETRY (waitpid (child, NULL, 0));
- return 0;
- }
- #else
- static int
- do_test (void)
- {
- printf("Skipping test on non-mmu host!\n");
- return EXIT_SUCCESS;
- }
- #endif
- #define TEST_FUNCTION do_test ()
- #include "../test-skeleton.c"
|