/* 
 * machine.h
 *
 * x-kernel v3.3
 *
 * Copyright (c) 1993,1991,1990,1996  Arizona Board of Regents
 *
 * $Revision: 1.2 $
 * $Date: 1997/04/29 22:49:27 $
 */

#ifndef machine_h
#define machine_h

#include <signal.h>

#ifdef __STDC__

typedef int	SignalHandler( void * );

void	cancelSignalHandler( int );
void	init_clock( long );
void	installSignalHandler( int, SignalHandler, void * );
void	clock_ih( void );

#else

typedef int	SignalHandler();

#endif

/*
 * Performance concessions
 */

extern sigset_t sig_mask;
extern int sig_blocked;

static inline void
enable_signals (int unblock)
     /* SIGALRM and SIGIO are unblocked iff unblock == 1 */
{
  if (unblock && sig_blocked) {
    sig_blocked = 0;
    sigprocmask (SIG_UNBLOCK, &sig_mask, NULL);
  }
  else if (unblock == 0 && !sig_blocked) {
    sig_blocked = 1;
    sigprocmask (SIG_BLOCK, &sig_mask, NULL);
  }
}


#endif /* machine_h */
