ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libev/ev.c
(Generate patch)

Comparing libev/ev.c (file contents):
Revision 1.182 by root, Wed Dec 12 01:27:08 2007 UTC vs.
Revision 1.183 by root, Wed Dec 12 05:11:56 2007 UTC

557 557
558 fdchangecnt = 0; 558 fdchangecnt = 0;
559} 559}
560 560
561void inline_size 561void inline_size
562fd_change (EV_P_ int fd) 562fd_change (EV_P_ int fd, int flags)
563{ 563{
564 if (expect_false (anfds [fd].reify)) 564 unsigned char reify = anfds [fd].reify;
565 return;
566
567 anfds [fd].reify = 1; 565 anfds [fd].reify |= flags | 1;
568 566
567 if (expect_true (!reify))
568 {
569 ++fdchangecnt; 569 ++fdchangecnt;
570 array_needsize (int, fdchanges, fdchangemax, fdchangecnt, EMPTY2); 570 array_needsize (int, fdchanges, fdchangemax, fdchangecnt, EMPTY2);
571 fdchanges [fdchangecnt - 1] = fd; 571 fdchanges [fdchangecnt - 1] = fd;
572 }
572} 573}
573 574
574void inline_speed 575void inline_speed
575fd_kill (EV_P_ int fd) 576fd_kill (EV_P_ int fd)
576{ 577{
627 628
628 for (fd = 0; fd < anfdmax; ++fd) 629 for (fd = 0; fd < anfdmax; ++fd)
629 if (anfds [fd].events) 630 if (anfds [fd].events)
630 { 631 {
631 anfds [fd].events = 0; 632 anfds [fd].events = 0;
632 fd_change (EV_A_ fd); 633 fd_change (EV_A_ fd, EV_IOFDSET);
633 } 634 }
634} 635}
635 636
636/*****************************************************************************/ 637/*****************************************************************************/
637 638
1599 1600
1600 ev_start (EV_A_ (W)w, 1); 1601 ev_start (EV_A_ (W)w, 1);
1601 array_needsize (ANFD, anfds, anfdmax, fd + 1, anfds_init); 1602 array_needsize (ANFD, anfds, anfdmax, fd + 1, anfds_init);
1602 wlist_add (&anfds[fd].head, (WL)w); 1603 wlist_add (&anfds[fd].head, (WL)w);
1603 1604
1604 fd_change (EV_A_ fd); 1605 fd_change (EV_A_ fd, w->events & EV_IOFDSET);
1606 w->events &= ~ EV_IOFDSET;
1605} 1607}
1606 1608
1607void noinline 1609void noinline
1608ev_io_stop (EV_P_ ev_io *w) 1610ev_io_stop (EV_P_ ev_io *w)
1609{ 1611{
1614 assert (("ev_io_start called with illegal fd (must stay constant after start!)", w->fd >= 0 && w->fd < anfdmax)); 1616 assert (("ev_io_start called with illegal fd (must stay constant after start!)", w->fd >= 0 && w->fd < anfdmax));
1615 1617
1616 wlist_del (&anfds[w->fd].head, (WL)w); 1618 wlist_del (&anfds[w->fd].head, (WL)w);
1617 ev_stop (EV_A_ (W)w); 1619 ev_stop (EV_A_ (W)w);
1618 1620
1619 fd_change (EV_A_ w->fd); 1621 fd_change (EV_A_ w->fd, 0);
1620} 1622}
1621 1623
1622void noinline 1624void noinline
1623ev_timer_start (EV_P_ ev_timer *w) 1625ev_timer_start (EV_P_ ev_timer *w)
1624{ 1626{

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines