TOPIC   #  NAME           DESCRIPTION
-----  --- ------------   ------------------------------------------------
signal  -- signal list     - standard signals
signal  27 alarm           - set an alarm clock for delivery of a signal
signal  37 kill            - send signal to a process
signal  29 pause           - wait for signal
signal 174 rt_sigaction    - setup rt sighnd (RTL)
signal 176 rt_sigpending   - real time sigaction
signal 175 rt_sigprocmask  - real time sigprocmask
signal 178 rt_sigqueueinfo - real time sigqueueingo
signal 173 rt_sigreturn    - real time sigreturn
signal 179 rt_sigsuspend   - real time sigsuspend
signal 177 rt_sigtimedwait - real time sigtimedwait
signal  68 sgetmask        - 
signal  67 sigaction       - POSIX signal handling
signal 186 sigaltstack     - get or set alternate signal stack content
signal  48 signal          - ANSI C signal handling
signal  73 sigpending      - POSIX signal handling functions
signal 126 sigprocmask     - POSIX signal handling functions
signal 119 sigreturn       - return from signal handler and cleanup stack frame
signal  72 sigsuspend      - POSIX signal handling functionsx
signal  69 ssetmask        - 


---------------------------------------------------------------------------
Standard Signals
 Linux supports the standard signals listed below.

 The  entries  in  the  "Action" column of the table specify the default
 action for the signal, as follows:

 Term   Default action is to terminate the process.
 Ign    Default action is to ignore the signal.
 Core   Default action is to terminate the process and dump core.
 Stop   Default action is to stop the process.

 First the signals described in the original POSIX.1 standard.

 Signal   Value     Action   Comment
 -------         ------    -------  --------------------------------------
 SIGHUP      1       Term    Hangup detected on controlling terminal
                                     or death of controlling process
 SIGINT      2       Term    Interrupt from keyboard
 SIGQUIT     3       Core    Quit from keyboard
 SIGILL      4       Core    Illegal Instruction
 SIGABRT     6       Core    Abort signal from abort(3)
 SIGFPE      8       Core    Floating point exception
 SIGKILL     9       Term    Kill signal
 SIGSEGV     11       Core    Invalid memory reference
 SIGPIPE     13       Term    Broken pipe: write to pipe with no readers
 SIGALRM     14       Term    Timer signal from alarm(2)
 SIGTERM     15       Term    Termination signal
 SIGUSR1     10       Term    User-defined signal 1
 SIGUSR2     12       Term    User-defined signal 2
 SIGCHLD     17       Ign     Child stopped or terminated
 SIGCONT     18               Continue if stopped
 SIGSTOP     19       Stop    Stop process
 SIGTSTP     20       Stop    Stop typed at tty
 SIGTTIN     21       Stop    tty input for background process
 SIGTTOU     22       Stop    tty output for background process

 The signals SIGKILL and SIGSTOP cannot be caught, blocked, or  ignored.

 Next the signals not in the POSIX.1 standard
 --------------------------------------------                             
 SIGBUS       7        Core    Bus error (bad memory access)
 SIGPOLL      29       Term    Pollable event (Sys V). Synonym of SIGIO
 SIGPROF      27       Term    Profiling timer expired
 SIGTRAP      5        Core    Trace/breakpoint trap
 SIGURG       23       Ign     Urgent condition on socket (4.2 BSD)
 SIGVTALRM    26       Term    Virtual alarm clock (4.2 BSD)
 SIGXCPU      24       Core    CPU time limit exceeded (4.2 BSD)
 SIGXFSZ      25       Core    File size limit exceeded (4.2 BSD)

 Up to and including Linux 2.2, the default behaviour for SIGSYS,  SIGX-
 CPU,  SIGXFSZ,  and SIGBUS
 was to terminate the process (without a core  dump).
 Linux  2.4  conforms to  the  POSIX
 1003.1-2001  requirements  for  these  signals, terminating the process
 with a core dump.

 Next various other signals.

 Signal     Value     Action   Comment
 ------------     -------   -------- --------------------------------
 SIGIOT       6        Core    IOT trap. A synonym for SIGABRT
 SIGSTKFLT    16       Term    Stack fault on coprocessor (unused)
 SIGIO        29       Term    I/O now possible (4.2 BSD)
 SIGPWR       30       Term    Power failure (System V)
 SIGINFO      -                A synonym for SIGPWR
 SIGLOST      -        Term    File lock lost
 SIGWINCH     28       Ign     Window resize signal (4.3 BSD, Sun)
 SIGUNUSED    31       Term    Unused signal (will be SIGSYS)

 SIGPWR (which is not  specified in  POSIX  1003.1-2001)  is  typically
 ignored by default on those other Unices where it appears.

 SIGIO  (which  is  not  specified  in  POSIX 1003.1-2001) is ignored by
 default on several other Unices.

