diff options
author | Jerry Jelinek <jerry.jelinek@joyent.com> | 2014-07-03 17:47:09 +0000 |
---|---|---|
committer | Jerry Jelinek <jerry.jelinek@joyent.com> | 2014-07-03 17:47:09 +0000 |
commit | 3c87d72b1ce6467a08699744be3576f28a80d3bb (patch) | |
tree | 9a57efb5f3446b84cc1b6ce1ec6550fdfaa0cb6b | |
parent | 3f551c88dfc2a04143be26028d9ec040879c1baa (diff) | |
download | illumos-joyent-release-20140703.tar.gz |
OS-3086 lx brand upstart-socket-bridge burning 1 cpu polling20140703release-20140703
-rw-r--r-- | usr/src/uts/common/io/devpoll.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/usr/src/uts/common/io/devpoll.c b/usr/src/uts/common/io/devpoll.c index b983443725..3c82a9d3dd 100644 --- a/usr/src/uts/common/io/devpoll.c +++ b/usr/src/uts/common/io/devpoll.c @@ -1217,10 +1217,25 @@ static int dppoll(dev_t dev, short events, int anyyet, short *reventsp, struct pollhead **phpp) { + minor_t minor; + dp_entry_t *dpep; + + minor = getminor(dev); + + mutex_enter(&devpoll_lock); + dpep = devpolltbl[minor]; + ASSERT(dpep != NULL); + mutex_exit(&devpoll_lock); + /* * Polling on a /dev/poll fd is not fully supported yet. */ - *reventsp = POLLERR; + if (dpep->dpe_flag & DP_ISEPOLLCOMPAT) { + /* no error in epoll compat. mode */ + *reventsp = 0; + } else { + *reventsp = POLLERR; + } return (0); } |