/* File intr.c */

#ifndef	lint
static char rcs_id[] = "$Header: intr.c,v 1.1 88/05/18 16:22:26 ecc Locked $";
#endif	not lint

/*
 * intr.c
 *
 * $Source: /usr0/ecc/nectar/src/cab/sys/RCS/intr.c,v $
 *
 * Interrupt handling.
 */


#include <nectar_sys.h> 
#include <sys/signal.h>

PRIVATE int intr_level = 0;
PRIVATE int intr_mask;


EXPORT void
Intr_Disable()
    BEGIN(Intr_Disable)
	if (intr_level++ == 0)
		intr_mask = sigblock(~0);
	RET;
    END(Intr_Disable)

EXPORT void
Intr_Enable()
    BEGIN(Intr_Enable)
	ASSERT(intr_level > 0);
	if (--intr_level == 0)
		(void) sigsetmask(intr_mask);
	RET;
    END(Intr_Enable)

EXPORT int
Intr_Level()
    BEGIN(Intr_Level)
	RETURN(intr_level);
    END(Intr_Level)