Real-time Signals
 Linux supports real-time signals as originally defined in  the  POSIX.4
 real-time  extensions  (and  now included in POSIX 1003.1-2001).        Linux
 supports 32 real-time  signals, numbered  from 32  (SIGRTMIN)  to  63
 (SIGRTMAX).   (Programs should always refer to real-time signals using
 notation SIGRTMIN+n, since the range of real-time signal numbers varies
 across Unices.)

----------------------------------------------------------------------------
 27 alarm           - set an alarm clock for delivery of a signal
----------------------------------------------------------------------------
  mov   eax,027
  mov   ebx,seconds
  int   80h

       alarm  arranges  for a SIGALRM signal to be delivered to the process in
       seconds seconds.

       If seconds is zero, no new alarm is scheduled.

       In any event any previously set alarm is cancelled.

RETURN VALUE
       alarm returns the number of  seconds  remaining  until  any  previously
       scheduled alarm was due to be delivered, or zero if there was no previ-
       ously scheduled alarm.

NOTES
       alarm and setitimer share the same timer; calls to one  will  interfere
       with use of the other.

       sleep()  may  be implemented using SIGALRM; mixing calls to alarm() and
       sleep() is a bad idea.

       Scheduling delays can, as ever, cause the execution of the  process  to
       be delayed by an arbitrary amount of time.

SEE ALSO
       setitimer(2),   signal(2),  sigaction(2),  gettimeofday(2),  select(2),
       pause(2), sleep(3)

----------------------------------------------------------------------------
 37 kill            - send signal to a process
----------------------------------------------------------------------------
  mov  eax,037
  mov  ebx,pid
  mov  ecx,sig
  int  80h

       The  kill  system  call  can  be used to send any signal to any process
       group or process.

       If pid is positive, then signal sig is sent to pid.

       If pid equals 0, then sig is sent to every process in the process group
       of the current process.

       If  pid equals -1, then sig is sent to every process except for process
       1 (init), but see below.

       If pid is less than -1, then sig  is  sent  to  every  process  in  the
       process group -pid.

       If  sig  is 0, then no signal is sent, but error checking is still per-
       formed.

RETURN VALUE
       On success, zero is returned.  On error, -1 is returned, and  errno  is
       set appropriately.

ERRORS
       EINVAL An invalid signal was specified.

       ESRCH  The  pid or process group does not exist.  Note that an existing
              process might be a zombie, a  process  which  already  committed
              termination, but has not yet been wait()ed for.

       EPERM  The  process  does not have permission to send the signal to any
              of the receiving processes.  For a process to have permission to
              send  a  signal  to  process pid it must either have root privi-
              leges, or the real or effective user ID of the  sending  process
              must  equal  the  real  or  saved  set-user-ID  of the receiving
              process.  In the case of SIGCONT it suffices  when  the  sending
              and receiving processes belong to the same session.

NOTES
       It is impossible to send a signal to task number one, the init process,
       for which it has not installed a  signal  handler.   This  is  done  to
       assure the system is not brought down accidentally.

       POSIX  1003.1-2001 requires that kill(-1,sig) send sig to all processes
       that the current process may send signals to, except possibly for  some
       implementation-defined  system  processes.   Linux  allows a process to
       signal itself


SEE ALSO
       _exit(2), killpg(2), signal(2), tkill(2), exit(3), signal(7)


----------------------------------------------------------------------------
 29 pause           - wait for signal
----------------------------------------------------------------------------
  mov  eax,029
  int  80h

       note: not sure if available on Linux?

       The  pause  function causes the invoking process (or thread) to
       sleep until a signal is received that either terminates it or causes it
       to call a signal-catching function.

RETURN VALUE
       The  pause  function only returns when a signal was caught and the sig-
       nal-catching function returned. In this  case  pause  returns  -1,  and
       errno is set to EINTR.

ERRORS
       EINTR  a signal was caught and the signal-catching function returned.

SEE ALSO
       kill(2), select(2), signal(2)


----------------------------------------------------------------------------
174 rt_sigaction    - setup rt sighnd (RTL)
----------------------------------------------------------------------------

  undocumented

