summaryrefslogtreecommitdiffstats
path: root/lib/qpselect.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/qpselect.h')
-rw-r--r--lib/qpselect.h33
1 files changed, 26 insertions, 7 deletions
diff --git a/lib/qpselect.h b/lib/qpselect.h
index 8901ea36..fc9037ce 100644
--- a/lib/qpselect.h
+++ b/lib/qpselect.h
@@ -25,14 +25,11 @@
#include <sys/select.h>
#include <errno.h>
+#include "misc.h"
#include "zassert.h"
#include "qtime.h"
#include "vector.h"
-#ifndef Inline
-#define Inline static inline
-#endif
-
/*==============================================================================
* Quagga pselect -- qps_xxxx
*
@@ -143,8 +140,7 @@ struct qps_selection
qps_mnum_t pend_mnum ; /* error/read/write mode pending (if any) */
int pend_fd ; /* fd pending (if any) */
- int signum ; /* signal that sigmask is enabling -- 0 => none */
- sigset_t sigmask ; /* sigmask to use for duration of pselect */
+ const sigset_t* sigmask ; /* sigmask to use for duration of pselect */
} ;
struct qps_file
@@ -184,7 +180,7 @@ qps_selection_ream(qps_selection qps, int free_structure) ;
#define qps_selection_ream_keep(qps) qps_selection_ream(qps, 0)
extern void
-qps_set_signal(qps_selection qps, int signum, sigset_t sigmask) ;
+qps_set_signal(qps_selection qps, const sigset_t* sigmask) ;
extern int
qps_pselect(qps_selection qps, qtime_mono_t timeout) ;
@@ -238,4 +234,27 @@ qps_set_file_info(qps_file qf, void* info)
qf->file_info = info ;
} ;
+/*==============================================================================
+ * Miniature pselect
+ *
+ */
+struct qps_mini
+{
+ fd_full_set sets ; /* bit vectors for pselect enabled stuff */
+ int fd_last ; /* highest numbered fd; -1 => none at all */
+
+ qtime_t interval ;
+ qtime_mono_t end_time ;
+} ;
+
+typedef struct qps_mini qps_mini_t[1] ;
+typedef struct qps_mini* qps_mini ;
+
+extern qps_mini qps_mini_set(qps_mini qm, int fd, qps_mnum_t mode,
+ uint timeout) ;
+extern qps_mini qps_mini_add(qps_mini qm, int fd, qps_mnum_t mode) ;
+extern int qps_mini_wait(qps_mini qm, const sigset_t* sigmask, bool signal) ;
+
+extern uint qps_mini_timeout_debug ;
+
#endif /* _ZEBRA_QPSELECT_H */