static struct uloop_fd_event cur_fds[ULOOP_MAX_EVENTS];
static int cur_fd, cur_nfds;
+static int uloop_run_depth = 0;
int uloop_fd_add(struct uloop_fd *sock, unsigned int flags);
uloop_process_delete(p);
}
+bool uloop_cancelling(void)
+{
+ return uloop_run_depth > 0 && uloop_cancelled;
+}
+
int uloop_run(void)
{
- static int recursive_calls = 0;
struct timeval tv;
/*
* Handlers are only updated for the first call to uloop_run() (and restored
* when this call is done).
*/
- if (!recursive_calls++)
+ if (!uloop_run_depth++)
uloop_setup_signals(true);
uloop_status = 0;
uloop_run_events(uloop_get_next_timeout(&tv));
}
- if (!--recursive_calls)
+ if (!--uloop_run_depth)
uloop_setup_signals(false);
return uloop_status;
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;