use the -newos toolchain even if -elf is present.
[newos.git] / apps / testapp / sigtests.cpp
blob76ad04ace4a24d927446cb02a4e60b52be8c4b19
1 /*
2 ** Copyright 2004, Travis Geiselbrecht. All rights reserved.
3 ** Distributed under the terms of the NewOS License.
4 */
5 #include <string.h>
6 #include <stdio.h>
7 #include <unistd.h>
8 #include <sys/syscalls.h>
10 static void alarm_handler(int sig, void *arg)
12 char temp[128];
13 sprintf(temp, "alarm %d %d\n", sig, arg);
14 write(0, temp, strlen(temp));
17 static void term_handler(int sig, void *arg)
19 char temp[128];
20 sprintf(temp, "TERM %d %d\n", sig, arg);
21 write(0, temp, strlen(temp));
24 static void chld_handler(int sig, void *arg)
26 char temp[128];
27 sprintf(temp,"SIGCHLD %d\n", sig);
28 write(0, temp, strlen(temp));
31 static void winch_handler(int sig, void *arg)
33 char temp[128];
34 sprintf(temp, "SIGWINCH %d\n", sig);
35 write(0, temp, strlen(temp));
38 int sig_test(int arg)
40 struct sigaction sig;
41 int err;
43 sig.sa_handler = (sig_func_t)&alarm_handler;
44 sig.sa_mask = 0;
45 sig.sa_flags = 0;
46 sig.sa_userdata = (void *)1170;
48 err = _kern_sigaction(SIGALRM, &sig, NULL);
49 printf("sigaction returns %d\n", err);
51 sig.sa_handler = (sig_func_t)&term_handler;
52 sig.sa_mask = 0;
53 sig.sa_flags = 0;
54 sig.sa_userdata = (void *)1170;
56 err = _kern_sigaction(SIGTERM, &sig, NULL);
57 printf("sigaction returns %d\n", err);
59 sig.sa_handler = (sig_func_t)&chld_handler;
60 sig.sa_mask = 0;
61 sig.sa_flags = 0;
62 sig.sa_userdata = (void *)1170;
64 err = _kern_sigaction(SIGCHLD, &sig, NULL);
65 printf("sigaction returns %d\n", err);
67 sig.sa_handler = (sig_func_t)&winch_handler;
68 sig.sa_mask = 0;
69 sig.sa_flags = 0;
70 sig.sa_userdata = (void *)1170;
72 err = _kern_sigaction(SIGWINCH, &sig, NULL);
73 printf("sigaction returns %d\n", err);
75 _kern_set_alarm(1000000, TIMER_MODE_PERIODIC);
77 for(;;) {
78 err = _kern_snooze(10000000);
79 printf("_kern_snooze returns %d\n", err);
80 _kern_proc_create_proc("/boot/bin/false", "false", NULL, 0, 5, 0);
82 return 0;