xref: /netbsd-src/external/bsd/ntp/dist/include/iosignal.h (revision cdfa2a7ef92791ba9db70a584a1d904730e6fb46)
1*cdfa2a7eSchristos /*	$NetBSD: iosignal.h,v 1.5 2020/05/25 20:47:19 christos Exp $	*/
2abb0f93cSkardel 
38585484eSchristos #ifndef IOSIGNAL_H
48585484eSchristos #define IOSIGNAL_H
5abb0f93cSkardel 
6abb0f93cSkardel #include "ntp_refclock.h"
7abb0f93cSkardel 
88585484eSchristos  /*
98585484eSchristos  * Some systems (MOST) define SIGPOLL == SIGIO, others SIGIO == SIGPOLL, and
108585484eSchristos  * a few have separate SIGIO and SIGPOLL signals.  This code checks for the
118585484eSchristos  * SIGIO == SIGPOLL case at compile time.
128585484eSchristos  * Do not define USE_SIGPOLL or USE_SIGIO.
138585484eSchristos  * these are interal only to iosignal.c and ntpd/work_fork.c!
148585484eSchristos  */
158585484eSchristos #if defined(USE_SIGPOLL)
168585484eSchristos # undef USE_SIGPOLL
178585484eSchristos #endif
188585484eSchristos #if defined(USE_SIGIO)
198585484eSchristos # undef USE_SIGIO
208585484eSchristos #endif
218585484eSchristos 
228585484eSchristos /* type of input handler function - only shared between iosignal.c and ntp_io.c */
238585484eSchristos typedef void (input_handler_t)(l_fp *);
248585484eSchristos 
25abb0f93cSkardel #if defined(HAVE_SIGNALED_IO)
268585484eSchristos # if defined(USE_TTY_SIGPOLL) || defined(USE_UDP_SIGPOLL)
278585484eSchristos #  define USE_SIGPOLL
288585484eSchristos # endif
298585484eSchristos 
308585484eSchristos # if !defined(USE_TTY_SIGPOLL) || !defined(USE_UDP_SIGPOLL)
318585484eSchristos #  define USE_SIGIO
328585484eSchristos # endif
338585484eSchristos 
348585484eSchristos # if defined(USE_SIGIO) && defined(USE_SIGPOLL)
358585484eSchristos #  if SIGIO == SIGPOLL
368585484eSchristos #   define USE_SIGIO
378585484eSchristos #   undef USE_SIGPOLL
388585484eSchristos #  endif	/* SIGIO == SIGPOLL */
398585484eSchristos # endif		/* USE_SIGIO && USE_SIGPOLL */
408585484eSchristos 
418585484eSchristos #define	USING_SIGIO()	using_sigio
428585484eSchristos 
438585484eSchristos extern int		using_sigio;
448585484eSchristos 
45abb0f93cSkardel extern void		block_sigio	(void);
46abb0f93cSkardel extern void		unblock_sigio	(void);
47abb0f93cSkardel extern int		init_clock_sig	(struct refclockio *);
48abb0f93cSkardel extern void		init_socket_sig	(int);
498585484eSchristos extern void		set_signal	(input_handler_t *);
50abb0f93cSkardel 
51abb0f93cSkardel # define BLOCKIO()	block_sigio()
52abb0f93cSkardel # define UNBLOCKIO()	unblock_sigio()
53abb0f93cSkardel 
548585484eSchristos #else	/* !HAVE_SIGNALED_IO follows */
558585484eSchristos # define BLOCKIO()	do {} while (0)
568585484eSchristos # define UNBLOCKIO()	do {} while (0)
578585484eSchristos # define USING_SIGIO()	FALSE
58abb0f93cSkardel #endif
598585484eSchristos 
608585484eSchristos #endif	/* IOSIGNAL_H */
61