----------------------------------------------------------------------------
176 rt_sigpending   - real time sigaction
----------------------------------------------------------------------------

  undocumented

----------------------------------------------------------------------------
175 rt_sigprocmask  - real time sigprocmask
----------------------------------------------------------------------------

  undocumented

----------------------------------------------------------------------------
178 rt_sigqueueinfo - real time sigqueueingo
----------------------------------------------------------------------------

  undocumented

----------------------------------------------------------------------------
173 rt_sigreturn    - real time sigreturn
----------------------------------------------------------------------------

  undocumented

----------------------------------------------------------------------------
179 rt_sigsuspend   - real time sigsuspend
----------------------------------------------------------------------------

  undocumented

----------------------------------------------------------------------------
177 rt_sigtimedwait - real time sigtimedwait
----------------------------------------------------------------------------

  undocumented

----------------------------------------------------------------------------
 68 sgetmask        - get signal mask 
----------------------------------------------------------------------------
  mov  eax,068
  int  80h

----------------------------------------------------------------------------
 67 sigaction       - sets up the action for a given signal
----------------------------------------------------------------------------
  mov  eax,067
  mov  ebx,signum
  mov  ecx,act
  mov  edx,oldaction
  int  80h


       The  sigaction  system  call  is  used  to change the action taken by a
       process on receipt of a specific signal.

       signum specifies the signal and can be any valid signal except  SIGKILL
       and SIGSTOP. see signal list at end

       If  act is non-null, the new action for signal signum is installed from
       act.  If oldact is non-null, the previous action is saved in oldact.

       The sigaction structure is defined as

             dd sa_handler ; pointer to handler for this signal
             dd sa_sigaction ;signal number
             dd sa_mask      ;
             dd sa_flags     ;
             dd sa_restorer  ;unused field

       sa_handler specifies the action to be associated with signum and may be
       SIG_DFL (0) for  the  default  action, SIG_IGN (1) to ignore this
       signal, or a pointer to a signal handling function.  This function
       receives the signal number as its only argument.

       sa_sigaction  also  specifies  the action to be associated with signum.
       This function receives the signal  number  as  its  first  argument,  a
       pointer  to a siginfo_t as its second argument and a pointer to a ucon-
       text_t (cast to void *) as its third argument.

       sa_mask gives a mask of signals which should be blocked  during  execu-
       tion  of  the  signal handler.  In addition, the signal which triggered
       the handler will be blocked, unless the SA_NODEFER or  SA_NOMASK  flags
       are used.

       sa_flags  specifies  a  set  of flags which modify the behaviour of the
       signal handling process. It is formed by the bitwise OR of zero or more
       of the following:

              SA_NOCLDSTOP 0x00000001
                     If  signum  is  SIGCHLD, do not receive notification when
                     child processes stop (i.e., when child processes  receive
                     one of SIGSTOP, SIGTSTP, SIGTTIN or SIGTTOU).

              SA_ONESHOT or SA_RESETHAND 0x80000000
                     Restore  the  signal action to the default state once the
                     signal handler has been called.

              SA_ONSTACK 0x08000000
                     Call the signal handler on an alternate signal stack pro-
                     vided  by  sigaltstack(2).   If an alternate stack is not
                     available, the default stack will be used.

              SA_RESTART 0x10000000
                     Provide behaviour compatible with BSD signal semantics by
                     making certain system calls restartable across signals.

              SA_NOMASK or SA_NODEFER 0x40000000
                     Do not prevent the signal from being received from within
                     its own signal handler.

              SA_SIGINFO 0x00000004
                     The signal handler takes 3 arguments, not one.   In  this
                     case,  sa_sigaction  should be set instead of sa_handler.
                     (The sa_sigaction field was added in Linux 2.1.86.)

 Signal handlers are passed three parameters if    
 SA_SIGINFO was specified in sa_flags.  They are:
 signal number, ptr to siginfo_t, ptr to ucontext_t
 These parmaters are on the stack (see example handlers)

              siginfo_t {
        0         int      si_signo;  /* Signal number */
        4         int      si_errno;  /* An errno value */
        8         int      si_code;   /* Signal code */
                  pid_t    si_pid;    /* Sending process ID */
                  uid_t    si_uid;    /* Real user ID of sending process */
                  int      si_status; /* Exit value or signal */
                  clock_t  si_utime;  /* User time consumed */
                  clock_t  si_stime;  /* System time consumed */
                  sigval_t si_value;  /* Signal value */
                  int      si_int;    /* POSIX.1b signal */
                  void *   si_ptr;    /* POSIX.1b signal */
                  void *   si_addr;   /* Memory location which caused fault */
                  int      si_band;   /* Band event */
                  int      si_fd;     /* File descriptor */

       si_signo,  si_errno  and si_code are defined for all signals.  The rest
       of the struct may be a union, so that one should only read  the  fields
       that  are  meaningful  for the given signal.  kill(2), POSIX.1b signals
       and SIGCHLD fill in si_pid and si_uid.   SIGCHLD also fills in  si_sta-
       tus,  si_utime  and  si_stime.   si_int and si_ptr are specified by the
       sender of the POSIX.1b signal.  SIGILL, SIGFPE, SIGSEGV and SIGBUS fill
       in si_addr with the address of the fault.  SIGPOLL fills in si_band and
       si_fd.

       si_code indicates why this signal was sent.  It is a value, not a  bit-
       mask.   The values which are possible for any signal are listed in this
       table:

              si_code   
  +-----------+------------------------+
   Value             Signal origin           
  +-----------+------------------------+
   SI_USER      kill, sigsend or raise =0  
   SI_KERNEL    The kernel              =80h
   SI_QUEUE     sigqueue                =-1
   SI_TIMER     timer expired           =-2
   SI_MESGQ     mesq state changed      =-3
   SI_ASYNCIO   AIO completed           =-4
   SI_SIGIO     queued SIGIO            =-5


    SIGILL - illegal operation signal handler                 
  +-----------+-------------------------+
  |ILL_ILLOPC | illegal opcode           =1
  |ILL_ILLOPN | illegal operand  =2
  |ILL_ILLADR | illegal addressing mode =3
  |ILL_ILLTRP | illegal trap             =4
  |ILL_PRVOPC | privileged opcode        =5
  |ILL_PRVREG | privileged register     =6
  |ILL_COPROC | coprocessor error        =7
  |ILL_BADSTK | internal stack error    =8


     SIGFPE - floating point math error                
  +-----------+----------------------------------+
  |FPE_INTDIV | integer divide by zero            =1
  |FPE_INTOVF | integer overflow                  =2
  |FPE_FLTDIV | floating point divide by zero    =3
  |FPE_FLTOVF | floating point overflow   =4
  |FPE_FLTUND | floating point underflow          =5
  |FPE_FLTRES | floating point inexact result    =6
  |FPE_FLTINV | floating point invalid operation =7
  |FPE_FLTSUB | subscript out of range            =8

           sigsegv
  +------------+---------------------------------------+
  |SEGV_MAPERR | address not mapped to object           =1
  |SEGV_ACCERR | invalid permissions for mapped object =2

       +--------------------------------------------+
       |                  SIGBUS                    |
       +-----------+--------------------------------+
       |BUS_ADRALN | invalid address alignment      |
       +-----------+--------------------------------+
       |BUS_ADRERR | non-existent physical address  |
       +-----------+--------------------------------+
       |BUS_OBJERR | object specific hardware error |
       +-----------+--------------------------------+

      SIGTRAP - signal handler           
  +-----------+--------------------+
  |TRAP_BRKPT | process breakpoint =1
  |TRAP_TRACE | process trace trap =2

       +--------------------------------------------+
       |                  SIGCHLD                   |
       +--------------+-----------------------------+
       |CLD_EXITED    | child has exited            |
       +--------------+-----------------------------+
       |CLD_KILLED    | child was killed            |
       +--------------+-----------------------------+
       |CLD_DUMPED    | child terminated abnormally |
       +--------------+-----------------------------+
       |CLD_TRAPPED   | traced child has trapped    |
       +--------------+-----------------------------+
       |CLD_STOPPED   | child has stopped           |
       +--------------+-----------------------------+
       |CLD_CONTINUED | stopped child has continued |
       +--------------+-----------------------------+

       +-----------------------------------------+
       |                SIGPOLL                  |
       +---------+-------------------------------+
       |POLL_IN  | data input available          |
       +---------+-------------------------------+
       |POLL_OUT | output buffers available      |
       +---------+-------------------------------+
       |POLL_MSG | input message available       |
       +---------+-------------------------------+
       |POLL_ERR | i/o error                     |
       +---------+-------------------------------+
       |POLL_PRI | high priority input available |
       +---------+-------------------------------+
       |POLL_HUP | device disconnected           |
       +---------+-------------------------------+


RETURN VALUE
       The functions sigaction, sigprocmask, and sigpending return 0  on  suc-
       cess  and -1 on error.  The function sigsuspend always returns -1, nor-
       mally with the error EINTR.


ERRORS
       EINVAL An invalid signal was specified.  This will also be generated if
       (22)   an  attempt is made to change the action for SIGKILL or SIGSTOP,
              which cannot be caught.

       EFAULT act, oldact, set, oldset or mask point to memory which is not  a
       (14)      valid part of the process address space.

       EINTR (4)  System call was interrupted.


NOTES
       It  is  not  possible  to block SIGKILL or SIGSTOP with the sigprocmask
       call.  Attempts to do so will be silently ignored.

       According to POSIX, the behaviour of a process is  undefined  after  it
       ignores  a  SIGFPE, SIGILL, or SIGSEGV signal that was not generated by
       the kill() or the raise() functions.   Integer  division  by  zero  has
       undefined result.  On some architectures it will generate a SIGFPE sig-
       nal.  (Also dividing the most  negative  integer  by  -1  may  generate
       SIGFPE.)  Ignoring this signal might lead to an endless loop.

       POSIX  (B.3.3.1.3) disallows setting the action for SIGCHLD to SIG_IGN.
       The BSD and SYSV behaviours differ, causing BSD software that sets  the
       action for SIGCHLD to SIG_IGN to fail on Linux.

       The  POSIX  spec  only  defines SA_NOCLDSTOP.  Use of other sa_flags is
       non-portable.

       The SA_RESETHAND flag is compatible with the  SVr4  flag  of  the  same
       name.

       The  SA_NODEFER  flag is compatible with the SVr4 flag of the same name
       under kernels 1.3.9 and newer.  On older kernels the Linux  implementa-
       tion  allowed  the  receipt  of  any  signal,  not  just the one we are
       installing (effectively overriding any sa_mask settings).

       The SA_RESETHAND  and  SA_NODEFER  names  for  SVr4  compatibility  are
       present only in library versions 3.0.9 and greater.

       The SA_SIGINFO flag is specified by POSIX.1b.  Support for it was added
       in Linux 2.2.

       sigaction can be called with a null second argument to query  the  cur-
       rent  signal handler. It can also be used to check whether a given sig-
       nal is valid for the current machine by calling it with null second and
       third arguments.

       See sigsetops(3) for details on manipulating signal sets.


SEE ALSO
       kill(1), kill(2), killpg(2), pause(2), sigaltstack(2), raise(3), sigin-
       terrupt(3), signal(2), signal(7), sigsetops(3), sigvec(2)



----------------------------------------------------------------------------
186 sigaltstack     - set alternate signal stack 
----------------------------------------------------------------------------
  mov  eax,186
  mov  ebx,sss
  mov  ecx,oss
  int  80h

  sigaltstack(2) stores the signal in an
  alternate stack structure ss where its execution status may be examined
  prior to processing.

  The signals.stack_t struct is defined as follows:

  struc stack_t
  ss_sp  dword 
  ss_flags  dword 
  ss_size dword
  endstruc

  ss_sp points to the stack structure.
  ss_flags specifies the stack state to signals.ss_disable or
  signals.ss_onstack as follows:

  If ss is not NULL,the new state may be set to signals.ss_disable, which
  specifies that the stack is to be disabled and ss_sp and ss_size are
  ignored.

  If signals.ss_disable is not set, the stack will be enabled.
 
 If oss is not NULL, the stack state may be either signals.ss_onstack or sig-
  nals.ss_disable. The value signals.ss_onstack indicates that the process
  is currently exe cuting on the alternate stack and that any attempt to
  modify it during execution will fail. The value signals.ss_disable
  indicates that the current signal stack is disabled.

  ss_size specifies the size of the stack.

  The value signals.sigstksz defines the average number of bytes used when
  allocating an alternate stack area.

  The value signals.minsigstksz
  defines the minimum stack size for a signal handler. When processing an
  alternate stack size, your program should include these values in the
  stack requirement to plan for the overhead of the operating system.
 
return value --S
  sigaltstack(2) returns 0 on success and an appropriate negative error
  code in EAX on error.

 errors --
  sigaltstack(2) sets EAX for the following conditions:
  errno.einval ss is not a null pointer the ss_flags member pointed to by
  ss contains flags
  other than signals.ss_disable.
  errno.enomem The size of the alternate stack area is less than
  signals.minsigstksz.
  errno.eperm An attempt was made to modify an active stack.

 see also --
  getcontext(2), sigaction(2), sigsetjmp(3).

----------------------------------------------------------------------------
 48 signal          - install a signal handler
----------------------------------------------------------------------------
  mov  eax,048
  mov  ebx,signum
  mov  ecx,sighandler
  int  80h

  The linux.signal() system call installs a new signal handler for the
  signal with number signum. The sig nal handler is set to sighandler
  which may be a user specified function, or either signals.sig_ign or
  signals.sig_dfl.

  Upon arrival of a signal with number signum the following happens. If
  the corresponding handler is set to signals.sig_ign, then the signal is
  ignored. If the handler is set to signals.sig_dfl, then the default
  action associated to the signal (see signal(7)) occurs. Finally, if the
  handler is set to a function sighandler then first either the handler is
  reset to signals.sig_dfl or an implementation-dependent blocking of the
  signal is per- formed and next sighandler is called with argument signum.
  Using a signal handler function for a signal is called "catching the
  signal". The signals signals.sigkill and signals.sigstop cannot be
  caught or ignored.

 return value --
  The function signal() returns the previous value of the signal handler,
  or signals.sig_err on error.

 see also --
  kill(1), kill(2), killpg(2), pause(2),raise(3), sigaction(2), signal(7),
  sigsetops(3), sigvec(2), alarm(2)

----------------------------------------------------------------------------
 73 sigpending      - Retrieves signals that are pending while blocked
----------------------------------------------------------------------------
  mov  eax,073
  mov  ebx,set
  int  80h

       The sigpending call allows the examination  of  pending  signals  (ones
       which have been raised while blocked).  The signal mask of pending sig-
       nals is stored in set.

----------------------------------------------------------------------------
126 sigprocmask     - Sets up signal masks
----------------------------------------------------------------------------
  mov  eax,126
  mov  ebx,how
  mov  ecx,set
  mov  edx,oldset
  int  80h

       The sigprocmask call is used to change the list  of  currently  blocked
       signals. The behaviour of the call is dependent on the value of how, as
       follows.

        0      SIG_BLOCK
                     The set of blocked signals is the union  of  the  current
                     set and the set argument.

        1      SIG_UNBLOCK
                     The  signals  in  set are removed from the current set of
                     blocked signals.  It is legal to  attempt  to  unblock  a
                     signal which is not blocked.

        2      SIG_SETMASK
                     The set of blocked signals is set to the argument set.

       If  oldset is non-null, the previous value of the signal mask is stored
       in oldset.

RETURN VALUE
       The functions sigaction, sigprocmask, and sigpending return 0  on  suc-
       cess  and -1 on error.  The function sigsuspend always returns -1, nor-
       mally with the error EINTR.


ERRORS
       EINVAL An invalid signal was specified.  This will also be generated if
       (22)   an  attempt is made to change the action for SIGKILL or SIGSTOP,
              which cannot be caught.

       EFAULT act, oldact, set, oldset or mask point to memory which is not  a
       (14)      valid part of the process address space.

       EINTR (4)  System call was interrupted.

----------------------------------------------------------------------------
119 sigreturn       - return from signal handler and cleanup stack frame
----------------------------------------------------------------------------
  mov  eax,119
  mov  ebx,unused
  int  80h

  When the Linux kernel creates the stack frame for a signal handler, a
  call to sigreturn is inserted into the stack frame so that the the
  signal handler will call sigreturn upon return. This inserted call to
  sigreturn cleans up the stack so that the process can restart from where
  it was interrupted by the signal.

 return value --
  sigreturn never returns.

  WARNING
  The sigreturn call is used by the kernel to implement signal handlers.
  It should never be called directly. Better yet, the specific use of the
  __unused argument varies depending on the architecture.

 see also --
  kill(2), signal(2), signal(7)

----------------------------------------------------------------------------
 72 sigsuspend      - temporarily set signal mask
----------------------------------------------------------------------------
  // sigsuspend - Temporarily sets the signal mask (as specified)
  // and then suspends the process pending a signal.
  mov  eax,072
  mov  ebx,mask
  int  80h

       The sigsuspend call  temporarily  replaces  the  signal  mask  for  the
       process  with  that given by mask and then suspends the process until a
       signal is received.


----------------------------------------------------------------------------
 69 ssetmask        - 
----------------------------------------------------------------------------
  mov  eax,069
  mov  ebx,mask
  int  80h

