--- libev/ev.c 2015/12/20 01:31:17 1.479 +++ libev/ev.c 2016/02/18 04:48:05 1.480 @@ -1529,7 +1529,7 @@ #if EV_FEATURE_CODE # define inline_speed ecb_inline #else -# define inline_speed static noinline +# define inline_speed noinline static #endif #define NUMPRI (EV_MAXPRI - EV_MINPRI + 1) @@ -1586,7 +1586,8 @@ #include /* a floor() replacement function, should be independent of ev_tstamp type */ -static ev_tstamp noinline +noinline +static ev_tstamp ev_floor (ev_tstamp v) { /* the choice of shift factor is not terribly important */ @@ -1628,7 +1629,8 @@ # include #endif -static unsigned int noinline ecb_cold +noinline ecb_cold +static unsigned int ev_linux_version (void) { #ifdef __linux @@ -1667,7 +1669,8 @@ /*****************************************************************************/ #if EV_AVOID_STDIO -static void noinline ecb_cold +noinline ecb_cold +static void ev_printerr (const char *msg) { write (STDERR_FILENO, msg, strlen (msg)); @@ -1676,13 +1679,15 @@ static void (*syserr_cb)(const char *msg) EV_THROW; -void ecb_cold +ecb_cold +void ev_set_syserr_cb (void (*cb)(const char *msg) EV_THROW) EV_THROW { syserr_cb = cb; } -static void noinline ecb_cold +noinline ecb_cold +static void ev_syserr (const char *msg) { if (!msg) @@ -1723,7 +1728,8 @@ static void *(*alloc)(void *ptr, long size) EV_THROW = ev_realloc_emul; -void ecb_cold +ecb_cold +void ev_set_allocator (void *(*cb)(void *ptr, long size) EV_THROW) EV_THROW { alloc = cb; @@ -1942,7 +1948,8 @@ return ncur; } -static void * noinline ecb_cold +noinline ecb_cold +static void * array_realloc (int elem, void *base, int *cur, int cnt) { *cur = array_nextsize (elem, *cur, cnt); @@ -1955,7 +1962,7 @@ #define array_needsize(type,base,cur,cnt,init) \ if (expect_false ((cnt) > (cur))) \ { \ - int ecb_unused ocur_ = (cur); \ + ecb_unused int ocur_ = (cur); \ (base) = (type *)array_realloc \ (sizeof (type), (base), &(cur), (cnt)); \ init ((base) + (ocur_), (cur) - ocur_); \ @@ -1977,12 +1984,14 @@ /*****************************************************************************/ /* dummy callback for pending events */ -static void noinline +noinline +static void pendingcb (EV_P_ ev_prepare *w, int revents) { } -void noinline +noinline +void ev_feed_event (EV_P_ void *w, int revents) EV_THROW { W w_ = (W)w; @@ -2122,7 +2131,8 @@ } /* something about the given fd changed */ -inline_size void +inline_size +void fd_change (EV_P_ int fd, int flags) { unsigned char reify = anfds [fd].reify; @@ -2137,7 +2147,7 @@ } /* the given fd is invalid/unusable, so make sure it doesn't hurt us anymore */ -inline_speed void ecb_cold +inline_speed ecb_cold void fd_kill (EV_P_ int fd) { ev_io *w; @@ -2150,7 +2160,7 @@ } /* check whether the given fd is actually valid, for error recovery */ -inline_size int ecb_cold +inline_size ecb_cold int fd_valid (int fd) { #ifdef _WIN32 @@ -2161,7 +2171,8 @@ } /* called on EBADF to verify fds */ -static void noinline ecb_cold +noinline ecb_cold +static void fd_ebadf (EV_P) { int fd; @@ -2173,7 +2184,8 @@ } /* called on ENOMEM in select/poll to kill some fds and retry */ -static void noinline ecb_cold +noinline ecb_cold +static void fd_enomem (EV_P) { int fd; @@ -2187,7 +2199,8 @@ } /* usually called after fork if backend needs to re-arm all fds from scratch */ -static void noinline +noinline +static void fd_rearm_all (EV_P) { int fd; @@ -2378,7 +2391,8 @@ #if EV_SIGNAL_ENABLE || EV_ASYNC_ENABLE -static void noinline ecb_cold +noinline ecb_cold +static void evpipe_init (EV_P) { if (!ev_is_active (&pipe_w)) @@ -2566,7 +2580,8 @@ ev_feed_signal (signum); } -void noinline +noinline +void ev_feed_signal_event (EV_P_ int signum) EV_THROW { WL w; @@ -2693,20 +2708,20 @@ # include "ev_select.c" #endif -int ecb_cold +ecb_cold int ev_version_major (void) EV_THROW { return EV_VERSION_MAJOR; } -int ecb_cold +ecb_cold int ev_version_minor (void) EV_THROW { return EV_VERSION_MINOR; } /* return true if we are running with elevated privileges and should ignore env variables */ -int inline_size ecb_cold +inline_size ecb_cold int enable_secure (void) { #ifdef _WIN32 @@ -2717,7 +2732,8 @@ #endif } -unsigned int ecb_cold +ecb_cold +unsigned int ev_supported_backends (void) EV_THROW { unsigned int flags = 0; @@ -2731,7 +2747,8 @@ return flags; } -unsigned int ecb_cold +ecb_cold +unsigned int ev_recommended_backends (void) EV_THROW { unsigned int flags = ev_supported_backends (); @@ -2753,7 +2770,8 @@ return flags; } -unsigned int ecb_cold +ecb_cold +unsigned int ev_embeddable_backends (void) EV_THROW { int flags = EVBACKEND_EPOLL | EVBACKEND_KQUEUE | EVBACKEND_PORT; @@ -2823,7 +2841,8 @@ #endif /* initialise a loop structure, must be zero-initialised */ -static void noinline ecb_cold +noinline ecb_cold +static void loop_init (EV_P_ unsigned int flags) EV_THROW { if (!backend) @@ -2920,7 +2939,8 @@ } /* free up a loop structure */ -void ecb_cold +ecb_cold +void ev_loop_destroy (EV_P) { int i; @@ -3072,7 +3092,8 @@ #if EV_MULTIPLICITY -struct ev_loop * ecb_cold +ecb_cold +struct ev_loop * ev_loop_new (unsigned int flags) EV_THROW { EV_P = (struct ev_loop *)ev_malloc (sizeof (struct ev_loop)); @@ -3090,7 +3111,8 @@ #endif /* multiplicity */ #if EV_VERIFY -static void noinline ecb_cold +noinline ecb_cold +static void verify_watcher (EV_P_ W w) { assert (("libev: watcher has invalid priority", ABSPRI (w) >= 0 && ABSPRI (w) < NUMPRI)); @@ -3099,7 +3121,8 @@ assert (("libev: pending watcher not on pending queue", pendings [ABSPRI (w)][w->pending - 1].w == w)); } -static void noinline ecb_cold +noinline ecb_cold +static void verify_heap (EV_P_ ANHE *heap, int N) { int i; @@ -3114,7 +3137,8 @@ } } -static void noinline ecb_cold +noinline ecb_cold +static void array_verify (EV_P_ W *ws, int cnt) { while (cnt--) @@ -3213,7 +3237,8 @@ #endif #if EV_MULTIPLICITY -struct ev_loop * ecb_cold +ecb_cold +struct ev_loop * #else int #endif @@ -3271,7 +3296,8 @@ return count; } -void noinline +noinline +void ev_invoke_pending (EV_P) { pendingpri = NUMPRI; @@ -3356,7 +3382,8 @@ #if EV_PERIODIC_ENABLE -static void noinline +noinline +static void periodic_recalc (EV_P_ ev_periodic *w) { ev_tstamp interval = w->interval > MIN_INTERVAL ? w->interval : MIN_INTERVAL; @@ -3424,7 +3451,8 @@ /* simply recalculate all periodics */ /* TODO: maybe ensure that at least one event happens when jumping forward? */ -static void noinline ecb_cold +noinline ecb_cold +static void periodics_reschedule (EV_P) { int i; @@ -3447,7 +3475,8 @@ #endif /* adjust all timers by a given offset */ -static void noinline ecb_cold +noinline ecb_cold +static void timers_reschedule (EV_P_ ev_tstamp adjust) { int i; @@ -3825,7 +3854,8 @@ /*****************************************************************************/ -void noinline +noinline +void ev_io_start (EV_P_ ev_io *w) EV_THROW { int fd = w->fd; @@ -3851,7 +3881,8 @@ EV_FREQUENT_CHECK; } -void noinline +noinline +void ev_io_stop (EV_P_ ev_io *w) EV_THROW { clear_pending (EV_A_ (W)w); @@ -3870,7 +3901,8 @@ EV_FREQUENT_CHECK; } -void noinline +noinline +void ev_timer_start (EV_P_ ev_timer *w) EV_THROW { if (expect_false (ev_is_active (w))) @@ -3894,7 +3926,8 @@ /*assert (("libev: internal timer heap corruption", timers [ev_active (w)] == (WT)w));*/ } -void noinline +noinline +void ev_timer_stop (EV_P_ ev_timer *w) EV_THROW { clear_pending (EV_A_ (W)w); @@ -3924,7 +3957,8 @@ EV_FREQUENT_CHECK; } -void noinline +noinline +void ev_timer_again (EV_P_ ev_timer *w) EV_THROW { EV_FREQUENT_CHECK; @@ -3958,7 +3992,8 @@ } #if EV_PERIODIC_ENABLE -void noinline +noinline +void ev_periodic_start (EV_P_ ev_periodic *w) EV_THROW { if (expect_false (ev_is_active (w))) @@ -3988,7 +4023,8 @@ /*assert (("libev: internal periodic heap corruption", ANHE_w (periodics [ev_active (w)]) == (WT)w));*/ } -void noinline +noinline +void ev_periodic_stop (EV_P_ ev_periodic *w) EV_THROW { clear_pending (EV_A_ (W)w); @@ -4016,7 +4052,8 @@ EV_FREQUENT_CHECK; } -void noinline +noinline +void ev_periodic_again (EV_P_ ev_periodic *w) EV_THROW { /* TODO: use adjustheap and recalculation */ @@ -4031,7 +4068,8 @@ #if EV_SIGNAL_ENABLE -void noinline +noinline +void ev_signal_start (EV_P_ ev_signal *w) EV_THROW { if (expect_false (ev_is_active (w))) @@ -4113,7 +4151,8 @@ EV_FREQUENT_CHECK; } -void noinline +noinline +void ev_signal_stop (EV_P_ ev_signal *w) EV_THROW { clear_pending (EV_A_ (W)w); @@ -4199,14 +4238,15 @@ #define NFS_STAT_INTERVAL 30.1074891 /* for filesystems potentially failing inotify */ #define MIN_STAT_INTERVAL 0.1074891 -static void noinline stat_timer_cb (EV_P_ ev_timer *w_, int revents); +noinline static void stat_timer_cb (EV_P_ ev_timer *w_, int revents); #if EV_USE_INOTIFY /* the * 2 is to allow for alignment padding, which for some reason is >> 8 */ # define EV_INOTIFY_BUFSIZE (sizeof (struct inotify_event) * 2 + NAME_MAX) -static void noinline +noinline +static void infy_add (EV_P_ ev_stat *w) { w->wd = inotify_add_watch (fs_fd, w->path, @@ -4280,7 +4320,8 @@ if (ev_is_active (&w->timer)) ev_unref (EV_A); } -static void noinline +noinline +static void infy_del (EV_P_ ev_stat *w) { int slot; @@ -4297,7 +4338,8 @@ inotify_rm_watch (fs_fd, wd); } -static void noinline +noinline +static void infy_wd (EV_P_ int slot, int wd, struct inotify_event *ev) { if (slot < 0) @@ -4343,7 +4385,8 @@ } } -inline_size void ecb_cold +inline_size ecb_cold +void ev_check_2625 (EV_P) { /* kernels < 2.6.25 are borked @@ -4451,7 +4494,8 @@ w->attr.st_nlink = 1; } -static void noinline +noinline +static void stat_timer_cb (EV_P_ ev_timer *w_, int revents) { ev_stat *w = (ev_stat *)(((char *)w_) - offsetof (ev_stat, timer)); @@ -4671,7 +4715,8 @@ #endif #if EV_EMBED_ENABLE -void noinline +noinline +void ev_embed_sweep (EV_P_ ev_embed *w) EV_THROW { ev_run (w->other, EVRUN_NOWAIT); @@ -4978,7 +5023,8 @@ /*****************************************************************************/ #if EV_WALK_ENABLE -void ecb_cold +ecb_cold +void ev_walk (EV_P_ int types, void (*cb)(EV_P_ int type, void *w)) EV_THROW { int i, j;