Branch Coverage

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


line true false branch
1958 0 6 if (uname (&buf))
1961 18 6 for (i = 3+1; --i; )
1967 18 18 if (*p >= '0' && *p <= '9')
18 0 if (*p >= '0' && *p <= '9')
2009 0 0 if (!msg)
2012 0 0 if (syserr_cb)
2038 54 46 if (size)
2059 46 54 if (!ptr && size)
0 46 if (!ptr && size)
2199 45 0 if (ecb_expect_true (have_monotonic))
2221 0 0 if (delay > EV_TS_CONST (0.))
2257 16 45 while (cnt > ncur);
2260 0 45 if (elem * ncur > MALLOC_ROUND - sizeof (void *) * 4)
2322 0 34 if (ecb_expect_false (w_->pending))
2327 15 19 array_needsize (ANPENDING, pendings [pri], pendingmax [pri], w_->pending, array_needsize_noinit);
2338 3 2 array_needsize (W, rfeeds, rfeedmax, rfeedcnt + 1, array_needsize_noinit);
2347 2 3 while (rfeedcnt);
2355 5 5 for (i = 0; i < eventcnt; ++i)
2367 1 1 for (w = (ev_io *)anfd->head; w; w = (ev_io *)((WL)w)->next)
2371 1 0 if (ev)
2383 1 0 if (ecb_expect_true (!anfd->reify))
2390 0 0 if (fd >= 0 && fd < anfdmax)
0 0 if (fd >= 0 && fd < anfdmax)
2438 8 19 for (i = 0; i < changecnt; ++i)
2453 8 8 for (w = (ev_io *)anfd->head; w; w = (ev_io *)((WL)w)->next)
2456 8 0 if (o_events != anfd->events)
2460 8 0 if (o_reify & EV__IOFDSET)
2468 0 19 if (ecb_expect_false (fdchangecnt != changecnt))
2482 8 0 if (ecb_expect_true (!reify))
2485 7 1 array_needsize (int, fdchanges, fdchangemax, fdchangecnt, array_needsize_noinit);
2496 0 0 while ((w = (ev_io *)anfds [fd].head))
2521 0 0 for (fd = 0; fd < anfdmax; ++fd)
2522 0 0 if (anfds [fd].events)
2523 0 0 if (!fd_valid (fd) && errno == EBADF)
0 0 if (!fd_valid (fd) && errno == EBADF)
2534 0 0 for (fd = anfdmax; fd--; )
2535 0 0 if (anfds [fd].events)
2549 0 0 for (fd = 0; fd < anfdmax; ++fd)
2550 0 0 if (anfds [fd].events)
2607 0 6 if (ecb_expect_true (pos + DHEAP - 1 < E))
2610 0 0 if ( minat > ANHE_at (pos [1])) (minpos = pos + 1), (minat = ANHE_at (*minpos));
2611 0 0 if ( minat > ANHE_at (pos [2])) (minpos = pos + 2), (minat = ANHE_at (*minpos));
2612 0 0 if ( minat > ANHE_at (pos [3])) (minpos = pos + 3), (minat = ANHE_at (*minpos));
2614 3 3 else if (pos < E)
2617 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));
2618 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));
2619 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));
2624 2 1 if (ANHE_at (he) <= minat)
2683 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))
2699 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)]))
2713 0 0 for (i = 0; i < N; ++i)
2739 7 11 if (!ev_is_active (&pipe_w))
2746 0 7 if (fds [1] < 0 && errno == EINVAL)
0 0 if (fds [1] < 0 && errno == EINVAL)
2749 0 7 if (fds [1] < 0)
2752 0 0 while (pipe (fds))
2760 7 0 if (evpipe [1] < 0)
2775 7 0 ev_io_set (&pipe_w, evpipe [0] < 0 ? evpipe [1] : evpipe [0], EV_READ);
2786 4 10 if (ecb_expect_true (*flag))
2796 0 10 if (pipe_write_wanted)
2806 0 0 if (evpipe [0] < 0)
2836 0 10 if (revents & EV_READ)
2839 0 0 if (evpipe [0] < 0)
2866 4 6 if (sig_pending)
2872 256 4 for (i = EV_NSIG - 1; i--; )
2873 5 251 if (ecb_expect_false (signals [i].pending))
2879 6 4 if (async_pending)
2885 18 6 for (i = asynccnt; i--; )
2886 6 12 if (asyncs [i]->sent)
2906 0 4 if (!EV_A)
2930 5 0 if (ecb_expect_false (signum <= 0 || signum >= EV_NSIG))
0 5 if (ecb_expect_false (signum <= 0 || signum >= EV_NSIG))
2939 1 4 if (ecb_expect_false (signals [signum].loop != EV_A))
2946 4 4 for (w = signals [signum].head; w; w = w->next)
2961 0 0 for (sip = si; (char *)sip < (char *)si + res; ++sip)
2964 0 0 if (res < (ssize_t)sizeof (si))
2988 0 0 int traced = WIFSTOPPED (status) || WIFCONTINUED (status);
0 0 int traced = WIFSTOPPED (status) || WIFCONTINUED (status);
2990 0 0 for (w = (ev_child *)childs [chain & ((EV_PID_HASHSIZE) - 1)]; w; w = (ev_child *)((WL)w)->next)
2992 0 0 if ((w->pid == pid || !w->pid)
0 0 if ((w->pid == pid || !w->pid)
2993 0 0 && (!traced || (w->flags & 1)))
0 0 && (!traced || (w->flags & 1)))
3014 0 0 if (0 >= (pid = waitpid (-1, &status, WNOHANG | WUNTRACED | WCONTINUED)))
3015 0 0 if (!WCONTINUED
3017 0 0 || 0 >= (pid = waitpid (-1, &status, WNOHANG | WUNTRACED)))
3129 7 0 || getgid () != getegid ();
0 7 || getgid () != getegid ();
3189 0 5 if (ev_linux_version () < 0x020620) /* disable it on linux < 2.6.32 */
3259 7 0 if (!backend)
3274 5 2 if (!have_monotonic)
3278 5 0 if (!clock_gettime (CLOCK_MONOTONIC, &ts))
3285 0 7 if (flags & EVFLAG_FORKCHECK)
3289 7 0 if (!(flags & EVFLAG_NOENV)
3290 7 0 && !enable_secure ()
3291 0 7 && getenv ("LIBEV_FLAGS"))
3315 0 7 fs_fd = flags & EVFLAG_NOINOTIFY ? -1 : -2;
3318 0 7 sigfd = flags & EVFLAG_SIGNALFD ? -2 : -1;
3324 7 0 if (!(flags & EVBACKEND_MASK))
3340 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);
3343 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);
3346 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);
3349 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);
3370 0 2 if (!EV_A)
3376 0 2 if (ecb_expect_false (cleanupcnt))
3384 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))
3391 2 0 if (ev_is_active (&pipe_w))
3396 0 2 if (evpipe [0] >= 0) EV_WIN32_CLOSE_FD (evpipe [0]);
3397 2 0 if (evpipe [1] >= 0) EV_WIN32_CLOSE_FD (evpipe [1]);
3401 0 2 if (ev_is_active (&sigfd_w))
3411 0 2 if (fs_fd >= 0)
3415 2 0 if (backend_fd >= 0)
3431 0 2 if (backend == EVBACKEND_LINUXAIO) linuxaio_destroy (EV_A);
3434 2 0 if (backend == EVBACKEND_EPOLL ) epoll_destroy (EV_A);
3437 0 2 if (backend == EVBACKEND_POLL ) poll_destroy (EV_A);
3440 0 2 if (backend == EVBACKEND_SELECT ) select_destroy (EV_A);
3443 10 2 for (i = NUMPRI; i--; )
3475 0 2 if (ev_is_default_loop (EV_A))
3501 0 0 if (backend == EVBACKEND_LINUXAIO) linuxaio_fork (EV_A);
3504 0 0 if (backend == EVBACKEND_EPOLL ) epoll_fork (EV_A);
3510 0 0 if (postfork != 2)
3532 0 0 if (ev_is_active (&pipe_w))
3539 0 0 if (evpipe [0] >= 0)
3563 2 0 if (ev_backend (EV_A))
3589 0 0 for (i = HEAP0; i < N + HEAP0; ++i)
3603 0 0 while (cnt--)
3622 0 0 for (i = 0; i < fdchangecnt; ++i)
3626 0 0 for (i = 0; i < anfdmax; ++i)
3630 0 0 for (w = w2 = anfds [i].head; w; w = w->next)
3634 0 0 if (j++ & 1)
3653 0 0 for (i = NUMPRI; i--; )
3706 5 0 if (!ev_default_loop_ptr)
3716 5 0 if (ev_backend (EV_A))
3752 0 0 for (pri = NUMPRI; pri--; )
3769 34 150 while (pendingcnt [pendingpri])
3778 120 30 while (pendingpri);
3787 5 14 if (ecb_expect_false (idleall))
3791 13 0 for (pri = NUMPRI; pri--; )
3793 0 13 if (pendingcnt [pri])
3796 5 8 if (idlecnt [pri])
3812 4 15 if (timercnt && ANHE_at (timers [HEAP0]) < mn_now)
3 1 if (timercnt && ANHE_at (timers [HEAP0]) < mn_now)
3821 1 4 if (w->repeat)
3824 0 1 if (ev_at (w) < mn_now)
3838 4 1 while (timercnt && ANHE_at (timers [HEAP0]) < mn_now);
2 2 while (timercnt && ANHE_at (timers [HEAP0]) < mn_now);
3850 0 0 ev_tstamp interval = w->interval > MIN_INTERVAL ? w->interval : MIN_INTERVAL;
3854 0 0 while (at <= ev_rt_now)
3859 0 0 if (ecb_expect_false (nat == at))
3877 0 19 while (periodiccnt && ANHE_at (periodics [HEAP0]) < ev_rt_now)
0 0 while (periodiccnt && ANHE_at (periodics [HEAP0]) < ev_rt_now)
3886 0 0 if (w->reschedule_cb)
3895 0 0 else if (w->interval)
3907 0 0 while (periodiccnt && ANHE_at (periodics [HEAP0]) < ev_rt_now);
0 0 while (periodiccnt && ANHE_at (periodics [HEAP0]) < ev_rt_now);
3922 0 0 for (i = HEAP0; i < periodiccnt + HEAP0; ++i)
3926 0 0 if (w->reschedule_cb)
3928 0 0 else if (w->interval)
3945 0 0 for (i = 0; i < timercnt; ++i)
3959 38 0 if (ecb_expect_true (have_monotonic))
3968 38 0 if (ecb_expect_true (mn_now - now_floor < EV_TS_CONST (MIN_TIMEJUMP * .5)))
3985 0 0 for (i = 4; --i; )
3992 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)))
4011 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)))
4044 0 19 if (ecb_expect_false (curpid)) /* penalise the forking check even more */
4045 0 0 if (ecb_expect_false (getpid () != curpid))
4054 0 19 if (ecb_expect_false (postfork))
4055 0 0 if (forkcnt)
4064 0 19 if (ecb_expect_false (preparecnt))
4071 0 19 if (ecb_expect_false (loop_done))
4075 0 19 if (ecb_expect_false (postfork))
4097 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)))
4117 3 0 if (timercnt)
4120 3 0 if (waittime > to) waittime = to;
4124 0 3 if (periodiccnt)
4127 0 0 if (waittime > to) waittime = to;
4132 0 3 if (ecb_expect_false (waittime < timeout_blocktime))
4140 0 3 if (ecb_expect_false (waittime < backend_mintime))
4143 0 0 : backend_mintime;
4146 0 3 if (ecb_expect_false (io_blocktime))
4150 0 0 if (sleeptime > waittime - backend_mintime)
4153 0 0 if (ecb_expect_true (sleeptime > EV_TS_CONST (0.)))
4171 10 9 if (pipe_write_skipped)
4194 0 19 if (ecb_expect_false (checkcnt))
4200 15 4 while (ecb_expect_true (
11 4 while (ecb_expect_true (
11 8 while (ecb_expect_true (
8 3 while (ecb_expect_true (
4206 4 7 if (loop_done == EVBREAK_ONE)
4272 15 0 while (*head)
4274 12 3 if (ecb_expect_true (*head == elem))
4288 1 47 if (w->pending)
4301 1 0 if (ecb_expect_true (pending))
4344 0 8 if (ecb_expect_false (ev_is_active (w)))
4356 7 1 array_needsize (ANFD, anfds, anfdmax, fd + 1, array_needsize_zerofill);
4373 0 0 if (ecb_expect_false (!ev_is_active (w)))
4395 0 8 if (ecb_expect_false (ev_is_active (w)))
4406 4 4 array_needsize (ANHE, timers, timermax, ev_active (w) + 1, array_needsize_noinit);
4421 4 8 if (ecb_expect_false (!ev_is_active (w)))
4433 3 5 if (ecb_expect_true (active < timercnt + HEAP0))
4455 1 1 if (ev_is_active (w))
4457 1 0 if (w->repeat)
4466 1 0 else if (w->repeat)
4478 0 0 return ev_at (w) - (ev_is_active (w) ? mn_now : EV_TS_CONST (0.));
4486 0 0 if (ecb_expect_false (ev_is_active (w)))
4494 0 0 if (w->reschedule_cb)
4496 0 0 else if (w->interval)
4508 0 0 array_needsize (ANHE, periodics, periodicmax, ev_active (w) + 1, array_needsize_noinit);
4523 0 0 if (ecb_expect_false (!ev_is_active (w)))
4535 0 0 if (ecb_expect_true (active < periodiccnt + HEAP0))
4567 0 15 if (ecb_expect_false (ev_is_active (w)))
4583 0 15 if (sigfd == -2)
4586 0 0 if (sigfd < 0 && errno == EINVAL)
0 0 if (sigfd < 0 && errno == EINVAL)
4589 0 0 if (sigfd >= 0)
4602 0 15 if (sigfd >= 0)
4615 12 3 if (!((WL)w)->next)
4617 12 0 if (sigfd < 0) /*TODO*/
4634 0 12 if (origflags & EVFLAG_NOSIGMASK)
4651 2 10 if (ecb_expect_false (!ev_is_active (w)))
4659 7 3 if (!signals [w->signum - 1].head)
4665 0 7 if (sigfd >= 0)
4694 0 0 if (ecb_expect_false (ev_is_active (w)))
4709 0 0 if (ecb_expect_false (!ev_is_active (w)))
4749 1 1 if (w->wd >= 0)
4757 0 1 if (!fs_2625)
4758 0 0 w->timer.repeat = w->interval ? w->interval : DEF_STAT_INTERVAL;
4759 1 0 else if (!statfs (w->path, &sfs)
4760 1 0 && (sfs.f_type == 0x1373 /* devfs */
4761 1 0 || sfs.f_type == 0x4006 /* fat */
4762 1 0 || sfs.f_type == 0x4d44 /* msdos */
4763 1 0 || sfs.f_type == 0xEF53 /* ext2/3 */
4764 1 0 || sfs.f_type == 0x72b6 /* jffs2 */
4765 1 0 || sfs.f_type == 0x858458f6 /* ramfs */
4766 1 0 || sfs.f_type == 0x5346544e /* ntfs */
4767 1 0 || sfs.f_type == 0x3153464a /* jfs */
4768 1 0 || sfs.f_type == 0x9123683e /* btrfs */
4769 1 0 || sfs.f_type == 0x52654973 /* reiser3 */
4770 1 0 || sfs.f_type == 0x01021994 /* tmpfs */
4771 0 1 || sfs.f_type == 0x58465342 /* xfs */))
4774 1 0 w->timer.repeat = w->interval ? w->interval : NFS_STAT_INTERVAL; /* remote, use reduced frequency */
4779 1 0 w->timer.repeat = w->interval ? w->interval : DEF_STAT_INTERVAL;
4784 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)
4792 0 1 | (errno == EACCES ? IN_ATTRIB : IN_CREATE | IN_MOVED_TO);
4796 1 0 if (!pend || pend == path)
1 0 if (!pend || pend == path)
4802 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));
4806 2 0 if (w->wd >= 0)
4810 1 1 if (ev_is_active (&w->timer)) ev_ref (EV_A);
4812 2 0 if (ev_is_active (&w->timer)) ev_unref (EV_A);
4822 0 2 if (wd < 0)
4837 0 3 if (slot < 0)
4839 0 0 for (slot = 0; slot < (EV_INOTIFY_HASHSIZE); ++slot)
4845 1 3 for (w_ = fs_hash [slot & ((EV_INOTIFY_HASHSIZE) - 1)].head; w_; )
4850 0 1 if (w->wd == wd || wd == -1)
0 0 if (w->wd == wd || wd == -1)
4852 0 1 if (ev->mask & (IN_IGNORED | IN_UNMOUNT | IN_DELETE_SELF))
4872 3 1 for (ofs = 0; ofs < len; )
4887 0 1 if (ev_linux_version () < 0x020619)
4898 1 0 if (fd >= 0)
4907 0 1 if (fs_fd != -2)
4916 1 0 if (fs_fd >= 0)
4931 0 0 if (fs_fd < 0)
4939 0 0 if (fs_fd >= 0)
4947 0 0 for (slot = 0; slot < (EV_INOTIFY_HASHSIZE); ++slot)
4952 0 0 while (w_)
4959 0 0 if (fs_fd >= 0)
4963 0 0 w->timer.repeat = w->interval ? w->interval : DEF_STAT_INTERVAL;
4964 0 0 if (ev_is_active (&w->timer)) ev_ref (EV_A);
4966 0 0 if (ev_is_active (&w->timer)) ev_unref (EV_A);
4983 4 3 if (lstat (w->path, &w->attr) < 0)
4985 0 3 else if (!w->attr.st_nlink)
4999 2 0 if (
5001 2 0 || prev.st_ino != w->attr.st_ino
5002 2 0 || prev.st_mode != w->attr.st_mode
5003 1 1 || prev.st_nlink != w->attr.st_nlink
5004 1 0 || prev.st_uid != w->attr.st_uid
5005 1 0 || prev.st_gid != w->attr.st_gid
5006 1 0 || prev.st_rdev != w->attr.st_rdev
5007 1 0 || prev.st_size != w->attr.st_size
5008 1 0 || prev.st_atime != w->attr.st_atime
5009 1 0 || prev.st_mtime != w->attr.st_mtime
5010 0 1 || prev.st_ctime != w->attr.st_ctime
5018 1 0 if (fs_fd >= 0)
5033 0 1 if (ecb_expect_false (ev_is_active (w)))
5038 1 0 if (w->interval < MIN_STAT_INTERVAL && w->interval)
1 0 if (w->interval < MIN_STAT_INTERVAL && w->interval)
5041 1 0 ev_timer_init (&w->timer, stat_timer_cb, 0., w->interval ? w->interval : DEF_STAT_INTERVAL);
5047 1 0 if (fs_fd >= 0)
5065 0 1 if (ecb_expect_false (!ev_is_active (w)))
5074 1 0 if (ev_is_active (&w->timer))
5090 0 9 if (ecb_expect_false (ev_is_active (w)))
5103 5 4 array_needsize (ev_idle *, idles [ABSPRI (w)], idlemax [ABSPRI (w)], active, array_needsize_noinit);
5114 6 9 if (ecb_expect_false (!ev_is_active (w)))
5137 0 0 if (ecb_expect_false (ev_is_active (w)))
5143 0 0 array_needsize (ev_prepare *, prepares, preparemax, preparecnt, array_needsize_noinit);
5153 0 0 if (ecb_expect_false (!ev_is_active (w)))
5175 0 0 if (ecb_expect_false (ev_is_active (w)))
5181 0 0 array_needsize (ev_check *, checks, checkmax, checkcnt, array_needsize_noinit);
5191 0 0 if (ecb_expect_false (!ev_is_active (w)))
5222 0 0 if (ev_cb (w))
5236 0 0 while (fdchangecnt)
5274 0 0 if (ecb_expect_false (ev_is_active (w)))
5308 0 0 if (ecb_expect_false (!ev_is_active (w)))
5329 0 0 if (ecb_expect_false (ev_is_active (w)))
5335 0 0 array_needsize (ev_fork *, forks, forkmax, forkcnt, array_needsize_noinit);
5345 0 0 if (ecb_expect_false (!ev_is_active (w)))
5367 0 0 if (ecb_expect_false (ev_is_active (w)))
5373 0 0 array_needsize (ev_cleanup *, cleanups, cleanupmax, cleanupcnt, array_needsize_noinit);
5385 0 0 if (ecb_expect_false (!ev_is_active (w)))
5408 0 6 if (ecb_expect_false (ev_is_active (w)))
5418 4 2 array_needsize (ev_async *, asyncs, asyncmax, asynccnt, array_needsize_noinit);
5428 0 6 if (ecb_expect_false (!ev_is_active (w)))
5501 0 0 if (fd >= 0)
5508 0 0 if (timeout >= 0.)