Imported Upstream version 3.2.2
[debian/gnuradio] / gruel / src / lib / thread_body_wrapper.cc
1 /* -*- c++ -*- */
2 /*
3  * Copyright 2008 Free Software Foundation, Inc.
4  * 
5  * This file is part of GNU Radio
6  * 
7  * GNU Radio is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 3, or (at your option)
10  * any later version.
11  * 
12  * GNU Radio is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  * 
17  * You should have received a copy of the GNU General Public License along
18  * with this program; if not, write to the Free Software Foundation, Inc.,
19  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20  */
21
22 #ifdef HAVE_CONFIG_H
23 #include <config.h>
24 #endif
25 #include <gruel/thread_body_wrapper.h>
26 #ifdef HAVE_SIGNAL_H
27 #include <signal.h>
28 #endif
29 #include <stdio.h>
30
31 namespace gruel {
32
33 #if defined(HAVE_PTHREAD_SIGMASK) && defined(HAVE_SIGNAL_H)
34
35   void mask_signals()
36   {
37     sigset_t    new_set;
38     int r;
39
40     sigemptyset(&new_set);              
41     sigaddset(&new_set, SIGHUP);        // block these...
42     sigaddset(&new_set, SIGINT);
43     sigaddset(&new_set, SIGPIPE);
44     sigaddset(&new_set, SIGALRM);
45     sigaddset(&new_set, SIGTERM);
46     sigaddset(&new_set, SIGUSR1);
47     sigaddset(&new_set, SIGCHLD);
48 #ifdef SIGPOLL
49     sigaddset(&new_set, SIGPOLL);
50 #endif
51 #ifdef SIGPROF
52     sigaddset(&new_set, SIGPROF);
53 #endif
54 #ifdef SIGSYS
55     sigaddset(&new_set, SIGSYS);
56 #endif
57 #ifdef SIGTRAP
58     sigaddset(&new_set, SIGTRAP);
59 #endif
60 #ifdef SIGURG
61     sigaddset(&new_set, SIGURG);
62 #endif
63 #ifdef SIGVTALRM
64     sigaddset(&new_set, SIGVTALRM);
65 #endif
66 #ifdef SIGXCPU
67     sigaddset(&new_set, SIGXCPU);
68 #endif
69 #ifdef SIGXFSZ
70     sigaddset(&new_set, SIGXFSZ);
71 #endif
72     r = pthread_sigmask(SIG_BLOCK, &new_set, 0);
73     if (r != 0)
74       perror("pthread_sigmask");
75   }
76
77 #else
78
79   void mask_signals()
80   {
81   }
82
83 #endif
84
85 };