signal.h revision 266527
110946SSangeeta.Misra@Sun.COM/* 210946SSangeeta.Misra@Sun.COM * Copyright (c) 1998-2001 Proofpoint, Inc. and its suppliers. 310946SSangeeta.Misra@Sun.COM * All rights reserved. 410946SSangeeta.Misra@Sun.COM * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved. 510946SSangeeta.Misra@Sun.COM * Copyright (c) 1988, 1993 610946SSangeeta.Misra@Sun.COM * The Regents of the University of California. All rights reserved. 710946SSangeeta.Misra@Sun.COM * 810946SSangeeta.Misra@Sun.COM * By using this file, you agree to the terms and conditions set 910946SSangeeta.Misra@Sun.COM * forth in the LICENSE file which can be found at the top level of 1010946SSangeeta.Misra@Sun.COM * the sendmail distribution. 1110946SSangeeta.Misra@Sun.COM * 1210946SSangeeta.Misra@Sun.COM * $Id: signal.h,v 1.17 2013-11-22 20:51:31 ca Exp $ 1310946SSangeeta.Misra@Sun.COM */ 1410946SSangeeta.Misra@Sun.COM 1510946SSangeeta.Misra@Sun.COM/* 1610946SSangeeta.Misra@Sun.COM** SIGNAL.H -- libsm (and sendmail) signal facilities 1710946SSangeeta.Misra@Sun.COM** Extracted from sendmail/conf.h and focusing 1810946SSangeeta.Misra@Sun.COM** on signal configuration. 1910946SSangeeta.Misra@Sun.COM*/ 2010946SSangeeta.Misra@Sun.COM 2110946SSangeeta.Misra@Sun.COM#ifndef SM_SIGNAL_H 2210946SSangeeta.Misra@Sun.COM#define SM_SIGNAL_H 1 2310946SSangeeta.Misra@Sun.COM 2410946SSangeeta.Misra@Sun.COM#include <sys/types.h> 2510946SSangeeta.Misra@Sun.COM#include <limits.h> 2610946SSangeeta.Misra@Sun.COM#include <signal.h> 2710946SSangeeta.Misra@Sun.COM#include <sm/cdefs.h> 2810946SSangeeta.Misra@Sun.COM#include <sm/conf.h> 2910946SSangeeta.Misra@Sun.COM 3010946SSangeeta.Misra@Sun.COM/* 3110946SSangeeta.Misra@Sun.COM** Critical signal sections 3210946SSangeeta.Misra@Sun.COM*/ 3310946SSangeeta.Misra@Sun.COM 3410946SSangeeta.Misra@Sun.COM#define PEND_SIGHUP 0x0001 3510946SSangeeta.Misra@Sun.COM#define PEND_SIGINT 0x0002 3610946SSangeeta.Misra@Sun.COM#define PEND_SIGTERM 0x0004 3710946SSangeeta.Misra@Sun.COM#define PEND_SIGUSR1 0x0008 3810946SSangeeta.Misra@Sun.COM 3910946SSangeeta.Misra@Sun.COM#define ENTER_CRITICAL() InCriticalSection++ 4010946SSangeeta.Misra@Sun.COM 4110946SSangeeta.Misra@Sun.COM#define LEAVE_CRITICAL() \ 4210946SSangeeta.Misra@Sun.COMdo \ 4310946SSangeeta.Misra@Sun.COM{ \ 4410946SSangeeta.Misra@Sun.COM if (InCriticalSection > 0) \ 4510946SSangeeta.Misra@Sun.COM InCriticalSection--; \ 4610946SSangeeta.Misra@Sun.COM} while (0) 4710946SSangeeta.Misra@Sun.COM 4810946SSangeeta.Misra@Sun.COM#define CHECK_CRITICAL(sig) \ 4910946SSangeeta.Misra@Sun.COMdo \ 5010946SSangeeta.Misra@Sun.COM{ \ 5110946SSangeeta.Misra@Sun.COM if (InCriticalSection > 0 && (sig) != 0) \ 5210946SSangeeta.Misra@Sun.COM { \ 5310946SSangeeta.Misra@Sun.COM pend_signal((sig)); \ 5410946SSangeeta.Misra@Sun.COM return SIGFUNC_RETURN; \ 5510946SSangeeta.Misra@Sun.COM } \ 5610946SSangeeta.Misra@Sun.COM} while (0) 5710946SSangeeta.Misra@Sun.COM 5810946SSangeeta.Misra@Sun.COM/* variables */ 5910946SSangeeta.Misra@Sun.COMextern unsigned int volatile InCriticalSection; /* >0 if in critical section */ 6010946SSangeeta.Misra@Sun.COMextern int volatile PendingSignal; /* pending signal to resend */ 6110946SSangeeta.Misra@Sun.COM 6210946SSangeeta.Misra@Sun.COM/* functions */ 6310946SSangeeta.Misra@Sun.COMextern void pend_signal __P((int)); 6410946SSangeeta.Misra@Sun.COM 6510946SSangeeta.Misra@Sun.COM/* reset signal in case System V semantics */ 6610946SSangeeta.Misra@Sun.COM#ifdef SYS5SIGNALS 6710946SSangeeta.Misra@Sun.COM# define FIX_SYSV_SIGNAL(sig, handler) \ 6810946SSangeeta.Misra@Sun.COM{ \ 6910946SSangeeta.Misra@Sun.COM if ((sig) != 0) \ 7010946SSangeeta.Misra@Sun.COM (void) sm_signal((sig), (handler)); \ 7110946SSangeeta.Misra@Sun.COM} 7210946SSangeeta.Misra@Sun.COM#else /* SYS5SIGNALS */ 7310946SSangeeta.Misra@Sun.COM# define FIX_SYSV_SIGNAL(sig, handler) { /* EMPTY */ } 7410946SSangeeta.Misra@Sun.COM#endif /* SYS5SIGNALS */ 7510946SSangeeta.Misra@Sun.COM 7610946SSangeeta.Misra@Sun.COMextern void sm_allsignals __P((bool)); 7710946SSangeeta.Misra@Sun.COMextern int sm_blocksignal __P((int)); 7810946SSangeeta.Misra@Sun.COMextern int sm_releasesignal __P((int)); 7910946SSangeeta.Misra@Sun.COMextern sigfunc_t sm_signal __P((int, sigfunc_t)); 8010946SSangeeta.Misra@Sun.COMextern SIGFUNC_DECL sm_signal_noop __P((int)); 8110946SSangeeta.Misra@Sun.COM#endif /* SM_SIGNAL_H */ 8210946SSangeeta.Misra@Sun.COM