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