+#include "splay_tree.h"
+
+#define IO_READ 1
+#define IO_WRITE 2
+
+typedef void (*io_cb_t)(void *data, int flags);
+typedef void (*timeout_cb_t)(void *data);
+typedef void (*signal_cb_t)(void *data);
+
+typedef struct io_t {
+ int fd;
+ int flags;
+ io_cb_t cb;
+ void *data;
+ struct splay_node_t node;
+} io_t;
+
+typedef struct timeout_t {
+ struct timeval tv;
+ timeout_cb_t cb;
+ void *data;
+ struct splay_node_t node;
+} timeout_t;
+
+typedef struct signal_t {
+ int signum;
+ signal_cb_t cb;
+ void *data;
+ struct splay_node_t node;
+} signal_t;
+
+extern struct timeval now;