1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <signal.h>
4 #include "tests/sys_mman.h"
5
handler(int sig,siginfo_t * info,void * v)6 static void handler(int sig, siginfo_t *info, void *v)
7 {
8 printf("info: sig=%d code=%d addr=%p\n",
9 info->si_signo, info->si_code, info->si_addr);
10 exit(0);
11 }
12
13 /* Blocking a fault, ie SIGSEGV, won't work, and is the same as having
14 the default handler */
main()15 int main()
16 {
17 int* unmapped_page = get_unmapped_page();
18 struct sigaction sa;
19 sigset_t mask;
20
21 sa.sa_sigaction = handler;
22 sigemptyset(&sa.sa_mask);
23 sa.sa_flags = SA_SIGINFO;
24
25 sigaction(SIGSEGV, &sa, NULL);
26
27 sigfillset(&mask);
28 sigprocmask(SIG_BLOCK, &mask, NULL);
29
30 *(volatile int *)unmapped_page = 213;
31
32 return 0;
33 }
34