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

Comparing libev/ev_epoll.c (file contents):
Revision 1.2 by root, Tue Oct 30 23:54:38 2007 UTC vs.
Revision 1.4 by root, Wed Oct 31 11:56:34 2007 UTC

11 ev.data.fd = fd; 11 ev.data.fd = fd;
12 ev.events = 12 ev.events =
13 (nev & EV_READ ? EPOLLIN : 0) 13 (nev & EV_READ ? EPOLLIN : 0)
14 | (nev & EV_WRITE ? EPOLLOUT : 0); 14 | (nev & EV_WRITE ? EPOLLOUT : 0);
15 15
16 fprintf (stderr, "reify %d,%d,%d m%d (r=%d)\n", fd, oev, nev, mode,//D
17 epoll_ctl (epoll_fd, mode, fd, &ev) 16 epoll_ctl (epoll_fd, mode, fd, &ev);
18 );//D
19} 17}
20 18
21void epoll_postfork_child (void) 19void epoll_postfork_child (void)
22{ 20{
23 int fd; 21 int fd;
24 22
25 epoll_fd = epoll_create (256); 23 epoll_fd = epoll_create (256);
24 fcntl (epoll_fd, F_SETFD, FD_CLOEXEC);
26 25
27 /* re-register interest in fds */ 26 /* re-register interest in fds */
28 for (fd = 0; fd < anfdmax; ++fd) 27 for (fd = 0; fd < anfdmax; ++fd)
29 if (anfds [fd].wev) 28 if (anfds [fd].wev)
30 epoll_modify (fd, EV_NONE, anfds [fd].wev); 29 epoll_modify (fd, EV_NONE, anfds [fd].wev);
55 eventmax += eventmax >> 1; 54 eventmax += eventmax >> 1;
56 events = malloc (sizeof (struct epoll_event) * eventmax); 55 events = malloc (sizeof (struct epoll_event) * eventmax);
57 } 56 }
58} 57}
59 58
60int epoll_init (int flags) 59void epoll_init (int flags)
61{ 60{
62 epoll_fd = epoll_create (256); 61 epoll_fd = epoll_create (256);
63 62
64 if (epoll_fd < 0) 63 if (epoll_fd < 0)
65 return 0; 64 return;
66 65
66 fcntl (epoll_fd, F_SETFD, FD_CLOEXEC);
67
67 ev_method = EVMETHOD_EPOLL; 68 ev_method = EVMETHOD_EPOLL;
68 method_fudge = 1e-3; /* needed to compensate for epoll returning early */ 69 method_fudge = 1e-3; /* needed to compensate for epoll returning early */
69 method_modify = epoll_modify; 70 method_modify = epoll_modify;
70 method_poll = epoll_poll; 71 method_poll = epoll_poll;
71 72
72 eventmax = 64; /* intiial number of events receivable per poll */ 73 eventmax = 64; /* intiial number of events receivable per poll */
73 events = malloc (sizeof (struct epoll_event) * eventmax); 74 events = malloc (sizeof (struct epoll_event) * eventmax);
74
75 return 1;
76} 75}

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines