home *** CD-ROM | disk | FTP | other *** search
/ MACD 4 / MACD4.iso / Emulatory / AROS / exec / setsignal.c < prev    next >
Encoding:
C/C++ Source or Header  |  1978-03-06  |  1.6 KB  |  83 lines

  1. /*
  2.     (C) 1995-96 AROS - The Amiga Replacement OS
  3.     $Id: setsignal.c,v 1.5 1996/10/24 15:50:57 aros Exp $
  4.     $Log: setsignal.c,v $
  5.     Revision 1.5  1996/10/24 15:50:57  aros
  6.     Use the official AROS macros over the __AROS versions.
  7.  
  8.     Revision 1.4  1996/08/13 13:56:08  digulla
  9.     Replaced AROS_LA by AROS_LHA
  10.     Replaced some AROS_LH*I by AROS_LH*
  11.     Sorted and added includes
  12.  
  13.     Revision 1.3  1996/08/01 17:41:19  digulla
  14.     Added standard header for all files
  15.  
  16.     Desc:
  17.     Lang: english
  18. */
  19. #include <exec/execbase.h>
  20. #include <aros/libcall.h>
  21.  
  22. /*****************************************************************************
  23.  
  24.     NAME */
  25.     #include <clib/exec_protos.h>
  26.  
  27.     AROS_LH2(ULONG, SetSignal,
  28.  
  29. /*  SYNOPSIS */
  30.     AROS_LHA(ULONG, newSignals, D0),
  31.     AROS_LHA(ULONG, signalSet,  D1),
  32.  
  33. /*  LOCATION */
  34.     struct ExecBase *, SysBase, 51, Exec)
  35.  
  36. /*  FUNCTION
  37.     Change or read the set of signals sent to the current task.
  38.  
  39.     INPUTS
  40.     newSignals - New values for the signals.
  41.     signalSet  - Mask of signals affected by 'newSignals'.
  42.  
  43.     RESULT
  44.     Old signal set.
  45.  
  46.     NOTES
  47.  
  48.     EXAMPLE
  49.  
  50.     BUGS
  51.  
  52.     SEE ALSO
  53.     AllocSignal(), FreeSignal(), Wait(), Signal(), SetExcept()
  54.  
  55.     INTERNALS
  56.  
  57.     HISTORY
  58.  
  59. ******************************************************************************/
  60. {
  61.     AROS_LIBFUNC_INIT
  62.  
  63.     ULONG *sig;
  64.     ULONG old;
  65.  
  66.     /* Protect the signal mask against access by other tasks. */
  67.     Disable();
  68.  
  69.     /* Get address */
  70.     sig=&SysBase->ThisTask->tc_SigRecvd;
  71.  
  72.     /* Change only the bits in 'mask' */
  73.     old=*sig;
  74.     *sig=(old&~signalSet)|(newSignals&signalSet);
  75.  
  76.     Enable();
  77.  
  78.     return old;
  79.     AROS_LIBFUNC_EXIT
  80. }
  81.  
  82.  
  83.