ftp.nice.ch/pub/next/developer/languages/translator/schemetoc.s.tar.gz#/schemetoc/scrt/signal.h

This is signal.h in view mode; [Download] [Up]

/* SCHEME->C */

/*              Copyright 1989 Digital Equipment Corporation
 *                         All Rights Reserved
 *
 * Permission to use, copy, and modify this software and its documentation is
 * hereby granted only under the following terms and conditions.  Both the
 * above copyright notice and this permission notice must appear in all copies
 * of the software, derivative works or modified versions, and any portions
 * thereof, and both notices must appear in supporting documentation.
 *
 * Users of this software agree to the terms and conditions set forth herein,
 * and hereby grant back to Digital a non-exclusive, unrestricted, royalty-free
 * right and license under any changes, enhancements or extensions made to the
 * core functions of the software, including but not limited to those affording
 * compatibility with other hardware or software environments, but excluding
 * applications which incorporate this software.  Users further agree to use
 * their best efforts to return to Digital any such changes, enhancements or
 * extensions that they make and inform Digital of noteworthy uses of this
 * software.  Correspondence should be provided to Digital at:
 * 
 *                       Director of Licensing
 *                       Western Research Laboratory
 *                       Digital Equipment Corporation
 *                       100 Hamilton Avenue
 *                       Palo Alto, California  94301  
 * 
 * This software may be distributed (but not offered for sale or transferred
 * for compensation) to third parties, provided such third parties agree to
 * abide by the terms and conditions of this notice.  
 * 
 * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
 * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL DIGITAL EQUIPMENT
 * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
 * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 * SOFTWARE.
*/

/* During critical sections in the Scheme system, signals may not be acted
   upon.  As one such critical section is in CONS, a cheap signal masking
   mechanism is required which is implemented as follows.

   A critical section is entered by invoking MUTEXON:
*/

#define MUTEXON  sc_mutex = 1

extern int sc_mutex;	/* Mutual exclusion flag */

/* The code in the critical section is then executed the section is exited by
   invoking MUTEXOFF:
*/

#define MUTEXOFF  if (sc_mutex = sc_pendingsignals)  \
		     sc_sendpendingsignals()

extern int  sc_pendingsignals; 
extern      sc_sendpendingsignals();

/* Signals that are caught by a Scheme->C program enter through the following
   procedure.  If the Scheme system is not in a critical section, then the
   user's signal handler will be directly called.  Otherwise, the signal
   will be defered until the critical section is exited.
*/

extern void  sc_onsignal1();

/* During garbage collection, signals are blocked by calling:

	sc_gcinprogress( 1 )

   at the start of collection, and enabled by calling

	sc_gcinprogress( 0 )

   at the end of collection.
*/

extern	sc_gcinprogress();

/* Arithmetic traps are enabled by the following function. */

extern  sc_mathtraps();

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.