diff options
Diffstat (limited to 'src/runtime/netpoll_kqueue_event.go')
| -rw-r--r-- | src/runtime/netpoll_kqueue_event.go | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/src/runtime/netpoll_kqueue_event.go b/src/runtime/netpoll_kqueue_event.go index d5f783e607..852a00a5d8 100644 --- a/src/runtime/netpoll_kqueue_event.go +++ b/src/runtime/netpoll_kqueue_event.go @@ -16,7 +16,7 @@ func addWakeupEvent(kq int32) { ev := keventt{ ident: kqIdent, filter: _EVFILT_USER, - flags: _EV_ADD, + flags: _EV_ADD | _EV_CLEAR, } for { n := kevent(kq, &ev, 1, nil, 0, nil) @@ -38,7 +38,6 @@ func wakeNetpoll(kq int32) { ev := keventt{ ident: kqIdent, filter: _EVFILT_USER, - flags: _EV_ENABLE, fflags: _NOTE_TRIGGER, } for { @@ -66,13 +65,11 @@ func isWakeup(ev *keventt) bool { return false } -func drainWakeupEvent(kq int32) { - ev := keventt{ - ident: kqIdent, - filter: _EVFILT_USER, - flags: _EV_DISABLE, +func processWakeupEvent(kq int32, isBlocking bool) { + if !isBlocking { + // Got a wrong thread, relay + wakeNetpoll(kq) } - kevent(kq, &ev, 1, nil, 0, nil) } func netpollIsPollDescriptor(fd uintptr) bool { |
