mirror of
https://github.com/golang/go
synced 2024-11-17 07:04:44 -07:00
runtime: refine code reducing indents in netpollBreak()
Change-Id: I2d1528910cb3660344c7a664d6f32306defe75d3 Reviewed-on: https://go-review.googlesource.com/c/go/+/419321 Reviewed-by: Michael Pratt <mpratt@google.com> Auto-Submit: Michael Knyszek <mknyszek@google.com> Reviewed-by: Michael Knyszek <mknyszek@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Michael Pratt <mpratt@google.com>
This commit is contained in:
parent
13bd6ddbe7
commit
ffe5f085cd
@ -135,10 +135,13 @@ func netpollarm(pd *pollDesc, mode int) {
|
||||
|
||||
// netpollBreak interrupts a poll.
|
||||
func netpollBreak() {
|
||||
if atomic.Cas(&netpollWakeSig, 0, 1) {
|
||||
b := [1]byte{0}
|
||||
write(uintptr(wrwake), unsafe.Pointer(&b[0]), 1)
|
||||
// Failing to cas indicates there is an in-flight wakeup, so we're done here.
|
||||
if !atomic.Cas(&netpollWakeSig, 0, 1) {
|
||||
return
|
||||
}
|
||||
|
||||
b := [1]byte{0}
|
||||
write(uintptr(wrwake), unsafe.Pointer(&b[0]), 1)
|
||||
}
|
||||
|
||||
// netpoll checks for ready network connections.
|
||||
|
@ -79,22 +79,25 @@ func netpollarm(pd *pollDesc, mode int) {
|
||||
|
||||
// netpollBreak interrupts an epollwait.
|
||||
func netpollBreak() {
|
||||
if atomic.Cas(&netpollWakeSig, 0, 1) {
|
||||
for {
|
||||
var b byte
|
||||
n := write(netpollBreakWr, unsafe.Pointer(&b), 1)
|
||||
if n == 1 {
|
||||
break
|
||||
}
|
||||
if n == -_EINTR {
|
||||
continue
|
||||
}
|
||||
if n == -_EAGAIN {
|
||||
return
|
||||
}
|
||||
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 {
|
||||
break
|
||||
}
|
||||
if n == -_EINTR {
|
||||
continue
|
||||
}
|
||||
if n == -_EAGAIN {
|
||||
return
|
||||
}
|
||||
println("runtime: netpollBreak write failed with", -n)
|
||||
throw("runtime: netpollBreak write failed")
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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")
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -191,17 +191,20 @@ func netpollarm(pd *pollDesc, mode int) {
|
||||
|
||||
// netpollBreak interrupts a port_getn wait.
|
||||
func netpollBreak() {
|
||||
if atomic.Cas(&netpollWakeSig, 0, 1) {
|
||||
// Use port_alert to put portfd into alert mode.
|
||||
// This will wake up all threads sleeping in port_getn on portfd,
|
||||
// and cause their calls to port_getn to return immediately.
|
||||
// Further, until portfd is taken out of alert mode,
|
||||
// all calls to port_getn will return immediately.
|
||||
if port_alert(portfd, _PORT_ALERT_UPDATE, _POLLHUP, uintptr(unsafe.Pointer(&portfd))) < 0 {
|
||||
if e := errno(); e != _EBUSY {
|
||||
println("runtime: port_alert failed with", e)
|
||||
throw("runtime: netpoll: port_alert failed")
|
||||
}
|
||||
// Failing to cas indicates there is an in-flight wakeup, so we're done here.
|
||||
if !atomic.Cas(&netpollWakeSig, 0, 1) {
|
||||
return
|
||||
}
|
||||
|
||||
// Use port_alert to put portfd into alert mode.
|
||||
// This will wake up all threads sleeping in port_getn on portfd,
|
||||
// and cause their calls to port_getn to return immediately.
|
||||
// Further, until portfd is taken out of alert mode,
|
||||
// all calls to port_getn will return immediately.
|
||||
if port_alert(portfd, _PORT_ALERT_UPDATE, _POLLHUP, uintptr(unsafe.Pointer(&portfd))) < 0 {
|
||||
if e := errno(); e != _EBUSY {
|
||||
println("runtime: port_alert failed with", e)
|
||||
throw("runtime: netpoll: port_alert failed")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -67,11 +67,14 @@ func netpollarm(pd *pollDesc, mode int) {
|
||||
}
|
||||
|
||||
func netpollBreak() {
|
||||
if atomic.Cas(&netpollWakeSig, 0, 1) {
|
||||
if stdcall4(_PostQueuedCompletionStatus, iocphandle, 0, 0, 0) == 0 {
|
||||
println("runtime: netpoll: PostQueuedCompletionStatus failed (errno=", getlasterror(), ")")
|
||||
throw("runtime: netpoll: PostQueuedCompletionStatus failed")
|
||||
}
|
||||
// Failing to cas indicates there is an in-flight wakeup, so we're done here.
|
||||
if !atomic.Cas(&netpollWakeSig, 0, 1) {
|
||||
return
|
||||
}
|
||||
|
||||
if stdcall4(_PostQueuedCompletionStatus, iocphandle, 0, 0, 0) == 0 {
|
||||
println("runtime: netpoll: PostQueuedCompletionStatus failed (errno=", getlasterror(), ")")
|
||||
throw("runtime: netpoll: PostQueuedCompletionStatus failed")
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user