#define ULOOP_WRITE (1 << 1)
#define ULOOP_EDGE_TRIGGER (1 << 2)
#define ULOOP_BLOCKING (1 << 3)
+
+#define ULOOP_EVENT_MASK (ULOOP_READ | ULOOP_WRITE)
+
+/* internal flags */
+#define ULOOP_EVENT_BUFFERED (1 << 4)
#ifdef USE_KQUEUE
-#define ULOOP_EDGE_DEFER (1 << 4)
+#define ULOOP_EDGE_DEFER (1 << 5)
#endif
+#define ULOOP_ERROR_CB (1 << 6)
+
struct uloop_fd
{
uloop_fd_handler cb;
int uloop_timeout_add(struct uloop_timeout *timeout);
int uloop_timeout_set(struct uloop_timeout *timeout, int msecs);
int uloop_timeout_cancel(struct uloop_timeout *timeout);
-int uloop_timeout_remaining(struct uloop_timeout *timeout);
+int uloop_timeout_remaining(struct uloop_timeout *timeout) __attribute__((deprecated("use uloop_timeout_remaining64")));
+int64_t uloop_timeout_remaining64(struct uloop_timeout *timeout);
int uloop_process_add(struct uloop_process *p);
int uloop_process_delete(struct uloop_process *p);
+bool uloop_cancelling(void);
+
static inline void uloop_end(void)
{
uloop_cancelled = true;
}
int uloop_init(void);
-void uloop_run(void);
+int uloop_run_timeout(int timeout);
+static inline int uloop_run(void)
+{
+ return uloop_run_timeout(-1);
+}
void uloop_done(void);
#endif