summaryrefslogtreecommitdiff
path: root/src/pkg/runtime/netpoll.goc
diff options
context:
space:
mode:
Diffstat (limited to 'src/pkg/runtime/netpoll.goc')
-rw-r--r--src/pkg/runtime/netpoll.goc14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/pkg/runtime/netpoll.goc b/src/pkg/runtime/netpoll.goc
index d27bef167..9b5176645 100644
--- a/src/pkg/runtime/netpoll.goc
+++ b/src/pkg/runtime/netpoll.goc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build darwin dragonfly freebsd linux netbsd openbsd windows
+// +build darwin dragonfly freebsd linux netbsd openbsd solaris windows
package net
@@ -113,6 +113,12 @@ func runtime_pollWait(pd *PollDesc, mode int) (err int) {
runtime·lock(pd);
err = checkerr(pd, mode);
if(err == 0) {
+#ifdef GOOS_solaris
+ if(mode == 'r')
+ runtime·netpollarmread(pd->fd);
+ else if(mode == 'w')
+ runtime·netpollarmwrite(pd->fd);
+#endif
while(!netpollblock(pd, mode)) {
err = checkerr(pd, mode);
if(err != 0)
@@ -127,6 +133,12 @@ func runtime_pollWait(pd *PollDesc, mode int) (err int) {
func runtime_pollWaitCanceled(pd *PollDesc, mode int) {
runtime·lock(pd);
+#ifdef GOOS_solaris
+ if(mode == 'r')
+ runtime·netpollarmread(pd->fd);
+ else if(mode == 'w')
+ runtime·netpollarmwrite(pd->fd);
+#endif
// wait for ioready, ignore closing or timeouts.
while(!netpollblock(pd, mode))
;