Skip to content

Commit

Permalink
runtime: replace the type of netpollWakeSig from a uintptr to a uint32
Browse files Browse the repository at this point in the history
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 <[email protected]>
TryBot-Result: Gobot Gobot <[email protected]>
Reviewed-by: Ian Lance Taylor <[email protected]>
  • Loading branch information
panjf2000 authored and ianlancetaylor committed Apr 10, 2020
1 parent 7b90c1c commit 245409e
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 15 deletions.
6 changes: 3 additions & 3 deletions src/runtime/netpoll_aix.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ var (
wrwake int32
pendingUpdates int32

netpollWakeSig uintptr // used to avoid duplicate calls of netpollBreak
netpollWakeSig uint32 // used to avoid duplicate calls of netpollBreak
)

func netpollinit() {
Expand Down Expand Up @@ -135,7 +135,7 @@ func netpollarm(pd *pollDesc, mode int) {

// 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)
}
Expand Down Expand Up @@ -192,7 +192,7 @@ retry:
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.
Expand Down
6 changes: 3 additions & 3 deletions src/runtime/netpoll_epoll.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ var (

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() {
Expand Down Expand Up @@ -79,7 +79,7 @@ func netpollarm(pd *pollDesc, mode int) {

// 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)
Expand Down Expand Up @@ -154,7 +154,7 @@ retry:
// 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
}
Expand Down
6 changes: 3 additions & 3 deletions src/runtime/netpoll_kqueue.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ var (

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() {
Expand Down Expand Up @@ -83,7 +83,7 @@ func netpollarm(pd *pollDesc, mode int) {

// 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)
Expand Down Expand Up @@ -152,7 +152,7 @@ retry:
// 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
}
Expand Down
6 changes: 3 additions & 3 deletions src/runtime/netpoll_solaris.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ var (
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 {
Expand Down Expand Up @@ -191,7 +191,7 @@ func netpollarm(pd *pollDesc, mode int) {

// 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.
Expand Down Expand Up @@ -274,7 +274,7 @@ retry:
println("runtime: port_alert failed with", e)
throw("runtime: netpoll: port_alert failed")
}
atomic.Storeuintptr(&netpollWakeSig, 0)
atomic.Store(&netpollWakeSig, 0)
}
continue
}
Expand Down
6 changes: 3 additions & 3 deletions src/runtime/netpoll_windows.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ type overlappedEntry struct {
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() {
Expand Down Expand Up @@ -67,7 +67,7 @@ func netpollarm(pd *pollDesc, mode int) {
}

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")
Expand Down Expand Up @@ -133,7 +133,7 @@ func netpoll(delay int64) gList {
}
handlecompletion(&toRun, op, errno, qty)
} else {
atomic.Storeuintptr(&netpollWakeSig, 0)
atomic.Store(&netpollWakeSig, 0)
if delay == 0 {
// Forward the notification to the
// blocked poller.
Expand Down

0 comments on commit 245409e

Please sign in to comment.