1 a.dunfey 1.21.18.1 //%2006////////////////////////////////////////////////////////////////////////
|
2 kumpf 1.5 //
|
3 karl 1.17 // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
4 // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
5 // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
|
6 karl 1.14 // IBM Corp.; EMC Corporation, The Open Group.
|
7 karl 1.17 // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
8 // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
|
9 karl 1.21 // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
10 // EMC Corporation; VERITAS Software Corporation; The Open Group.
|
11 a.dunfey 1.21.18.1 // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
12 // EMC Corporation; Symantec Corporation; The Open Group.
|
13 mike 1.2 //
14 // Permission is hereby granted, free of charge, to any person obtaining a copy
15 // of this software and associated documentation files (the "Software"), to
16 // deal in the Software without restriction, including without limitation the
17 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
18 // sell copies of the Software, and to permit persons to whom the Software is
19 // furnished to do so, subject to the following conditions:
|
20 kumpf 1.5 //
|
21 mike 1.2 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
22 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
23 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
24 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
25 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
26 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
27 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 //
30 //==============================================================================
31 //
|
32 kumpf 1.9 // Author: Markus Mueller (markus_mueller@de.ibm.com)
|
33 mike 1.2 //
|
34 kumpf 1.9 // Modified By: Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)
|
35 kumpf 1.10 // : Yi Zhou, Hewlett-Packard Company (yi_zhou@hp.com)
|
36 mike 1.2 //
37 //%/////////////////////////////////////////////////////////////////////////////
38
|
39 kumpf 1.9 #ifndef Pegasus_Signal_h
40 #define Pegasus_Signal_h
|
41 mike 1.2
|
42 kumpf 1.9 #include <Pegasus/Common/Linkage.h>
43 #include <Pegasus/Common/IPC.h>
|
44 mike 1.3
|
45 mike 1.2 // // Ensure Unix 98
46 // #ifdef PEGASUS_PLATFORM_LINUX_IX86_GNU
47 // #ifndef _GNU_SOURCE
48 // #define _GNU_SOURCE
49 // #endif
50 // #else
51 // #ifdef _XOPEN_SOURCE
52 // #undef _XOPEN_SOURCE
53 // #endif
54 // #define _XOPEN_SOURCE 600
55 // #endif
56
|
57 kumpf 1.9 #ifdef PEGASUS_HAS_SIGNALS
58
59 # include <signal.h>
60 typedef siginfo_t PEGASUS_SIGINFO_T;
61 # define PEGASUS_SIGHUP SIGHUP
62 # define PEGASUS_SIGABRT SIGABRT
63 # define PEGASUS_SIGPIPE SIGPIPE
|
64 kumpf 1.13 # define PEGASUS_SIGTERM SIGTERM
|
65 kumpf 1.10 # define PEGASUS_SIGUSR1 SIGUSR1
|
66 kumpf 1.15 # define PEGASUS_SIGCHLD SIGCHLD
|
67 kumpf 1.9
68 #else // PEGASUS_HAS_SIGNALS
69
70 typedef void PEGASUS_SIGINFO_T;
71 # define PEGASUS_SIGHUP 1
72 # define PEGASUS_SIGABRT 11
73 # define PEGASUS_SIGPIPE 13
|
74 kumpf 1.13 # define PEGASUS_SIGTERM 15
|
75 kumpf 1.11 # define PEGASUS_SIGUSR1 16
|
76 kumpf 1.15 # define PEGASUS_SIGCHLD 18
|
77 kumpf 1.9
78 #endif // PEGASUS_HAS_SIGNALS
79
|
80 mike 1.2
|
81 david.dillard 1.16 #if defined(PEGASUS_PLATFORM_ZOS_ZSERIES_IBM) || (PEGASUS_OS_SOLARIS)
|
82 sage 1.6 extern "C" {
83 #endif
84
|
85 kumpf 1.9 typedef void (* signal_handler)(int, PEGASUS_SIGINFO_T *, void *);
|
86 sage 1.6
|
87 david.dillard 1.16 #if defined(PEGASUS_PLATFORM_ZOS_ZSERIES_IBM) || (PEGASUS_OS_SOLARIS)
|
88 sage 1.6 }
89 #endif
|
90 mike 1.2
|
91 kumpf 1.9 // Sample signal handler for SIGABRT that stops the failing thread normally
92 void sig_act(int s_n, PEGASUS_SIGINFO_T * s_info, void * sig);
|
93 mike 1.2
94 PEGASUS_NAMESPACE_BEGIN
95
96 class PEGASUS_COMMON_LINKAGE SignalHandler
97 {
|
98 david.dillard 1.18 public:
99 SignalHandler();
|
100 mike 1.2
|
101 david.dillard 1.18 ~SignalHandler(); // deactivate all registered handlers
|
102 mike 1.2
|
103 david.dillard 1.18 // these functions should throw exceptions
|
104 mike 1.2
|
105 david.dillard 1.20 void registerHandler(unsigned signum, signal_handler _sighandler);
|
106 mike 1.2
|
107 david.dillard 1.20 void activate(unsigned signum);
|
108 mike 1.2
|
109 david.dillard 1.18 //void activateAll();
|
110 mike 1.2
|
111 david.dillard 1.20 void deactivate(unsigned signum);
|
112 mike 1.2
|
113 david.dillard 1.18 void deactivateAll();
|
114 mike 1.2
|
115 david.dillard 1.20 static void ignore(unsigned signum);
|
116 mike 1.2
|
117 david.dillard 1.18 private:
|
118 mike 1.2
|
119 kumpf 1.9 #ifdef PEGASUS_HAS_SIGNALS
|
120 david.dillard 1.20 enum
121 {
122 PEGASUS_NSIG = 32
123 };
124
125 static void verifySignum(unsigned signum);
|
126 kumpf 1.9
|
127 david.dillard 1.18 typedef struct {
128 int signum;
129 int active;
130 signal_handler sh;
131 struct sigaction oldsa;
132 } register_handler;
|
133 mike 1.2
|
134 david.dillard 1.18 register_handler reg_handler[PEGASUS_NSIG + 1];
135 Mutex reg_mutex;
136
|
137 david.dillard 1.19 void deactivate_i(register_handler &rh);
|
138 david.dillard 1.18
|
139 david.dillard 1.20 register_handler &getHandler(unsigned sigum);
|
140 kumpf 1.9 #endif
|
141 mike 1.2
142 };
143
|
144 kumpf 1.12 PEGASUS_COMMON_LINKAGE SignalHandler * getSigHandle();
|
145 mike 1.2
146 PEGASUS_NAMESPACE_END
147
|
148 kumpf 1.9 #endif // Pegasus_Signal_h
|