#include <string.h>
#include <errno.h>
-static void
-port_modify (EV_P_ int fd, int oev, int nev)
+void inline_speed
+port_associate_and_check (EV_P_ int fd, int ev)
{
- /* we need to reassociate no matter what, as closes are
- * once more silently being discarded.
- */
- if (!nev)
- {
- if (oev)
- port_dissociate (backend_fd, PORT_SOURCE_FD, fd);
- }
- else if (0 >
+ if (0 >
port_associate (
backend_fd, PORT_SOURCE_FD, fd,
- (nev & EV_READ ? POLLIN : 0)
- | (nev & EV_WRITE ? POLLOUT : 0),
+ (ev & EV_READ ? POLLIN : 0)
+ | (ev & EV_WRITE ? POLLOUT : 0),
0
)
)
fd_kill (EV_A_ fd);
else
syserr ("(libev) port_associate");
- }
+ }
+}
+
+static void
+port_modify (EV_P_ int fd, int oev, int nev)
+{
+ /* we need to reassociate no matter what, as closes are
+ * once more silently being discarded.
+ */
+ if (!nev)
+ {
+ if (oev)
+ port_dissociate (backend_fd, PORT_SOURCE_FD, fd);
+ }
+ else
+ port_associate_and_check (EV_A_ fd, nev);
}
static void
| (port_events [i].portev_events & (POLLIN | POLLERR | POLLHUP) ? EV_READ : 0)
);
- anfds [fd].events = 0; /* event received == disassociated */
- fd_change (EV_A_ fd); /* need to reify later */
+ port_associate_and_check (EV_A_ fd, anfds [fd].events);
}
}
if (expect_false (nget == port_eventmax))
{
ev_free (port_events);
- port_eventmax = array_roundsize (port_event_t, port_eventmax << 1);
+ port_eventmax = array_nextsize (sizeof (port_event_t), port_eventmax, port_eventmax + 1);
port_events = (port_event_t *)ev_malloc (sizeof (port_event_t) * port_eventmax);
}
}