locked.go 604 B

1234567891011121314151617181920212223242526272829303132
  1. // Copyright (c) Tailscale Inc & contributors
  2. // SPDX-License-Identifier: BSD-3-Clause
  3. package syncs
  4. import (
  5. "sync"
  6. )
  7. // AssertLocked panics if m is not locked.
  8. func AssertLocked(m *Mutex) {
  9. if m.TryLock() {
  10. m.Unlock()
  11. panic("mutex is not locked")
  12. }
  13. }
  14. // AssertRLocked panics if rw is not locked for reading or writing.
  15. func AssertRLocked(rw *RWMutex) {
  16. if rw.TryLock() {
  17. rw.Unlock()
  18. panic("mutex is not locked")
  19. }
  20. }
  21. // AssertWLocked panics if rw is not locked for writing.
  22. func AssertWLocked(rw *sync.RWMutex) {
  23. if rw.TryRLock() {
  24. rw.RUnlock()
  25. panic("mutex is not rlocked")
  26. }
  27. }