summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJerry Jelinek <jerry.jelinek@joyent.com>2014-07-03 17:47:09 +0000
committerJerry Jelinek <jerry.jelinek@joyent.com>2014-07-03 17:47:09 +0000
commit3c87d72b1ce6467a08699744be3576f28a80d3bb (patch)
tree9a57efb5f3446b84cc1b6ce1ec6550fdfaa0cb6b
parent3f551c88dfc2a04143be26028d9ec040879c1baa (diff)
downloadillumos-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.c17
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);
}