Print this page
8634 epoll fails to wake on certain edge-triggered conditions
8635 epoll should not emit POLLNVAL
8636 recursive epoll should emit EPOLLRDNORM
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Robert Mustacchi <rm@joyent.com>
Reviewed by: Toomas Soome <tsoome@me.com>
Reviewed by: Igor Kozhukhov <igor@dilos.org>

*** 18,28 **** * * CDDL HEADER END */ /* ! * Copyright (c) 2013, Joyent, Inc. All rights reserved. * Copyright 2013 Nexenta Systems, Inc. All rights reserved. */ /* * The ipmi driver is an openipmi compatible IPMI driver based on the FreeBSD --- 18,28 ---- * * CDDL HEADER END */ /* ! * Copyright 2017 Joyent, Inc. * Copyright 2013 Nexenta Systems, Inc. All rights reserved. */ /* * The ipmi driver is an openipmi compatible IPMI driver based on the FreeBSD
*** 458,470 **** revent |= events & (POLLIN | POLLRDNORM); if (dev->ipmi_requests == 0) revent |= POLLERR; } ! if (revent == 0) { ! /* nothing has occurred */ ! if (!anyyet) *phpp = dev->ipmi_pollhead; } *reventsp = revent; return (0); --- 458,468 ---- revent |= events & (POLLIN | POLLRDNORM); if (dev->ipmi_requests == 0) revent |= POLLERR; } ! if ((revent == 0 && !anyyet) || (events & POLLET)) { *phpp = dev->ipmi_pollhead; } *reventsp = revent; return (0);