1/*	$NetBSD: iosignal.h,v 1.5 2020/05/25 20:47:19 christos Exp $	*/
2
3#ifndef IOSIGNAL_H
4#define IOSIGNAL_H
5
6#include "ntp_refclock.h"
7
8 /*
9 * Some systems (MOST) define SIGPOLL == SIGIO, others SIGIO == SIGPOLL, and
10 * a few have separate SIGIO and SIGPOLL signals.  This code checks for the
11 * SIGIO == SIGPOLL case at compile time.
12 * Do not define USE_SIGPOLL or USE_SIGIO.
13 * these are interal only to iosignal.c and ntpd/work_fork.c!
14 */
15#if defined(USE_SIGPOLL)
16# undef USE_SIGPOLL
17#endif
18#if defined(USE_SIGIO)
19# undef USE_SIGIO
20#endif
21
22/* type of input handler function - only shared between iosignal.c and ntp_io.c */
23typedef void (input_handler_t)(l_fp *);
24
25#if defined(HAVE_SIGNALED_IO)
26# if defined(USE_TTY_SIGPOLL) || defined(USE_UDP_SIGPOLL)
27#  define USE_SIGPOLL
28# endif
29
30# if !defined(USE_TTY_SIGPOLL) || !defined(USE_UDP_SIGPOLL)
31#  define USE_SIGIO
32# endif
33
34# if defined(USE_SIGIO) && defined(USE_SIGPOLL)
35#  if SIGIO == SIGPOLL
36#   define USE_SIGIO
37#   undef USE_SIGPOLL
38#  endif	/* SIGIO == SIGPOLL */
39# endif		/* USE_SIGIO && USE_SIGPOLL */
40
41#define	USING_SIGIO()	using_sigio
42
43extern int		using_sigio;
44
45extern void		block_sigio	(void);
46extern void		unblock_sigio	(void);
47extern int		init_clock_sig	(struct refclockio *);
48extern void		init_socket_sig	(int);
49extern void		set_signal	(input_handler_t *);
50
51# define BLOCKIO()	block_sigio()
52# define UNBLOCKIO()	unblock_sigio()
53
54#else	/* !HAVE_SIGNALED_IO follows */
55# define BLOCKIO()	do {} while (0)
56# define UNBLOCKIO()	do {} while (0)
57# define USING_SIGIO()	FALSE
58#endif
59
60#endif	/* IOSIGNAL_H */
61