int pending; /* private */ \
int priority; /* private */ \
EV_COMMON; /* rw */ \
- void (*cb)(EV_P_ struct type *, int revents); /* private */ /* gets invoked with an eventmask */
+ void (*cb)(EV_P_ struct type *, int revents) /* private */ /* gets invoked with an eventmask */
#define EV_WATCHER_LIST(type) \
EV_WATCHER (type); \
struct ev_signal
{
EV_WATCHER_LIST (ev_signal);
-#if EV_MULTIPLICITY
- struct ev_loop *loop;
-#endif
int signum; /* ro */
};
int rstatus; /* rw, holds the exit status, use the macros from sys/wait.h */
};
+union ev_any_watcher
+{
+ struct ev_watcher w;
+ struct ev_watcher_list wl;
+ struct ev_io io;
+ struct ev_timer timer;
+ struct ev_periodic periodic;
+ struct ev_signal signal;
+ struct ev_idle idle;
+ struct ev_child child;
+ struct ev_prepare prepare;
+ struct ev_check check;
+};
+
#define EVMETHOD_AUTO 0 /* consults environment */
#define EVMETHOD_SELECT 1
#define EVMETHOD_POLL 2
ev_tstamp ev_time (void);
+/* Sets the allocation function to use, works like realloc.
+ * It is used to allocate and free memory.
+ * If it returns zero when memory needs to be allocated, the library might abort
+ * or take some potentially destructive action.
+ * The default is your system realloc function.
+ */
+void ev_set_allocator (void *(*cb)(void *ptr, long size));
+
+/* set the callback function to call on a
+ * retryable syscall error
+ * (such as failed select, poll, epoll_wait)
+ */
+void ev_set_syserr_cb (void (*cb)(const char *msg));
+
# if EV_MULTIPLICITY
/* the default loop is the only one that handles signals and child watchers */
/* you can call this as often as you like */