Branch Coverage

libev/ev.c
Criterion Covered Total %
branch 282 672 41.9


line true false branch
1954 0 6 if (uname (&buf))
1957 18 6 for (i = 3+1; --i; )
1963 18 18 if (*p >= '0' && *p <= '9')
18 0 if (*p >= '0' && *p <= '9')
2005 0 0 if (!msg)
2008 0 0 if (syserr_cb)
2034 54 46 if (size)
2055 46 54 if (!ptr && size)
0 46 if (!ptr && size)
2195 45 0 if (ecb_expect_true (have_monotonic))
2217 0 0 if (delay > EV_TS_CONST (0.))
2253 16 45 while (cnt > ncur);
2256 0 45 if (elem * ncur > MALLOC_ROUND - sizeof (void *) * 4)
2318 0 34 if (ecb_expect_false (w_->pending))
2323 15 19 array_needsize (ANPENDING, pendings [pri], pendingmax [pri], w_->pending, array_needsize_noinit);
2334 3 2 array_needsize (W, rfeeds, rfeedmax, rfeedcnt + 1, array_needsize_noinit);
2343 2 3 while (rfeedcnt);
2351 5 5 for (i = 0; i < eventcnt; ++i)
2363 1 1 for (w = (ev_io *)anfd->head; w; w = (ev_io *)((WL)w)->next)
2367 1 0 if (ev)
2379 1 0 if (ecb_expect_true (!anfd->reify))
2386 0 0 if (fd >= 0 && fd < anfdmax)
0 0 if (fd >= 0 && fd < anfdmax)
2434 8 19 for (i = 0; i < changecnt; ++i)
2449 8 8 for (w = (ev_io *)anfd->head; w; w = (ev_io *)((WL)w)->next)
2452 8 0 if (o_events != anfd->events)
2456 8 0 if (o_reify & EV__IOFDSET)
2464 0 19 if (ecb_expect_false (fdchangecnt != changecnt))
2478 8 0 if (ecb_expect_true (!reify))
2481 7 1 array_needsize (int, fdchanges, fdchangemax, fdchangecnt, array_needsize_noinit);
2492 0 0 while ((w = (ev_io *)anfds [fd].head))
2517 0 0 for (fd = 0; fd < anfdmax; ++fd)
2518 0 0 if (anfds [fd].events)
2519 0 0 if (!fd_valid (fd) && errno == EBADF)
0 0 if (!fd_valid (fd) && errno == EBADF)
2530 0 0 for (fd = anfdmax; fd--; )
2531 0 0 if (anfds [fd].events)
2545 0 0 for (fd = 0; fd < anfdmax; ++fd)
2546 0 0 if (anfds [fd].events)
2603 0 6 if (ecb_expect_true (pos + DHEAP - 1 < E))
2606 0 0 if ( minat > ANHE_at (pos [1])) (minpos = pos + 1), (minat = ANHE_at (*minpos));
2607 0 0 if ( minat > ANHE_at (pos [2])) (minpos = pos + 2), (minat = ANHE_at (*minpos));
2608 0 0 if ( minat > ANHE_at (pos [3])) (minpos = pos + 3), (minat = ANHE_at (*minpos));
2610 3 3 else if (pos < E)
2613 0 3 if (pos + 1 < E && minat > ANHE_at (pos [1])) (minpos = pos + 1), (minat = ANHE_at (*minpos));
0 0 if (pos + 1 < E && minat > ANHE_at (pos [1])) (minpos = pos + 1), (minat = ANHE_at (*minpos));
2614 0 3 if (pos + 2 < E && minat > ANHE_at (pos [2])) (minpos = pos + 2), (minat = ANHE_at (*minpos));
0 0 if (pos + 2 < E && minat > ANHE_at (pos [2])) (minpos = pos + 2), (minat = ANHE_at (*minpos));
2615 0 3 if (pos + 3 < E && minat > ANHE_at (pos [3])) (minpos = pos + 3), (minat = ANHE_at (*minpos));
0 0 if (pos + 3 < E && minat > ANHE_at (pos [3])) (minpos = pos + 3), (minat = ANHE_at (*minpos));
2620 2 1 if (ANHE_at (he) <= minat)
2679 6 2 if (UPHEAP_DONE (p, k) || ANHE_at (heap [p]) <= ANHE_at (he))
0 6 if (UPHEAP_DONE (p, k) || ANHE_at (heap [p]) <= ANHE_at (he))
2695 0 4 if (k > HEAP0 && ANHE_at (heap [k]) <= ANHE_at (heap [HPARENT (k)]))
0 0 if (k > HEAP0 && ANHE_at (heap [k]) <= ANHE_at (heap [HPARENT (k)]))
2709 0 0 for (i = 0; i < N; ++i)
2735 7 11 if (!ev_is_active (&pipe_w))
2742 0 7 if (fds [1] < 0 && errno == EINVAL)
0 0 if (fds [1] < 0 && errno == EINVAL)
2745 0 7 if (fds [1] < 0)
2748 0 0 while (pipe (fds))
2756 7 0 if (evpipe [1] < 0)
2771 7 0 ev_io_set (&pipe_w, evpipe [0] < 0 ? evpipe [1] : evpipe [0], EV_READ);
2782 4 10 if (ecb_expect_true (*flag))
2792 0 10 if (pipe_write_wanted)
2802 0 0 if (evpipe [0] < 0)
2832 0 10 if (revents & EV_READ)
2835 0 0 if (evpipe [0] < 0)
2862 4 6 if (sig_pending)
2868 256 4 for (i = EV_NSIG - 1; i--; )
2869 5 251 if (ecb_expect_false (signals [i].pending))
2875 6 4 if (async_pending)
2881 18 6 for (i = asynccnt; i--; )
2882 6 12 if (asyncs [i]->sent)
2902 0 4 if (!EV_A)
2926 5 0 if (ecb_expect_false (signum <= 0 || signum >= EV_NSIG))
0 5 if (ecb_expect_false (signum <= 0 || signum >= EV_NSIG))
2935 1 4 if (ecb_expect_false (signals [signum].loop != EV_A))
2942 4 4 for (w = signals [signum].head; w; w = w->next)
2957 0 0 for (sip = si; (char *)sip < (char *)si + res; ++sip)
2960 0 0 if (res < (ssize_t)sizeof (si))
2984 0 0 int traced = WIFSTOPPED (status) || WIFCONTINUED (status);
0 0 int traced = WIFSTOPPED (status) || WIFCONTINUED (status);
2986 0 0 for (w = (ev_child *)childs [chain & ((EV_PID_HASHSIZE) - 1)]; w; w = (ev_child *)((WL)w)->next)
2988 0 0 if ((w->pid == pid || !w->pid)
0 0 if ((w->pid == pid || !w->pid)
2989 0 0 && (!traced || (w->flags & 1)))
0 0 && (!traced || (w->flags & 1)))
3010 0 0 if (0 >= (pid = waitpid (-1, &status, WNOHANG | WUNTRACED | WCONTINUED)))
3011 0 0 if (!WCONTINUED
3013 0 0 || 0 >= (pid = waitpid (-1, &status, WNOHANG | WUNTRACED)))
3125 7 0 || getgid () != getegid ();
0 7 || getgid () != getegid ();
3185 0 5 if (ev_linux_version () < 0x020620) /* disable it on linux < 2.6.32 */
3255 7 0 if (!backend)
3270 5 2 if (!have_monotonic)
3274 5 0 if (!clock_gettime (CLOCK_MONOTONIC, &ts))
3281 0 7 if (flags & EVFLAG_FORKCHECK)
3285 7 0 if (!(flags & EVFLAG_NOENV)
3286 7 0 && !enable_secure ()
3287 0 7 && getenv ("LIBEV_FLAGS"))
3311 0 7 fs_fd = flags & EVFLAG_NOINOTIFY ? -1 : -2;
3314 0 7 sigfd = flags & EVFLAG_SIGNALFD ? -2 : -1;
3320 7 0 if (!(flags & EVBACKEND_MASK))
3336 7 0 if (!backend && (flags & EVBACKEND_LINUXAIO)) backend = linuxaio_init (EV_A_ flags);
0 7 if (!backend && (flags & EVBACKEND_LINUXAIO)) backend = linuxaio_init (EV_A_ flags);
3339 7 0 if (!backend && (flags & EVBACKEND_EPOLL )) backend = epoll_init (EV_A_ flags);
7 0 if (!backend && (flags & EVBACKEND_EPOLL )) backend = epoll_init (EV_A_ flags);
3342 0 7 if (!backend && (flags & EVBACKEND_POLL )) backend = poll_init (EV_A_ flags);
0 0 if (!backend && (flags & EVBACKEND_POLL )) backend = poll_init (EV_A_ flags);
3345 0 7 if (!backend && (flags & EVBACKEND_SELECT )) backend = select_init (EV_A_ flags);
0 0 if (!backend && (flags & EVBACKEND_SELECT )) backend = select_init (EV_A_ flags);
3366 0 2 if (!EV_A)
3372 0 2 if (ecb_expect_false (cleanupcnt))
3380 0 2 if (ev_is_default_loop (EV_A) && ev_is_active (&childev))
0 0 if (ev_is_default_loop (EV_A) && ev_is_active (&childev))
3387 2 0 if (ev_is_active (&pipe_w))
3392 0 2 if (evpipe [0] >= 0) EV_WIN32_CLOSE_FD (evpipe [0]);
3393 2 0 if (evpipe [1] >= 0) EV_WIN32_CLOSE_FD (evpipe [1]);
3397 0 2 if (ev_is_active (&sigfd_w))
3407 0 2 if (fs_fd >= 0)
3411 2 0 if (backend_fd >= 0)
3427 0 2 if (backend == EVBACKEND_LINUXAIO) linuxaio_destroy (EV_A);
3430 2 0 if (backend == EVBACKEND_EPOLL ) epoll_destroy (EV_A);
3433 0 2 if (backend == EVBACKEND_POLL ) poll_destroy (EV_A);
3436 0 2 if (backend == EVBACKEND_SELECT ) select_destroy (EV_A);
3439 10 2 for (i = NUMPRI; i--; )
3471 0 2 if (ev_is_default_loop (EV_A))
3497 0 0 if (backend == EVBACKEND_LINUXAIO) linuxaio_fork (EV_A);
3500 0 0 if (backend == EVBACKEND_EPOLL ) epoll_fork (EV_A);
3506 0 0 if (postfork != 2)
3528 0 0 if (ev_is_active (&pipe_w))
3535 0 0 if (evpipe [0] >= 0)
3559 2 0 if (ev_backend (EV_A))
3585 0 0 for (i = HEAP0; i < N + HEAP0; ++i)
3599 0 0 while (cnt--)
3618 0 0 for (i = 0; i < fdchangecnt; ++i)
3622 0 0 for (i = 0; i < anfdmax; ++i)
3626 0 0 for (w = w2 = anfds [i].head; w; w = w->next)
3630 0 0 if (j++ & 1)
3649 0 0 for (i = NUMPRI; i--; )
3702 5 0 if (!ev_default_loop_ptr)
3712 5 0 if (ev_backend (EV_A))
3748 0 0 for (pri = NUMPRI; pri--; )
3765 34 150 while (pendingcnt [pendingpri])
3774 120 30 while (pendingpri);
3783 5 14 if (ecb_expect_false (idleall))
3787 13 0 for (pri = NUMPRI; pri--; )
3789 0 13 if (pendingcnt [pri])
3792 5 8 if (idlecnt [pri])
3808 4 15 if (timercnt && ANHE_at (timers [HEAP0]) < mn_now)
3 1 if (timercnt && ANHE_at (timers [HEAP0]) < mn_now)
3817 1 4 if (w->repeat)
3820 0 1 if (ev_at (w) < mn_now)
3834 4 1 while (timercnt && ANHE_at (timers [HEAP0]) < mn_now);
2 2 while (timercnt && ANHE_at (timers [HEAP0]) < mn_now);
3846 0 0 ev_tstamp interval = w->interval > MIN_INTERVAL ? w->interval : MIN_INTERVAL;
3850 0 0 while (at <= ev_rt_now)
3855 0 0 if (ecb_expect_false (nat == at))
3873 0 19 while (periodiccnt && ANHE_at (periodics [HEAP0]) < ev_rt_now)
0 0 while (periodiccnt && ANHE_at (periodics [HEAP0]) < ev_rt_now)
3882 0 0 if (w->reschedule_cb)
3891 0 0 else if (w->interval)
3903 0 0 while (periodiccnt && ANHE_at (periodics [HEAP0]) < ev_rt_now);
0 0 while (periodiccnt && ANHE_at (periodics [HEAP0]) < ev_rt_now);
3918 0 0 for (i = HEAP0; i < periodiccnt + HEAP0; ++i)
3922 0 0 if (w->reschedule_cb)
3924 0 0 else if (w->interval)
3941 0 0 for (i = 0; i < timercnt; ++i)
3955 38 0 if (ecb_expect_true (have_monotonic))
3964 38 0 if (ecb_expect_true (mn_now - now_floor < EV_TS_CONST (MIN_TIMEJUMP * .5)))
3981 0 0 for (i = 4; --i; )
3988 0 0 if (ecb_expect_true ((diff < EV_TS_CONST (0.) ? -diff : diff) < EV_TS_CONST (MIN_TIMEJUMP)))
0 0 if (ecb_expect_true ((diff < EV_TS_CONST (0.) ? -diff : diff) < EV_TS_CONST (MIN_TIMEJUMP)))
4007 0 0 if (ecb_expect_false (mn_now > ev_rt_now || ev_rt_now > mn_now + max_block + EV_TS_CONST (MIN_TIMEJUMP)))
0 0 if (ecb_expect_false (mn_now > ev_rt_now || ev_rt_now > mn_now + max_block + EV_TS_CONST (MIN_TIMEJUMP)))
4040 0 19 if (ecb_expect_false (curpid)) /* penalise the forking check even more */
4041 0 0 if (ecb_expect_false (getpid () != curpid))
4050 0 19 if (ecb_expect_false (postfork))
4051 0 0 if (forkcnt)
4060 0 19 if (ecb_expect_false (preparecnt))
4067 0 19 if (ecb_expect_false (loop_done))
4071 0 19 if (ecb_expect_false (postfork))
4093 17 2 if (ecb_expect_true (!(flags & EVRUN_NOWAIT || idleall || !activecnt || pipe_write_skipped)))
12 5 if (ecb_expect_true (!(flags & EVRUN_NOWAIT || idleall || !activecnt || pipe_write_skipped)))
12 7 if (ecb_expect_true (!(flags & EVRUN_NOWAIT || idleall || !activecnt || pipe_write_skipped)))
11 1 if (ecb_expect_true (!(flags & EVRUN_NOWAIT || idleall || !activecnt || pipe_write_skipped)))
11 8 if (ecb_expect_true (!(flags & EVRUN_NOWAIT || idleall || !activecnt || pipe_write_skipped)))
3 8 if (ecb_expect_true (!(flags & EVRUN_NOWAIT || idleall || !activecnt || pipe_write_skipped)))
4109 3 0 if (timercnt)
4112 3 0 if (waittime > to) waittime = to;
4116 0 3 if (periodiccnt)
4119 0 0 if (waittime > to) waittime = to;
4124 0 3 if (ecb_expect_false (waittime < timeout_blocktime))
4132 0 3 if (ecb_expect_false (waittime < backend_mintime))
4135 0 0 : backend_mintime;
4138 0 3 if (ecb_expect_false (io_blocktime))
4142 0 0 if (sleeptime > waittime - backend_mintime)
4145 0 0 if (ecb_expect_true (sleeptime > EV_TS_CONST (0.)))
4163 10 9 if (pipe_write_skipped)
4186 0 19 if (ecb_expect_false (checkcnt))
4192 15 4 while (ecb_expect_true (
11 4 while (ecb_expect_true (
11 8 while (ecb_expect_true (
8 3 while (ecb_expect_true (
4198 4 7 if (loop_done == EVBREAK_ONE)
4264 15 0 while (*head)
4266 12 3 if (ecb_expect_true (*head == elem))
4280 1 47 if (w->pending)
4293 1 0 if (ecb_expect_true (pending))
4336 0 8 if (ecb_expect_false (ev_is_active (w)))
4348 7 1 array_needsize (ANFD, anfds, anfdmax, fd + 1, array_needsize_zerofill);
4365 0 0 if (ecb_expect_false (!ev_is_active (w)))
4387 0 8 if (ecb_expect_false (ev_is_active (w)))
4398 4 4 array_needsize (ANHE, timers, timermax, ev_active (w) + 1, array_needsize_noinit);
4413 4 8 if (ecb_expect_false (!ev_is_active (w)))
4425 3 5 if (ecb_expect_true (active < timercnt + HEAP0))
4447 1 1 if (ev_is_active (w))
4449 1 0 if (w->repeat)
4458 1 0 else if (w->repeat)
4470 0 0 return ev_at (w) - (ev_is_active (w) ? mn_now : EV_TS_CONST (0.));
4478 0 0 if (ecb_expect_false (ev_is_active (w)))
4486 0 0 if (w->reschedule_cb)
4488 0 0 else if (w->interval)
4500 0 0 array_needsize (ANHE, periodics, periodicmax, ev_active (w) + 1, array_needsize_noinit);
4515 0 0 if (ecb_expect_false (!ev_is_active (w)))
4527 0 0 if (ecb_expect_true (active < periodiccnt + HEAP0))
4559 0 15 if (ecb_expect_false (ev_is_active (w)))
4575 0 15 if (sigfd == -2)
4578 0 0 if (sigfd < 0 && errno == EINVAL)
0 0 if (sigfd < 0 && errno == EINVAL)
4581 0 0 if (sigfd >= 0)
4594 0 15 if (sigfd >= 0)
4607 12 3 if (!((WL)w)->next)
4609 12 0 if (sigfd < 0) /*TODO*/
4626 0 12 if (origflags & EVFLAG_NOSIGMASK)
4643 2 10 if (ecb_expect_false (!ev_is_active (w)))
4651 7 3 if (!signals [w->signum - 1].head)
4657 0 7 if (sigfd >= 0)
4686 0 0 if (ecb_expect_false (ev_is_active (w)))
4701 0 0 if (ecb_expect_false (!ev_is_active (w)))
4741 1 1 if (w->wd >= 0)
4749 0 1 if (!fs_2625)
4750 0 0 w->timer.repeat = w->interval ? w->interval : DEF_STAT_INTERVAL;
4751 1 0 else if (!statfs (w->path, &sfs)
4752 1 0 && (sfs.f_type == 0x1373 /* devfs */
4753 1 0 || sfs.f_type == 0x4006 /* fat */
4754 1 0 || sfs.f_type == 0x4d44 /* msdos */
4755 1 0 || sfs.f_type == 0xEF53 /* ext2/3 */
4756 1 0 || sfs.f_type == 0x72b6 /* jffs2 */
4757 1 0 || sfs.f_type == 0x858458f6 /* ramfs */
4758 1 0 || sfs.f_type == 0x5346544e /* ntfs */
4759 1 0 || sfs.f_type == 0x3153464a /* jfs */
4760 1 0 || sfs.f_type == 0x9123683e /* btrfs */
4761 1 0 || sfs.f_type == 0x52654973 /* reiser3 */
4762 1 0 || sfs.f_type == 0x01021994 /* tmpfs */
4763 0 1 || sfs.f_type == 0x58465342 /* xfs */))
4766 1 0 w->timer.repeat = w->interval ? w->interval : NFS_STAT_INTERVAL; /* remote, use reduced frequency */
4771 1 0 w->timer.repeat = w->interval ? w->interval : DEF_STAT_INTERVAL;
4776 0 1 if ((errno == ENOENT || errno == EACCES) && strlen (w->path) < 4096)
0 0 if ((errno == ENOENT || errno == EACCES) && strlen (w->path) < 4096)
1 0 if ((errno == ENOENT || errno == EACCES) && strlen (w->path) < 4096)
4784 0 1 | (errno == EACCES ? IN_ATTRIB : IN_CREATE | IN_MOVED_TO);
4788 1 0 if (!pend || pend == path)
1 0 if (!pend || pend == path)
4794 0 1 while (w->wd < 0 && (errno == ENOENT || errno == EACCES));
0 0 while (w->wd < 0 && (errno == ENOENT || errno == EACCES));
0 0 while (w->wd < 0 && (errno == ENOENT || errno == EACCES));
4798 2 0 if (w->wd >= 0)
4802 1 1 if (ev_is_active (&w->timer)) ev_ref (EV_A);
4804 2 0 if (ev_is_active (&w->timer)) ev_unref (EV_A);
4814 0 2 if (wd < 0)
4829 0 1 if (slot < 0)
4831 0 0 for (slot = 0; slot < (EV_INOTIFY_HASHSIZE); ++slot)
4837 1 1 for (w_ = fs_hash [slot & ((EV_INOTIFY_HASHSIZE) - 1)].head; w_; )
4842 0 1 if (w->wd == wd || wd == -1)
0 0 if (w->wd == wd || wd == -1)
4844 0 1 if (ev->mask & (IN_IGNORED | IN_UNMOUNT | IN_DELETE_SELF))
4864 1 1 for (ofs = 0; ofs < len; )
4879 0 1 if (ev_linux_version () < 0x020619)
4890 1 0 if (fd >= 0)
4899 0 1 if (fs_fd != -2)
4908 1 0 if (fs_fd >= 0)
4923 0 0 if (fs_fd < 0)
4931 0 0 if (fs_fd >= 0)
4939 0 0 for (slot = 0; slot < (EV_INOTIFY_HASHSIZE); ++slot)
4944 0 0 while (w_)
4951 0 0 if (fs_fd >= 0)
4955 0 0 w->timer.repeat = w->interval ? w->interval : DEF_STAT_INTERVAL;
4956 0 0 if (ev_is_active (&w->timer)) ev_ref (EV_A);
4958 0 0 if (ev_is_active (&w->timer)) ev_unref (EV_A);
4975 4 3 if (lstat (w->path, &w->attr) < 0)
4977 0 3 else if (!w->attr.st_nlink)
4991 2 0 if (
4993 2 0 || prev.st_ino != w->attr.st_ino
4994 2 0 || prev.st_mode != w->attr.st_mode
4995 1 1 || prev.st_nlink != w->attr.st_nlink
4996 1 0 || prev.st_uid != w->attr.st_uid
4997 1 0 || prev.st_gid != w->attr.st_gid
4998 1 0 || prev.st_rdev != w->attr.st_rdev
4999 1 0 || prev.st_size != w->attr.st_size
5000 1 0 || prev.st_atime != w->attr.st_atime
5001 1 0 || prev.st_mtime != w->attr.st_mtime
5002 0 1 || prev.st_ctime != w->attr.st_ctime
5010 1 0 if (fs_fd >= 0)
5025 0 1 if (ecb_expect_false (ev_is_active (w)))
5030 1 0 if (w->interval < MIN_STAT_INTERVAL && w->interval)
1 0 if (w->interval < MIN_STAT_INTERVAL && w->interval)
5033 1 0 ev_timer_init (&w->timer, stat_timer_cb, 0., w->interval ? w->interval : DEF_STAT_INTERVAL);
5039 1 0 if (fs_fd >= 0)
5057 0 1 if (ecb_expect_false (!ev_is_active (w)))
5066 1 0 if (ev_is_active (&w->timer))
5082 0 9 if (ecb_expect_false (ev_is_active (w)))
5095 5 4 array_needsize (ev_idle *, idles [ABSPRI (w)], idlemax [ABSPRI (w)], active, array_needsize_noinit);
5106 6 9 if (ecb_expect_false (!ev_is_active (w)))
5129 0 0 if (ecb_expect_false (ev_is_active (w)))
5135 0 0 array_needsize (ev_prepare *, prepares, preparemax, preparecnt, array_needsize_noinit);
5145 0 0 if (ecb_expect_false (!ev_is_active (w)))
5167 0 0 if (ecb_expect_false (ev_is_active (w)))
5173 0 0 array_needsize (ev_check *, checks, checkmax, checkcnt, array_needsize_noinit);
5183 0 0 if (ecb_expect_false (!ev_is_active (w)))
5214 0 0 if (ev_cb (w))
5228 0 0 while (fdchangecnt)
5266 0 0 if (ecb_expect_false (ev_is_active (w)))
5300 0 0 if (ecb_expect_false (!ev_is_active (w)))
5321 0 0 if (ecb_expect_false (ev_is_active (w)))
5327 0 0 array_needsize (ev_fork *, forks, forkmax, forkcnt, array_needsize_noinit);
5337 0 0 if (ecb_expect_false (!ev_is_active (w)))
5359 0 0 if (ecb_expect_false (ev_is_active (w)))
5365 0 0 array_needsize (ev_cleanup *, cleanups, cleanupmax, cleanupcnt, array_needsize_noinit);
5377 0 0 if (ecb_expect_false (!ev_is_active (w)))
5400 0 6 if (ecb_expect_false (ev_is_active (w)))
5410 4 2 array_needsize (ev_async *, asyncs, asyncmax, asynccnt, array_needsize_noinit);
5420 0 6 if (ecb_expect_false (!ev_is_active (w)))
5493 0 0 if (fd >= 0)
5500 0 0 if (timeout >= 0.)