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