Entete des APIS signal et alarm

BoTTom |
      /if DEFINED(SIGNAL_H_INCLUDED)
      /eof
      /endif
      /define SIGNAL_H_INCLUDED
 
      *--------------------------------------------------------
      * Available signals
      *--------------------------------------------------------
     D SIGABRT         C                   const(1)
     D SIGIOT          C                   const(1)
     D SIGLOST         C                   const(1)
     D SIGFPE          C                   const(2)
     D SIGILL          C                   const(3)
     D SIGINT          C                   const(4)
     D SIGSEGV         C                   const(5)
     D SIGTERM         C                   const(6)
     D SIGUSR1         C                   const(7)
     D SIGUSR2         C                   const(8)
     D SIGIO           C                   const(9)
     D SIGAIO          C                   const(9)
     D SIGPTY          C                   const(9)
     D SIGALL          C                   const(10)
     D SIGOTHER        C                   const(11)
     D SIGKILL         C                   const(12)
     D SIGPIPE         C                   const(13)
     D SIGALRM         C                   const(14)
     D SIGHUP          C                   const(15)
     D SIGQUIT         C                   const(16)
     D SIGSTOP         C                   const(17)
     D SIGTSTP         C                   const(18)
     D SIGCONT         C                   const(19)
     D SIGCHLD         C                   const(20)
     D SIGCLD          C                   const(20)
     D SIGTTIN         C                   const(21)
     D SIGTTOU         C                   const(22)
     D SIGURG          C                   const(23)
     D SIGIOINT        C                   const(23)
     D SIGPOLL         C                   const(24)
     D SIGPCANCEL      C                   const(25)
     D SIGPALRM        C                   const(26)
     D SIGBUS          C                   const(32)
     D SIGDANGER       C                   const(33)
     D SIGPRE          C                   const(34)
     D SIGSYS          C                   const(35)


|
     D SIGTRAP         C                   const(36)
     D SIGPROF         C                   const(37)
     D SIGVTALRM       C                   const(38)
     D SIGXCPU         C                   const(39)
     D SIGXFSZ         C                   const(40)
 
      *--------------------------------------------------------
      * flags
      *--------------------------------------------------------
     D SA_NOCLDSTOP    c                   const(1)
     D SA_NODEFER      c                   const(2)
     D SA_RESETHAND    c                   const(4)
     D SA_SIGINFO      c                   const(8)
 
      *--------------------------------------------------------
      * sigprocmask() "how" argument
      *--------------------------------------------------------
     D SIG_BLOCK       c                   const(0)
     D SIG_UNBLOCK     c                   const(1)
     D SIG_SETMASK     c                   const(2)
 
      *--------------------------------------------------------
      *  sigset_t: signal set data structure
      *  ===================================
      *
      *  Note: There's not much point in trying to copy the
      *        way this is done in the ILE C header files,
      *        since RPG doesn't support integers that are
      *        1-bit long. Instead, I've defined the mask as
      *        one big field, and you can test/set bits with
      *        the %bitand() and %bitor() BIFs
      *--------------------------------------------------------
      /if not defined(SIGSET_T)
     D sigset_t        s             20U 0 based(TEMPLATE)
      /define SIGSET_T
      /endif
 
      *--------------------------------------------------------
      * sigaction_t: signal action data structure
      *
      * Prototype for signal handler (only if not SA_SIGINFO)
      *   D sa_handler      PR
      *   D   signo                       10I 0 value
      *


