summaryrefslogtreecommitdiffhomepage
path: root/pkg/tcpip
diff options
context:
space:
mode:
authorJamie Liu <jamieliu@google.com>2021-02-24 11:55:02 -0800
committergVisor bot <gvisor-bot@google.com>2021-02-24 11:56:56 -0800
commitba4dfa7172a00f8b104a75a4655fe3de1e4a94c9 (patch)
tree36b7f2f85e34cf12b89f91e9f48c5a0881fe2c98 /pkg/tcpip
parent8f6274404a87aa6adb2c8f322b9ee7aae2589fba (diff)
Move //pkg/gate.Gate to //pkg/sync.
- Use atomic add rather than CAS in every Gate method, which is slightly faster in most cases. - Implement Close wakeup using gopark/goready to avoid channel allocation. New benchmarks: name old time/op new time/op delta GateEnterLeave-12 16.7ns ± 1% 10.3ns ± 1% -38.44% (p=0.000 n=9+8) GateClose-12 50.2ns ± 8% 42.4ns ± 6% -15.44% (p=0.000 n=10+10) GateEnterLeaveAsyncClose-12 972ns ± 2% 640ns ± 7% -34.15% (p=0.000 n=9+10) PiperOrigin-RevId: 359336344
Diffstat (limited to 'pkg/tcpip')
-rw-r--r--pkg/tcpip/link/waitable/BUILD2
-rw-r--r--pkg/tcpip/link/waitable/waitable.go6
2 files changed, 4 insertions, 4 deletions
diff --git a/pkg/tcpip/link/waitable/BUILD b/pkg/tcpip/link/waitable/BUILD
index 9b4602c1b..b8d417b7d 100644
--- a/pkg/tcpip/link/waitable/BUILD
+++ b/pkg/tcpip/link/waitable/BUILD
@@ -9,7 +9,7 @@ go_library(
],
visibility = ["//visibility:public"],
deps = [
- "//pkg/gate",
+ "//pkg/sync",
"//pkg/tcpip",
"//pkg/tcpip/header",
"//pkg/tcpip/stack",
diff --git a/pkg/tcpip/link/waitable/waitable.go b/pkg/tcpip/link/waitable/waitable.go
index 20259b285..ce5113746 100644
--- a/pkg/tcpip/link/waitable/waitable.go
+++ b/pkg/tcpip/link/waitable/waitable.go
@@ -22,7 +22,7 @@
package waitable
import (
- "gvisor.dev/gvisor/pkg/gate"
+ "gvisor.dev/gvisor/pkg/sync"
"gvisor.dev/gvisor/pkg/tcpip"
"gvisor.dev/gvisor/pkg/tcpip/header"
"gvisor.dev/gvisor/pkg/tcpip/stack"
@@ -30,10 +30,10 @@ import (
// Endpoint is a waitable link-layer endpoint.
type Endpoint struct {
- dispatchGate gate.Gate
+ dispatchGate sync.Gate
dispatcher stack.NetworkDispatcher
- writeGate gate.Gate
+ writeGate sync.Gate
lower stack.LinkEndpoint
}