libmeinos: +llist2
[meinos.git] / apps / include / signal.h
blobe9335ecef6dca48f8c93f377ccddefc3826bfc0e
1 /*
2 meinOS - A unix-like x86 microkernel operating system
3 Copyright (C) 2008 Janosch Gräf <janosch.graef@gmx.net>
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU Lesser General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU Lesser General Public License for more details.
15 You should have received a copy of the GNU Lesser General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
19 #ifndef _SIGNAL_H_
20 #define _SIGNAL_H_
22 #include <sys/types.h>
23 #include <syscall.h>
25 #define SIG_ERR -1
27 // Default signal handler
28 #define SIG_IGN _signal_dfl_ignore
29 #define SIG_DFL NULL
31 // Signals
32 #define SIGHUP 1
33 #define SIGINT 2
34 #define SIGQUIT 3
35 #define SIGILL 4
36 #define SIGTRAP 5
37 #define SIGABRT 6
38 #define SIGBUS 7
39 #define SIGFPE 8
40 #define SIGKILL 9
41 #define SIGUSR1 10
42 #define SIGSEGV 11
43 #define SIGUSR2 12
44 #define SIGPIPE 13
45 #define SIGALRM 14
46 #define SIGTERM 15
47 #define SIGSTKFLT 16
48 #define SIGCHLD 17
49 #define SIGCONT 18
50 #define SIGSTOP 19
51 #define SIGTSTP 20
52 #define SIGTTIN 21
53 #define SIGTTOU 22
54 #define SIGURG 23
55 #define SIGXCPU 24
56 #define SIGXFSZ 25
57 #define SIGVTALRM 26
58 #define SIGPROF 27
59 #define SIGWINCH 28
60 #define SIGIO 29
61 #define SIGPWR 30
62 #define SIGSYS 31
63 #define SIGRTMIN(x) (34+(x))
64 #define SIGRTMAX(x) (64-(x))
66 typedef struct {
67 int si_signo;
68 int si_sigcode;
69 int si_errno;
70 pid_t si_pid;
71 uid_t si_uid;
72 void *si_addr;
73 int si_status;
74 long si_band;
75 } siginfo_t;
77 typedef struct {
78 size_t num_signals;
79 int *sigs;
80 } sigset_t;
82 struct sigaction {
83 void (*sa_handler)(int sig);
84 sigset_t sa_mask;
85 int sa_flags;
86 void (*sa_sigaction)(int sig,siginfo_t *siginfo,void *context);
89 void (*signal(int sig,void (*handler)(int)))(int);
90 void (*sysv_signal(int sig,void (*handler)(int)))(int);
91 void _signal_dfl_ignore(int sig);
92 void _signal_handler(int sig);
94 static inline int kill(pid_t pid,int sig) {
95 return syscall_call(SYSCALL_SIG_SEND,2,pid,sig);
98 static inline int raise(int sig) {
99 _signal_handler(sig);
100 //kill(getpid(),sig);
101 return 0;
104 #endif