diff options
Diffstat (limited to 'src/runtime/netpoll_kqueue.go')
| -rw-r--r-- | src/runtime/netpoll_kqueue.go | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/runtime/netpoll_kqueue.go b/src/runtime/netpoll_kqueue.go index 080964bb72..01445dc231 100644 --- a/src/runtime/netpoll_kqueue.go +++ b/src/runtime/netpoll_kqueue.go @@ -62,9 +62,9 @@ func netpollarm(pd *pollDesc, mode int) { // Polls for ready network connections. // Returns list of goroutines that become runnable. -func netpoll(block bool) (gp *g) { +func netpoll(block bool) *g { if kq == -1 { - return + return nil } var tp *timespec var ts timespec @@ -81,6 +81,7 @@ retry: } goto retry } + var gp guintptr for i := 0; i < int(n); i++ { ev := &events[i] var mode int32 @@ -91,11 +92,11 @@ retry: mode += 'w' } if mode != 0 { - netpollready((**g)(noescape(unsafe.Pointer(&gp))), (*pollDesc)(unsafe.Pointer(ev.udata)), mode) + netpollready(&gp, (*pollDesc)(unsafe.Pointer(ev.udata)), mode) } } - if block && gp == nil { + if block && gp == 0 { goto retry } - return gp + return gp.ptr() } |
