Platon Technologies
not logged in Login Registration
EnglishSlovak
open source software development celebrating 10 years of open source development! Friday, October 16, 2026

Diff for ep/src/sigserv.c between version 1.7 and 1.8

version 1.7, 2002/05/27 20:04:20 version 1.8, 2002/05/29 15:12:55
Line 43 
Line 43 
 #include "sigserv.h"  #include "sigserv.h"
 #include "message.h"  #include "message.h"
   
 #if 0  #if DEBUG
   static char *get_signal_str(int sig_no)
   {
           char *s;
   
           switch (sig_no) {
                   default: s = "unknown"; break;
                   case SIGHUP: s = "SIGHUP"; break;
                   case SIGINT: s = "SIGINT"; break;
                   case SIGQUIT: s = "SIGQUIT"; break;
                   case SIGILL: s = "SIGILL"; break;
                   case SIGTRAP: s = "SIGTRAP"; break;
                   case SIGABRT: s = "SIGABRT"; break;
                   /* case SIGIOT: s = "SIGIOT"; break; */
                   case SIGBUS: s = "SIGBUS"; break;
                   case SIGFPE: s = "SIGFPE"; break;
                   case SIGKILL: s = "SIGKILL"; break;
                   case SIGUSR1: s = "SIGUSR1"; break;
                   case SIGSEGV: s = "SIGSEGV"; break;
                   case SIGUSR2: s = "SIGUSR2"; break;
                   case SIGPIPE: s = "SIGPIPE"; break;
                   case SIGALRM: s = "SIGALRM"; break;
                   case SIGTERM: s = "SIGTERM"; break;
                   case SIGSTKFLT: s = "SIGSTKFLT"; break;
                   /* case SIGCLD: s = "SIGCLD"; break; */
                   case SIGCHLD: s = "SIGCHLD"; break;
                   case SIGCONT: s = "SIGCONT"; break;
                   case SIGSTOP: s = "SIGSTOP"; break;
                   case SIGTSTP: s = "SIGTSTP"; break;
                   case SIGTTIN: s = "SIGTTIN"; break;
                   case SIGTTOU: s = "SIGTTOU"; break;
                   case SIGURG: s = "SIGURG"; break;
                   case SIGXCPU: s = "SIGXCPU"; break;
                   case SIGXFSZ: s = "SIGXFSZ"; break;
                   case SIGVTALRM: s = "SIGVTALRM"; break;
                   case SIGPROF: s = "SIGPROF"; break;
                   case SIGWINCH: s = "SIGWINCH"; break;
                   case SIGPOLL: s = "SIGPOLL"; break;
                   /* case SIGIO: s = "SIGIO"; break; */
                   case SIGPWR: s = "SIGPWR"; break;
                   case SIGSYS: s = "SIGSYS"; break;
           }
   
           return s;
   }
   
   static char *get_signal_description(int sig_no)
   {
           char *s;
   
           switch (sig_no) {
                   default: s = "unknown"; break;
                   case SIGHUP: s = "Hangup (POSIX)"; break;
                   case SIGINT: s = "Interrupt (ANSI)"; break;
                   case SIGQUIT: s = "Quit (POSIX)"; break;
                   case SIGILL: s = "Illegal instruction (ANSI)"; break;
                   case SIGTRAP: s = "Trace trap (POSIX)"; break;
                   case SIGABRT: s = "Abort (ANSI)"; break;
                   /* case SIGIOT: s = "IOT trap (4.2 BSD)"; break; */
                   case SIGBUS: s = "BUS error (4.2 BSD)"; break;
                   case SIGFPE: s = "Floating-point exception (ANSI)"; break;
                   case SIGKILL: s = "Kill, unblockable (POSIX)"; break;
                   case SIGUSR1: s = "User-defined signal 1 (POSIX)"; break;
                   case SIGSEGV: s = "Segmentation violation (ANSI)"; break;
                   case SIGUSR2: s = "User-defined signal 2 (POSIX)"; break;
                   case SIGPIPE: s = "Broken pipe (POSIX)"; break;
                   case SIGALRM: s = "Alarm clock (POSIX)"; break;
                   case SIGTERM: s = "Termination (ANSI)"; break;
                   case SIGSTKFLT: s = "Stack fault"; break;
                   /* case SIGCLD: s = "Same as SIGCHLD (System V)"; break; */
                   case SIGCHLD: s = "Child status has changed (POSIX)"; break;
                   case SIGCONT: s = "Continue (POSIX)"; break;
                   case SIGSTOP: s = "Stop, unblockable (POSIX)"; break;
                   case SIGTSTP: s = "Keyboard stop (POSIX)"; break;
                   case SIGTTIN: s = "Background read from tty (POSIX)"; break;
                   case SIGTTOU: s = "Background write to tty (POSIX)"; break;
                   case SIGURG: s = "Urgent condition on socket (4.2 BSD)"; break;
                   case SIGXCPU: s = "CPU limit exceeded (4.2 BSD)"; break;
                   case SIGXFSZ: s = "File size limit exceeded (4.2 BSD)"; break;
                   case SIGVTALRM: s = "Virtual alarm clock (4.2 BSD)"; break;
                   case SIGPROF: s = "Profiling alarm clock (4.2 BSD)"; break;
                   case SIGWINCH: s = "Window size change (4.3 BSD, Sun)"; break;
                   case SIGPOLL: s = "Pollable event occurred (System V)"; break;
                   /* case SIGIO: s = "I/O now possible (4.2 BSD)"; break; */
                   case SIGPWR: s = "Power failure restart (System V)"; break;
                   case SIGSYS: s = "Bad system call"; break;
           };
   
           return s;
   }
   #endif
   
         static RETSIGTYPE          static RETSIGTYPE
 sigserv_sigaction(sig, info, unused)  sigserv_sigaction(sig, info, unused)
