From ffe5f085cd8b289a7853fcdb3c26adbebda09fd6 Mon Sep 17 00:00:00 2001 From: Andy Pan Date: Mon, 25 Jul 2022 12:32:24 +0800 Subject: runtime: refine code reducing indents in netpollBreak() Change-Id: I2d1528910cb3660344c7a664d6f32306defe75d3 Reviewed-on: https://go-review.googlesource.com/c/go/+/419321 Reviewed-by: Michael Pratt Auto-Submit: Michael Knyszek Reviewed-by: Michael Knyszek TryBot-Result: Gopher Robot Run-TryBot: Michael Pratt --- src/runtime/netpoll_kqueue.go | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) (limited to 'src/runtime/netpoll_kqueue.go') diff --git a/src/runtime/netpoll_kqueue.go b/src/runtime/netpoll_kqueue.go index 1694753b6f..78d1663ad9 100644 --- a/src/runtime/netpoll_kqueue.go +++ b/src/runtime/netpoll_kqueue.go @@ -83,19 +83,22 @@ func netpollarm(pd *pollDesc, mode int) { // netpollBreak interrupts a kevent. func netpollBreak() { - if atomic.Cas(&netpollWakeSig, 0, 1) { - for { - var b byte - n := write(netpollBreakWr, unsafe.Pointer(&b), 1) - if n == 1 || n == -_EAGAIN { - break - } - if n == -_EINTR { - continue - } - println("runtime: netpollBreak write failed with", -n) - throw("runtime: netpollBreak write failed") + // Failing to cas indicates there is an in-flight wakeup, so we're done here. + if !atomic.Cas(&netpollWakeSig, 0, 1) { + return + } + + for { + var b byte + n := write(netpollBreakWr, unsafe.Pointer(&b), 1) + if n == 1 || n == -_EAGAIN { + break + } + if n == -_EINTR { + continue } + println("runtime: netpollBreak write failed with", -n) + throw("runtime: netpollBreak write failed") } } -- cgit v1.3-5-g9baa