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

Comparing libev/ev_linuxaio.c (file contents):
Revision 1.17 by root, Mon Jun 24 02:02:35 2019 UTC vs.
Revision 1.18 by root, Mon Jun 24 04:54:08 2019 UTC

262inline_size 262inline_size
263void 263void
264linuxaio_get_events (EV_P_ ev_tstamp timeout) 264linuxaio_get_events (EV_P_ ev_tstamp timeout)
265{ 265{
266 struct timespec ts; 266 struct timespec ts;
267 struct io_event ioev; 267 struct io_event ioev[1];
268 int res; 268 int res;
269 269
270 if (linuxaio_get_events_from_ring (EV_A)) 270 if (linuxaio_get_events_from_ring (EV_A))
271 return; 271 return;
272 272
275 /* if the ring buffer changes layout, but so be it */ 275 /* if the ring buffer changes layout, but so be it */
276 276
277 ts.tv_sec = (long)timeout; 277 ts.tv_sec = (long)timeout;
278 ts.tv_nsec = (long)((timeout - ts.tv_sec) * 1e9); 278 ts.tv_nsec = (long)((timeout - ts.tv_sec) * 1e9);
279 279
280 res = ev_io_getevents (linuxaio_ctx, 1, 1, &ioev, &ts); 280 res = ev_io_getevents (linuxaio_ctx, 1, sizeof (ioev) / sizeof (ioev [0]), ioev, &ts);
281 281
282 if (res < 0) 282 if (res < 0)
283 if (errno == EINTR) 283 if (errno == EINTR)
284 /* ignored */; 284 /* ignored */;
285 else 285 else
286 ev_syserr ("(libev) linuxaio io_getevents"); 286 ev_syserr ("(libev) linuxaio io_getevents");
287 else if (res) 287 else if (res)
288 { 288 {
289 /* at least one event received, handle it and any remaining ones in the ring buffer */ 289 /* at least one event received, handle it and any remaining ones in the ring buffer */
290 linuxaio_parse_events (EV_A_ &ioev, 1); 290 linuxaio_parse_events (EV_A_ ioev, res);
291 linuxaio_get_events_from_ring (EV_A); 291 linuxaio_get_events_from_ring (EV_A);
292 } 292 }
293} 293}
294 294
295#if EPOLL_FALLBACK 295#if EPOLL_FALLBACK

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines