diff options
| author | Ian Lance Taylor <iant@golang.org> | 2017-02-10 14:59:38 -0800 |
|---|---|---|
| committer | Ian Lance Taylor <iant@golang.org> | 2017-02-13 18:36:28 +0000 |
| commit | 3792db518327c685da17ca6c6faa4e1d2da4c33c (patch) | |
| tree | 8d2456fa679526c8349a968aaf3cae09524aadfd /src/runtime | |
| parent | b548eee3d96fc0b6e962a243b28121e1f37ad792 (diff) | |
| download | go-3792db518327c685da17ca6c6faa4e1d2da4c33c.tar.xz | |
net: refactor poller into new internal/poll package
This will make it possible to use the poller with the os package.
This is a lot of code movement but the behavior is intended to be
unchanged.
Update #6817.
Update #7903.
Update #15021.
Update #18507.
Change-Id: I1413685928017c32df5654ded73a2643820977ae
Reviewed-on: https://go-review.googlesource.com/36799
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
Diffstat (limited to 'src/runtime')
| -rw-r--r-- | src/runtime/net_plan9.go | 4 | ||||
| -rw-r--r-- | src/runtime/netpoll.go | 32 | ||||
| -rw-r--r-- | src/runtime/netpoll_windows.go | 3 | ||||
| -rw-r--r-- | src/runtime/sema.go | 8 | ||||
| -rw-r--r-- | src/runtime/time.go | 4 | ||||
| -rw-r--r-- | src/runtime/trace/trace_stack_test.go | 1 |
6 files changed, 27 insertions, 25 deletions
diff --git a/src/runtime/net_plan9.go b/src/runtime/net_plan9.go index 10fd089aea..b1ac7c7887 100644 --- a/src/runtime/net_plan9.go +++ b/src/runtime/net_plan9.go @@ -8,12 +8,12 @@ import ( _ "unsafe" ) -//go:linkname runtime_ignoreHangup net.runtime_ignoreHangup +//go:linkname runtime_ignoreHangup internal/poll.runtime_ignoreHangup func runtime_ignoreHangup() { getg().m.ignoreHangup = true } -//go:linkname runtime_unignoreHangup net.runtime_unignoreHangup +//go:linkname runtime_unignoreHangup internal/poll.runtime_unignoreHangup func runtime_unignoreHangup(sig string) { getg().m.ignoreHangup = false } diff --git a/src/runtime/netpoll.go b/src/runtime/netpoll.go index 10a3c88a09..ac8d071045 100644 --- a/src/runtime/netpoll.go +++ b/src/runtime/netpoll.go @@ -81,8 +81,8 @@ var ( pollcache pollCache ) -//go:linkname net_runtime_pollServerInit net.runtime_pollServerInit -func net_runtime_pollServerInit() { +//go:linkname poll_runtime_pollServerInit internal/poll.runtime_pollServerInit +func poll_runtime_pollServerInit() { netpollinit() atomic.Store(&netpollInited, 1) } @@ -91,8 +91,8 @@ func netpollinited() bool { return atomic.Load(&netpollInited) != 0 } -//go:linkname net_runtime_pollOpen net.runtime_pollOpen -func net_runtime_pollOpen(fd uintptr) (*pollDesc, int) { +//go:linkname poll_runtime_pollOpen internal/poll.runtime_pollOpen +func poll_runtime_pollOpen(fd uintptr) (*pollDesc, int) { pd := pollcache.alloc() lock(&pd.lock) if pd.wg != 0 && pd.wg != pdReady { @@ -115,8 +115,8 @@ func net_runtime_pollOpen(fd uintptr) (*pollDesc, int) { return pd, int(errno) } -//go:linkname net_runtime_pollClose net.runtime_pollClose -func net_runtime_pollClose(pd *pollDesc) { +//go:linkname poll_runtime_pollClose internal/poll.runtime_pollClose +func poll_runtime_pollClose(pd *pollDesc) { if !pd.closing { throw("netpollClose: close w/o unblock") } @@ -137,8 +137,8 @@ func (c *pollCache) free(pd *pollDesc) { unlock(&c.lock) } -//go:linkname net_runtime_pollReset net.runtime_pollReset -func net_runtime_pollReset(pd *pollDesc, mode int) int { +//go:linkname poll_runtime_pollReset internal/poll.runtime_pollReset +func poll_runtime_pollReset(pd *pollDesc, mode int) int { err := netpollcheckerr(pd, int32(mode)) if err != 0 { return err @@ -151,8 +151,8 @@ func net_runtime_pollReset(pd *pollDesc, mode int) int { return 0 } -//go:linkname net_runtime_pollWait net.runtime_pollWait -func net_runtime_pollWait(pd *pollDesc, mode int) int { +//go:linkname poll_runtime_pollWait internal/poll.runtime_pollWait +func poll_runtime_pollWait(pd *pollDesc, mode int) int { err := netpollcheckerr(pd, int32(mode)) if err != 0 { return err @@ -173,16 +173,16 @@ func net_runtime_pollWait(pd *pollDesc, mode int) int { return 0 } -//go:linkname net_runtime_pollWaitCanceled net.runtime_pollWaitCanceled -func net_runtime_pollWaitCanceled(pd *pollDesc, mode int) { +//go:linkname poll_runtime_pollWaitCanceled internal/poll.runtime_pollWaitCanceled +func poll_runtime_pollWaitCanceled(pd *pollDesc, mode int) { // This function is used only on windows after a failed attempt to cancel // a pending async IO operation. Wait for ioready, ignore closing or timeouts. for !netpollblock(pd, int32(mode), true) { } } -//go:linkname net_runtime_pollSetDeadline net.runtime_pollSetDeadline -func net_runtime_pollSetDeadline(pd *pollDesc, d int64, mode int) { +//go:linkname poll_runtime_pollSetDeadline internal/poll.runtime_pollSetDeadline +func poll_runtime_pollSetDeadline(pd *pollDesc, d int64, mode int) { lock(&pd.lock) if pd.closing { unlock(&pd.lock) @@ -251,8 +251,8 @@ func net_runtime_pollSetDeadline(pd *pollDesc, d int64, mode int) { } } -//go:linkname net_runtime_pollUnblock net.runtime_pollUnblock -func net_runtime_pollUnblock(pd *pollDesc) { +//go:linkname poll_runtime_pollUnblock internal/poll.runtime_pollUnblock +func poll_runtime_pollUnblock(pd *pollDesc) { lock(&pd.lock) if pd.closing { throw("netpollUnblock: already closing") diff --git a/src/runtime/netpoll_windows.go b/src/runtime/netpoll_windows.go index 7ad115850d..32c120c4c3 100644 --- a/src/runtime/netpoll_windows.go +++ b/src/runtime/netpoll_windows.go @@ -12,7 +12,8 @@ const _DWORD_MAX = 0xffffffff const _INVALID_HANDLE_VALUE = ^uintptr(0) -// net_op must be the same as beginning of net.operation. Keep these in sync. +// net_op must be the same as beginning of internal/poll.operation. +// Keep these in sync. type net_op struct { // used by windows o overlapped diff --git a/src/runtime/sema.go b/src/runtime/sema.go index 4046311703..5b9a264ebd 100644 --- a/src/runtime/sema.go +++ b/src/runtime/sema.go @@ -61,8 +61,8 @@ func sync_runtime_Semacquire(addr *uint32) { semacquire(addr, semaBlockProfile) } -//go:linkname net_runtime_Semacquire net.runtime_Semacquire -func net_runtime_Semacquire(addr *uint32) { +//go:linkname poll_runtime_Semacquire internal/poll.runtime_Semacquire +func poll_runtime_Semacquire(addr *uint32) { semacquire(addr, semaBlockProfile) } @@ -76,8 +76,8 @@ func sync_runtime_SemacquireMutex(addr *uint32) { semacquire(addr, semaBlockProfile|semaMutexProfile) } -//go:linkname net_runtime_Semrelease net.runtime_Semrelease -func net_runtime_Semrelease(addr *uint32) { +//go:linkname poll_runtime_Semrelease internal/poll.runtime_Semrelease +func poll_runtime_Semrelease(addr *uint32) { semrelease(addr) } diff --git a/src/runtime/time.go b/src/runtime/time.go index a095ec04fd..c296338e9b 100644 --- a/src/runtime/time.go +++ b/src/runtime/time.go @@ -292,8 +292,8 @@ func siftdownTimer(i int) { // Entry points for net, time to call nanotime. -//go:linkname net_runtimeNano net.runtimeNano -func net_runtimeNano() int64 { +//go:linkname poll_runtimeNano internal/poll.runtimeNano +func poll_runtimeNano() int64 { return nanotime() } diff --git a/src/runtime/trace/trace_stack_test.go b/src/runtime/trace/trace_stack_test.go index f8abf66500..d6a3858b91 100644 --- a/src/runtime/trace/trace_stack_test.go +++ b/src/runtime/trace/trace_stack_test.go @@ -231,6 +231,7 @@ func TestTraceSymbolize(t *testing.T) { if runtime.GOOS != "windows" && runtime.GOOS != "plan9" { want = append(want, []eventDesc{ {trace.EvGoBlockNet, []frame{ + {"internal/poll.(*FD).Accept", 0}, {"net.(*netFD).accept", 0}, {"net.(*TCPListener).accept", 0}, {"net.(*TCPListener).Accept", 0}, |