Line 53  sigserv_sigaction(sig, info, unused)
Line 143  sigserv_sigaction(sig, info, unused)
 {  {
   
 #if DEBUG  #if DEBUG
         msg_debug_print("sigserv_sigaction(sig = %d, info = %p, data = %p)\n",          msg_debug_print("sigserv_sigaction(): sig = %s [%s]\n",
                                                         sig, info, unused);                          get_signal_str(sig), get_signal_description(sig));
 #endif  #endif
   
           switch (sig) {
                   case SIGCHLD:
                           sig_chld = 1;
                           break;
           };
   
   #if 0
         return;          return;
   
         switch (sig) {          switch (sig) {
Line 78  sigserv_sigaction(sig, info, unused)
Line 175  sigserv_sigaction(sig, info, unused)
                                 switch (info->si_code) {                                  switch (info->si_code) {
                                         case CLD_EXITED:        /* | child has exited            | */                                          case CLD_EXITED:        /* | child has exited            | */
                                                 msg_print("SIGCHLD -- child %d exited "                                                  msg_print("SIGCHLD -- child %d exited "
                                                                                                 "with status %d (%s)\n",                                                                  "with status %d (%s)\n",
                                                                                                 info->si_pid,                                                                  info->si_pid,
                                                                                                 info->si_errno,                                                                  info->si_errno,
                                                                                                 strerror(info->si_errno));                                                                  strerror(info->si_errno));
                                                 break;                                                  break;
                                         case CLD_KILLED:        /* | child was killed            | */                                          case CLD_KILLED:        /* | child was killed            | */
                                                 msg_print("SIGCHLD -- child %d was killed"                                                  msg_print("SIGCHLD -- child %d was killed"
                                                                                                 "by signal %d (%s)\n",                                                                  "by signal %d (%s)\n",
                                                                                                 info->si_pid,                                                                  info->si_pid,
                                                                                                 info->si_signo,                                                                  info->si_signo,
                                                                                                 strerror(info->si_errno));                                                                  strerror(info->si_errno));
                                                 break;                                                  break;
                                         case CLD_DUMPED:        /* | child terminated abnormally | */                                          case CLD_DUMPED:        /* | child terminated abnormally | */
                                                 msg_print("SIGCHLD -- child %d terminated abnormaly"                                                  msg_print("SIGCHLD -- child %d terminated abnormaly"
                                                                                                 "by signal %d (%s)\n",                                                                  "by signal %d (%s)\n",
                                                                                                 info->si_pid,                                                                  info->si_pid,
                                                                                                 info->si_signo,                                                                  info->si_signo,
                                                                                                 strerror(info->si_errno));                                                                  strerror(info->si_errno));
                                                 break;                                                  break;
                                         case CLD_TRAPPED:       /* | traced child has trapped    | */                                          case CLD_TRAPPED:       /* | traced child has trapped    | */
                                                 break;                                                  break;
Line 112  sigserv_sigaction(sig, info, unused)
Line 209  sigserv_sigaction(sig, info, unused)
                         kill(0, SIGTERM);                          kill(0, SIGTERM);
                         break;                          break;
                 default:                  default:
 #if DEBUG  
                         msg_debug_print("signal %d received\n", sig);  
 #endif  
                         break;                          break;
         }          }
   #endif
 }  }
   
         void          void
 sigserv_init(ptbl)  sigserv_init(ptbl)
         PROCTABLE ptbl;          PROCTABLE ptbl;
 {  {
         /*  
         struct sigaction sa;          struct sigaction sa;
   
         memset(&sa, 0, sizeof sa);          memset(&sa, '\0', sizeof sa);
         sa.sa_sigaction = sigserv_sigaction;          sa.sa_sigaction = sigserv_sigaction;
         sa.sa_flags = SA_RESTART | SA_SIGINFO;          sa.sa_flags     = SA_RESTART | SA_SIGINFO;
   
         sigaction(SIGCHLD, &sa, NULL);          sigaction(SIGQUIT, &sa, NULL);
         sigaction(SIGINT, &sa, NULL);          sigaction(SIGILL, &sa, NULL);
           sigaction(SIGABRT, &sa, NULL);
           sigaction(SIGFPE, &sa, NULL);
           sigaction(SIGKILL, &sa, NULL);
           sigaction(SIGSEGV, &sa, NULL);
         sigaction(SIGPIPE, &sa, NULL);          sigaction(SIGPIPE, &sa, NULL);
 */          sigaction(SIGALRM, &sa, NULL);
         /*          sigaction(SIGTERM, &sa, NULL);
         signal(SIGCHLD, sigserv_sigaction);          sigaction(SIGUSR1, &sa, NULL);
         signal(SIGINT, sigserv_sigaction);          sigaction(SIGUSR2, &sa, NULL);
 */          sigaction(SIGCHLD, &sa, NULL);
         /* toto je zoznam vsetkych signalov ktore existuju          sigaction(SIGCONT, &sa, NULL);
          * moze to ist prec, len som skusal vo ^d, ale          sigaction(SIGSTOP, &sa, NULL);
          * ziadny signal vredy ep nedostava          sigaction(SIGTSTP, &sa, NULL);
          */          sigaction(SIGTTIN, &sa, NULL);
         /*          sigaction(SIGTTOU, &sa, NULL);
         signal(SIGQUIT , sigserv_sigaction);          sigaction(SIGBUS, &sa, NULL);
         signal(SIGILL  , sigserv_sigaction);          sigaction(SIGPOLL, &sa, NULL);
         signal(SIGABRT , sigserv_sigaction);          sigaction(SIGPROF, &sa, NULL);
         signal(SIGFPE  , sigserv_sigaction);          sigaction(SIGSYS, &sa, NULL);
         //signal(SIGKILL , sigserv_sigaction);          sigaction(SIGTRAP, &sa, NULL);
         signal(SIGSEGV , sigserv_sigaction);          sigaction(SIGURG, &sa, NULL);
         signal(SIGPIPE , sigserv_sigaction);          sigaction(SIGVTALRM, &sa, NULL);
         signal(SIGALRM , sigserv_sigaction);          sigaction(SIGXCPU, &sa, NULL);
         signal(SIGTERM , sigserv_sigaction);          sigaction(SIGXFSZ, &sa, NULL);
         signal(SIGUSR1 , sigserv_sigaction);          sigaction(SIGIOT, &sa, NULL);
         signal(SIGUSR2 , sigserv_sigaction);          sigaction(SIGSTKFLT, &sa, NULL);
         signal(SIGCHLD , sigserv_sigaction);          sigaction(SIGIO, &sa, NULL);
         signal(SIGCONT , sigserv_sigaction);          sigaction(SIGCLD, &sa, NULL);
         //signal(SIGSTOP , sigserv_sigaction);          sigaction(SIGPWR, &sa, NULL);
         signal(SIGTSTP , sigserv_sigaction);          sigaction(SIGWINCH, &sa, NULL);
         signal(SIGTTIN , sigserv_sigaction);          sigaction(SIGUNUSED, &sa, NULL);
         signal(SIGTTOU , sigserv_sigaction);  
         signal(SIGBUS   , sigserv_sigaction);  #if DEBUG
         signal(SIGPOLL  , sigserv_sigaction);          msg_debug_print("sigserv_init(): signal handles installed\n");
         signal(SIGPROF  , sigserv_sigaction);  #endif
         signal(SIGSYS   , sigserv_sigaction);  
         signal(SIGTRAP  , sigserv_sigaction);          sig_chld = 0;
         signal(SIGURG   , sigserv_sigaction);  
         signal(SIGVTALRM, sigserv_sigaction);  
         signal(SIGXCPU  , sigserv_sigaction);  
         signal(SIGXFSZ  , sigserv_sigaction);  
         signal(SIGIOT    , sigserv_sigaction);  
         signal(SIGSTKFLT , sigserv_sigaction);  
         signal(SIGIO     , sigserv_sigaction);  
         signal(SIGCLD    , sigserv_sigaction);  
         signal(SIGPWR    , sigserv_sigaction);  
         signal(SIGWINCH  , sigserv_sigaction);  
         signal(SIGUNUSED , sigserv_sigaction);  
         */  
 }  }
   
   #if 0 /* Signals.  */ /* Linux 2.4.17 /usr/include/bits/signum.h */
   #define SIGHUP          1       /* Hangup (POSIX).  */
   #define SIGINT          2       /* Interrupt (ANSI).  */
   #define SIGQUIT         3       /* Quit (POSIX).  */
   #define SIGILL          4       /* Illegal instruction (ANSI).  */
   #define SIGTRAP         5       /* Trace trap (POSIX).  */
   #define SIGABRT         6       /* Abort (ANSI).  */
   #define SIGIOT          6       /* IOT trap (4.2 BSD).  */
   #define SIGBUS          7       /* BUS error (4.2 BSD).  */
   #define SIGFPE          8       /* Floating-point exception (ANSI).  */
   #define SIGKILL         9       /* Kill, unblockable (POSIX).  */
   #define SIGUSR1         10      /* User-defined signal 1 (POSIX).  */
   #define SIGSEGV         11      /* Segmentation violation (ANSI).  */
   #define SIGUSR2         12      /* User-defined signal 2 (POSIX).  */
   #define SIGPIPE         13      /* Broken pipe (POSIX).  */
   #define SIGALRM         14      /* Alarm clock (POSIX).  */
   #define SIGTERM         15      /* Termination (ANSI).  */
   #define SIGSTKFLT       16      /* Stack fault.  */
   #define SIGCLD          SIGCHLD /* Same as SIGCHLD (System V).  */
   #define SIGCHLD         17      /* Child status has changed (POSIX).  */
   #define SIGCONT         18      /* Continue (POSIX).  */
   #define SIGSTOP         19      /* Stop, unblockable (POSIX).  */
   #define SIGTSTP         20      /* Keyboard stop (POSIX).  */
   #define SIGTTIN         21      /* Background read from tty (POSIX).  */
   #define SIGTTOU         22      /* Background write to tty (POSIX).  */
   #define SIGURG          23      /* Urgent condition on socket (4.2 BSD).  */
   #define SIGXCPU         24      /* CPU limit exceeded (4.2 BSD).  */
   #define SIGXFSZ         25      /* File size limit exceeded (4.2 BSD).  */
   #define SIGVTALRM       26      /* Virtual alarm clock (4.2 BSD).  */
   #define SIGPROF         27      /* Profiling alarm clock (4.2 BSD).  */
   #define SIGWINCH        28      /* Window size change (4.3 BSD, Sun).  */
   #define SIGPOLL         SIGIO   /* Pollable event occurred (System V).  */
   #define SIGIO           29      /* I/O now possible (4.2 BSD).  */
   #define SIGPWR          30      /* Power failure restart (System V).  */
   #define SIGSYS          31      /* Bad system call.  */
   #define SIGUNUSED       31
 #endif  #endif
   

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8

Platon Group <platon@platon.org> http://platon.org/
Copyright © 2002-2006 Platon Group
Site powered by Metafox CMS
Go to Top