mirror of /home/gitosis/repositories/libev.git
multiplicity, work around bugs in http.c etc.
This commit is contained in:
parent
6e886dc713
commit
86e4b62bbe
15
ev.c
15
ev.c
|
@ -132,7 +132,7 @@ typedef struct
|
|||
int events;
|
||||
} ANPENDING;
|
||||
|
||||
#ifdef EV_MULTIPLICITY
|
||||
#if EV_MULTIPLICITY
|
||||
|
||||
struct ev_loop
|
||||
{
|
||||
|
@ -544,7 +544,7 @@ ev_method (EV_P)
|
|||
return method;
|
||||
}
|
||||
|
||||
static void
|
||||
inline int
|
||||
loop_init (EV_P_ int methods)
|
||||
{
|
||||
if (!method)
|
||||
|
@ -603,16 +603,19 @@ loop_init (EV_P_ int methods)
|
|||
return method;
|
||||
}
|
||||
|
||||
#ifdef EV_MULTIPLICITY
|
||||
#if EV_MULTIPLICITY
|
||||
|
||||
struct ev_loop *
|
||||
ev_loop_new (int methods)
|
||||
{
|
||||
struct ev_loop *loop = (struct ev_loop *)calloc (1, sizeof (struct ev_loop));
|
||||
|
||||
loop_init (EV_A_ methods);
|
||||
if (loop_init (EV_A_ methods))
|
||||
return loop;
|
||||
|
||||
return loop;
|
||||
ev_loop_delete (loop);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -627,7 +630,7 @@ ev_loop_delete (EV_P)
|
|||
int
|
||||
ev_init (int methods)
|
||||
{
|
||||
loop_init ();
|
||||
return loop_init (methods);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
20
ev_epoll.c
20
ev_epoll.c
|
@ -62,7 +62,7 @@ epoll_postfork_child (EV_P)
|
|||
static void
|
||||
epoll_poll (EV_P_ ev_tstamp timeout)
|
||||
{
|
||||
int eventcnt = epoll_wait (epoll_fd, events, eventmax, ceil (timeout * 1000.));
|
||||
int eventcnt = epoll_wait (epoll_fd, epoll_events, epoll_eventmax, ceil (timeout * 1000.));
|
||||
int i;
|
||||
|
||||
if (eventcnt < 0)
|
||||
|
@ -71,17 +71,17 @@ epoll_poll (EV_P_ ev_tstamp timeout)
|
|||
for (i = 0; i < eventcnt; ++i)
|
||||
fd_event (
|
||||
EV_A_
|
||||
events [i].data.u64,
|
||||
(events [i].events & (EPOLLOUT | EPOLLERR | EPOLLHUP) ? EV_WRITE : 0)
|
||||
| (events [i].events & (EPOLLIN | EPOLLERR | EPOLLHUP) ? EV_READ : 0)
|
||||
epoll_events [i].data.u64,
|
||||
(epoll_events [i].events & (EPOLLOUT | EPOLLERR | EPOLLHUP) ? EV_WRITE : 0)
|
||||
| (epoll_events [i].events & (EPOLLIN | EPOLLERR | EPOLLHUP) ? EV_READ : 0)
|
||||
);
|
||||
|
||||
/* if the receive array was full, increase its size */
|
||||
if (expect_false (eventcnt == eventmax))
|
||||
if (expect_false (eventcnt == epoll_eventmax))
|
||||
{
|
||||
free (events);
|
||||
eventmax = array_roundsize (events, eventmax << 1);
|
||||
events = malloc (sizeof (struct epoll_event) * eventmax);
|
||||
free (epoll_events);
|
||||
epoll_eventmax = array_roundsize (epoll_events, epoll_eventmax << 1);
|
||||
epoll_events = malloc (sizeof (struct epoll_event) * epoll_eventmax);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -99,8 +99,8 @@ epoll_init (EV_P_ int flags)
|
|||
method_modify = epoll_modify;
|
||||
method_poll = epoll_poll;
|
||||
|
||||
eventmax = 64; /* intiial number of events receivable per poll */
|
||||
events = malloc (sizeof (struct epoll_event) * eventmax);
|
||||
epoll_eventmax = 64; /* intiial number of events receivable per poll */
|
||||
epoll_events = malloc (sizeof (struct epoll_event) * epoll_eventmax);
|
||||
|
||||
return EVMETHOD_EPOLL;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue