(file) Return to Signal.h CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Common

  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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2