X-Git-Url: http://git.archive.openwrt.org/?p=project%2Flibubox.git;a=blobdiff_plain;f=uloop.h;h=36084f520e2ac8570967f1c98474874f9fba0af9;hp=8fb890deb76cc35c997b3df73237a51bbcc0439e;hb=bb0c830b2a259b7c5ffa7c309ce9d3004f3c41a1;hpb=77984bd24d0daa1e6ce7836a31c2b500621af99b diff --git a/uloop.h b/uloop.h index 8fb890d..36084f5 100644 --- a/uloop.h +++ b/uloop.h @@ -44,10 +44,17 @@ typedef void (*uloop_process_handler)(struct uloop_process *c, int ret); #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; @@ -55,9 +62,7 @@ struct uloop_fd bool eof; bool error; bool registered; -#ifdef USE_KQUEUE - bool flags; -#endif + uint8_t flags; }; struct uloop_timeout @@ -87,18 +92,24 @@ int uloop_fd_delete(struct uloop_fd *sock); 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_pending(struct uloop_timeout *timeout); +int uloop_timeout_remaining(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