| // Copyright 2020 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. |
| |
| //go:build !goexperiment.staticlockranking |
| |
| package runtime |
| |
| const staticLockRanking = false |
| |
| // // lockRankStruct is embedded in mutex, but is empty when staticklockranking is |
| // disabled (the default) |
| type lockRankStruct struct { |
| } |
| |
| func lockInit(l *mutex, rank lockRank) { |
| } |
| |
| func getLockRank(l *mutex) lockRank { |
| return 0 |
| } |
| |
| func lockWithRank(l *mutex, rank lockRank) { |
| lock2(l) |
| } |
| |
| // This function may be called in nosplit context and thus must be nosplit. |
| // |
| //go:nosplit |
| func acquireLockRankAndM(rank lockRank) { |
| acquirem() |
| } |
| |
| func unlockWithRank(l *mutex) { |
| unlock2(l) |
| } |
| |
| // This function may be called in nosplit context and thus must be nosplit. |
| // |
| //go:nosplit |
| func releaseLockRankAndM(rank lockRank) { |
| releasem(getg().m) |
| } |
| |
| // This function may be called in nosplit context and thus must be nosplit. |
| // |
| //go:nosplit |
| func lockWithRankMayAcquire(l *mutex, rank lockRank) { |
| } |
| |
| //go:nosplit |
| func assertLockHeld(l *mutex) { |
| } |
| |
| //go:nosplit |
| func assertRankHeld(r lockRank) { |
| } |
| |
| //go:nosplit |
| func worldStopped() { |
| } |
| |
| //go:nosplit |
| func worldStarted() { |
| } |
| |
| //go:nosplit |
| func assertWorldStopped() { |
| } |
| |
| //go:nosplit |
| func assertWorldStoppedOrLockHeld(l *mutex) { |
| } |