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

Comparing libev/ev_kqueue.c (file contents):
Revision 1.10 by root, Tue Nov 6 00:52:33 2007 UTC vs.
Revision 1.13 by root, Tue Nov 6 17:20:42 2007 UTC

37static void 37static void
38kqueue_change (EV_P_ int fd, int filter, int flags, int fflags) 38kqueue_change (EV_P_ int fd, int filter, int flags, int fflags)
39{ 39{
40 struct kevent *ke; 40 struct kevent *ke;
41 41
42 array_needsize (kqueue_changes, kqueue_changemax, ++kqueue_changecnt, ); 42 array_needsize (struct kevent, kqueue_changes, kqueue_changemax, ++kqueue_changecnt, );
43 43
44 ke = &kqueue_changes [kqueue_changecnt - 1]; 44 ke = &kqueue_changes [kqueue_changecnt - 1];
45 memset (ke, 0, sizeof (struct kevent)); 45 memset (ke, 0, sizeof (struct kevent));
46 ke->ident = fd; 46 ke->ident = fd;
47 ke->filter = filter; 47 ke->filter = filter;
57kqueue_modify (EV_P_ int fd, int oev, int nev) 57kqueue_modify (EV_P_ int fd, int oev, int nev)
58{ 58{
59 if ((oev ^ nev) & EV_READ) 59 if ((oev ^ nev) & EV_READ)
60 { 60 {
61 if (nev & EV_READ) 61 if (nev & EV_READ)
62 kqueue_change (fd, EVFILT_READ, EV_ADD, NOTE_EOF); 62 kqueue_change (EV_A_ fd, EVFILT_READ, EV_ADD, NOTE_EOF);
63 else 63 else
64 kqueue_change (fd, EVFILT_READ, EV_DELETE, 0); 64 kqueue_change (EV_A_ fd, EVFILT_READ, EV_DELETE, 0);
65 } 65 }
66 66
67 if ((oev ^ nev) & EV_WRITE) 67 if ((oev ^ nev) & EV_WRITE)
68 { 68 {
69 if (nev & EV_WRITE) 69 if (nev & EV_WRITE)
70 kqueue_change (fd, EVFILT_WRITE, EV_ADD, NOTE_EOF); 70 kqueue_change (EV_A_ fd, EVFILT_WRITE, EV_ADD, NOTE_EOF);
71 else 71 else
72 kqueue_change (fd, EVFILT_WRITE, EV_DELETE, 0); 72 kqueue_change (EV_A_ fd, EVFILT_WRITE, EV_DELETE, 0);
73 } 73 }
74} 74}
75 75
76static void 76static void
77kqueue_poll (EV_P_ ev_tstamp timeout) 77kqueue_poll (EV_P_ ev_tstamp timeout)
183} 183}
184 184
185static void 185static void
186kqueue_fork (EV_P) 186kqueue_fork (EV_P)
187{ 187{
188 for (;;) 188 close (kqueue_fd);
189 {
190 kqueue_fd = kqueue ();
191 189
192 if (kqueue_fd >= 0) 190 while ((kqueue_fd = kqueue ()) < 0)
193 break;
194
195 syserr ("(libev) kqueue"); 191 syserr ("(libev) kqueue");
196 }
197 192
198 fcntl (kqueue_fd, F_SETFD, FD_CLOEXEC); 193 fcntl (kqueue_fd, F_SETFD, FD_CLOEXEC);
199 194
200 /* re-register interest in fds */ 195 /* re-register interest in fds */
201 fd_rearm_all (EV_A); 196 fd_rearm_all (EV_A);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines