summaryrefslogtreecommitdiffstats
path: root/src/sync/export_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/sync/export_test.go')
-rw-r--r--src/sync/export_test.go57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/sync/export_test.go b/src/sync/export_test.go
new file mode 100644
index 0000000..ffbe567
--- /dev/null
+++ b/src/sync/export_test.go
@@ -0,0 +1,57 @@
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package sync
+
+// Export for testing.
+var Runtime_Semacquire = runtime_Semacquire
+var Runtime_Semrelease = runtime_Semrelease
+var Runtime_procPin = runtime_procPin
+var Runtime_procUnpin = runtime_procUnpin
+
+// poolDequeue testing.
+type PoolDequeue interface {
+ PushHead(val interface{}) bool
+ PopHead() (interface{}, bool)
+ PopTail() (interface{}, bool)
+}
+
+func NewPoolDequeue(n int) PoolDequeue {
+ d := &poolDequeue{
+ vals: make([]eface, n),
+ }
+ // For testing purposes, set the head and tail indexes close
+ // to wrapping around.
+ d.headTail = d.pack(1<<dequeueBits-500, 1<<dequeueBits-500)
+ return d
+}
+
+func (d *poolDequeue) PushHead(val interface{}) bool {
+ return d.pushHead(val)
+}
+
+func (d *poolDequeue) PopHead() (interface{}, bool) {
+ return d.popHead()
+}
+
+func (d *poolDequeue) PopTail() (interface{}, bool) {
+ return d.popTail()
+}
+
+func NewPoolChain() PoolDequeue {
+ return new(poolChain)
+}
+
+func (c *poolChain) PushHead(val interface{}) bool {
+ c.pushHead(val)
+ return true
+}
+
+func (c *poolChain) PopHead() (interface{}, bool) {
+ return c.popHead()
+}
+
+func (c *poolChain) PopTail() (interface{}, bool) {
+ return c.popTail()
+}