• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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