| // 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 | |
| import "unsafe" | |
| // defined in package runtime | |
| // Semacquire waits until *s > 0 and then atomically decrements it. | |
| // It is intended as a simple sleep primitive for use by the synchronization | |
| // library and should not be used directly. | |
| func runtime_Semacquire(s *uint32) | |
| // SemacquireWaitGroup is like Semacquire, but for WaitGroup.Wait. | |
| func runtime_SemacquireWaitGroup(s *uint32, synctestDurable bool) | |
| // Semacquire(RW)Mutex(R) is like Semacquire, but for profiling contended | |
| // Mutexes and RWMutexes. | |
| // If lifo is true, queue waiter at the head of wait queue. | |
| // skipframes is the number of frames to omit during tracing, counting from | |
| // runtime_SemacquireMutex's caller. | |
| // The different forms of this function just tell the runtime how to present | |
| // the reason for waiting in a backtrace, and is used to compute some metrics. | |
| // Otherwise they're functionally identical. | |
| func runtime_SemacquireRWMutexR(s *uint32, lifo bool, skipframes int) | |
| func runtime_SemacquireRWMutex(s *uint32, lifo bool, skipframes int) | |
| // Semrelease atomically increments *s and notifies a waiting goroutine | |
| // if one is blocked in Semacquire. | |
| // It is intended as a simple wakeup primitive for use by the synchronization | |
| // library and should not be used directly. | |
| // If handoff is true, pass count directly to the first waiter. | |
| // skipframes is the number of frames to omit during tracing, counting from | |
| // runtime_Semrelease's caller. | |
| func runtime_Semrelease(s *uint32, handoff bool, skipframes int) | |
| // See runtime/sema.go for documentation. | |
| func runtime_notifyListAdd(l *notifyList) uint32 | |
| // See runtime/sema.go for documentation. | |
| func runtime_notifyListWait(l *notifyList, t uint32) | |
| // See runtime/sema.go for documentation. | |
| func runtime_notifyListNotifyAll(l *notifyList) | |
| // See runtime/sema.go for documentation. | |
| func runtime_notifyListNotifyOne(l *notifyList) | |
| // Ensure that sync and runtime agree on size of notifyList. | |
| func runtime_notifyListCheck(size uintptr) | |
| func init() { | |
| var n notifyList | |
| runtime_notifyListCheck(unsafe.Sizeof(n)) | |
| } | |
| func throw(string) | |
| func fatal(string) | |