There's no need for netpollWakeSig to use a uintptr type, a uint32 is enough.
Relevant CL: CL 212737
Change-Id: Ide24478b217a02bad62f7e000a9680c26a8c5366
Reviewed-on: https://go-review.googlesource.com/c/go/+/227798
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
wrwake int32
pendingUpdates int32
- netpollWakeSig uintptr // used to avoid duplicate calls of netpollBreak
+ netpollWakeSig uint32 // used to avoid duplicate calls of netpollBreak
)
func netpollinit() {
// netpollBreak interrupts a poll.
func netpollBreak() {
- if atomic.Casuintptr(&netpollWakeSig, 0, 1) {
+ if atomic.Cas(&netpollWakeSig, 0, 1) {
b := [1]byte{0}
write(uintptr(wrwake), unsafe.Pointer(&b[0]), 1)
}
var b [1]byte
for read(rdwake, unsafe.Pointer(&b[0]), 1) == 1 {
}
- atomic.Storeuintptr(&netpollWakeSig, 0)
+ atomic.Store(&netpollWakeSig, 0)
}
// Still look at the other fds even if the mode may have
// changed, as netpollBreak might have been called.
netpollBreakRd, netpollBreakWr uintptr // for netpollBreak
- netpollWakeSig uintptr // used to avoid duplicate calls of netpollBreak
+ netpollWakeSig uint32 // used to avoid duplicate calls of netpollBreak
)
func netpollinit() {
// netpollBreak interrupts an epollwait.
func netpollBreak() {
- if atomic.Casuintptr(&netpollWakeSig, 0, 1) {
+ if atomic.Cas(&netpollWakeSig, 0, 1) {
for {
var b byte
n := write(netpollBreakWr, unsafe.Pointer(&b), 1)
// if blocking.
var tmp [16]byte
read(int32(netpollBreakRd), noescape(unsafe.Pointer(&tmp[0])), int32(len(tmp)))
- atomic.Storeuintptr(&netpollWakeSig, 0)
+ atomic.Store(&netpollWakeSig, 0)
}
continue
}
netpollBreakRd, netpollBreakWr uintptr // for netpollBreak
- netpollWakeSig uintptr // used to avoid duplicate calls of netpollBreak
+ netpollWakeSig uint32 // used to avoid duplicate calls of netpollBreak
)
func netpollinit() {
// netpollBreak interrupts a kevent.
func netpollBreak() {
- if atomic.Casuintptr(&netpollWakeSig, 0, 1) {
+ if atomic.Cas(&netpollWakeSig, 0, 1) {
for {
var b byte
n := write(netpollBreakWr, unsafe.Pointer(&b), 1)
// if blocking.
var tmp [16]byte
read(int32(netpollBreakRd), noescape(unsafe.Pointer(&tmp[0])), int32(len(tmp)))
- atomic.Storeuintptr(&netpollWakeSig, 0)
+ atomic.Store(&netpollWakeSig, 0)
}
continue
}
libc_port_dissociate,
libc_port_getn,
libc_port_alert libcFunc
- netpollWakeSig uintptr // used to avoid duplicate calls of netpollBreak
+ netpollWakeSig uint32 // used to avoid duplicate calls of netpollBreak
)
func errno() int32 {
// netpollBreak interrupts a port_getn wait.
func netpollBreak() {
- if atomic.Casuintptr(&netpollWakeSig, 0, 1) {
+ 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.
println("runtime: port_alert failed with", e)
throw("runtime: netpoll: port_alert failed")
}
- atomic.Storeuintptr(&netpollWakeSig, 0)
+ atomic.Store(&netpollWakeSig, 0)
}
continue
}
var (
iocphandle uintptr = _INVALID_HANDLE_VALUE // completion port io handle
- netpollWakeSig uintptr // used to avoid duplicate calls of netpollBreak
+ netpollWakeSig uint32 // used to avoid duplicate calls of netpollBreak
)
func netpollinit() {
}
func netpollBreak() {
- if atomic.Casuintptr(&netpollWakeSig, 0, 1) {
+ 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")
}
handlecompletion(&toRun, op, errno, qty)
} else {
- atomic.Storeuintptr(&netpollWakeSig, 0)
+ atomic.Store(&netpollWakeSig, 0)
if delay == 0 {
// Forward the notification to the
// blocked poller.