|
      * Prototype for signal action handler (only if SA_SIGINFO)
      *
      *   D sa_sigaction    PR
      *   D   signo                       10I 0 value
      *   D   info                              likeds(siginfo_t)
      *   D   context                       *   value
      *--------------------------------------------------------
     D sigaction_t     ds                  qualified
     D                                     align
     D                                     based(TEMPLATE)
     D   sa_handler                    *   procptr
     D   sa_mask                           like(sigset_t)
     D   sa_flags                    10I 0
     D   sa_sigaction                  *   procptr
 
 
      *--------------------------------------------------------
      * siginfo_t: signal information data structure
      *--------------------------------------------------------
     D siginfo_t       ds                  qualified
     D                                     align
     D                                     based(TEMPLATE)
     D   si_signo                    10I 0
     D   si_bits                      5U 0
     D   si_data_size                 5I 0
     D   si_time                      8A
     D   si_job                      10A
     D   si_user                     10A
     D   si_jobno                     6A
     D                                4A
     D   si_code                     10I 0
     D   si_errno                    10I 0
     D   si_pid                      10I 0
     D   si_uid                      10U 0
     D   si_data                      1A
 
 
      *++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      * alarm(): Send an alarm signal after XX seconds
      *++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     D alarm           PR            10U 0 extproc('alarm')
     D   secs                        10U 0 value
 
      *++++++++++++++++++++++++++++++++++++++++++++++++++++++++


|
      * Qp0sEnableSignals():  Enable a process for signals
      *++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     D Qp0sEnableSignals...
     D                 PR            10I 0 extproc('Qp0sEnableSignals')
 
      *++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      * Qp0sDisableSignals(): Disable signals
      *++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     D Qp0sDisableSignals...
     D                 PR            10I 0 extproc('Qp0sEnableSignals')
 
      *++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      * default signal handlers
      *++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     D C_sig_err       PR                  extproc('_C_sig_err')
     D   signal                      10I 0 value
     D SIG_ERR         S               *   procptr inz(%paddr(C_sig_err))
 
     D C_sig_dfl       PR                  extproc('_C_sig_dfl')
     D   signal                      10I 0 value
     D SIG_DFL         S               *   procptr inz(%paddr(C_sig_dfl))
 
     D C_sig_ign       PR                  extproc('_C_sig_ign')
     D   signal                      10I 0 value
     D SIG_IGN         S               *   procptr inz(%paddr(C_sig_ign))
 
      *++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      * sigaction():  Set signal action
      *++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     D sigaction       PR                  extproc('sigaction')
     D   sig                         10I 0 value
     D   act                               likeds(sigaction_t) const
     D                                     options(*omit)
     D   oact                              likeds(sigaction_t)
     D                                     options(*omit)
 
      *++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      * sigaddset():  add signal to signal set
      *++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     D sigaddset       PR            10I 0 extproc('sigaddset')
     D   set                               like(sigset_t)
     D   signo                       10I 0 value
 
 


|
      *++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      * sigdelset():  remove signal from signal set
      *++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     D sigdelset       PR            10I 0 extproc('sigdelset')
     D   set                               like(sigset_t)
     D   signo                       10I 0 value
 
 
      *++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      * sigemptyset(): initialize an empty signal set
      *++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     D sigemptyset     PR            10I 0 extproc('sigemptyset')
     D   set                               like(sigset_t)
 
 
      *++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      * sigfillset(): initialize a full signal set
      *++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     D sigfillset      PR            10I 0 extproc('sigfillset')
     D   set                               like(sigset_t)
 
 
      *++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      * sigismember(): test if signal is in signal set
      *++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     D sigismember     PR            10I 0 extproc('sigismember')
     D   set                               like(sigset_t)
     D   signo                       10I 0 value
 
 
      *++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      * signal(): set signal action (simplified version of
      *           sigaction() API)
      *++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     D signal          PR              *   procptr
     D                                     extproc('signal')
     D   sig                         10I 0 value
     D   handler                       *   procptr value
 
      *++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      * sigpending(): examine pending signals
      *++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     D sigpending      PR            10I 0 extproc('sigpending')
     D   set                               like(sigset_t)


|
 
      *++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      * sigprocmask(): Examine and change blocked signals
      *++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     D sigprocmask     PR            10I 0 extproc('sigprocmask')
     D   how                         10I 0 value
     D   set                               like(sigset_t)
     D                                     const
     D   oset                              like(sigset_t)
 
      *++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      * sigsuspend(): replace signal mask and suspend
      *++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     D sigsuspend      PR            10I 0 extproc('sigsuspend')
     D   mask                              like(sigset_t)   const
 
 
      *++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      * sigwait(): wait for a signal in a set
      *++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     D sigwait         PR            10I 0 extproc('sigwait')
     D   set                               like(sigset_t)   const




©AF400