github.com/JimmyHuang454/JLS-go@v0.0.0-20230831150107-90d536585ba0/internal/poll/file_plan9.go (about) 1 // Copyright 2022 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package poll 6 7 // Expose fdMutex for use by the os package on Plan 9. 8 // On Plan 9 we don't want to use async I/O for file operations, 9 // but we still want the locking semantics that fdMutex provides. 10 11 // FDMutex is an exported fdMutex, only for Plan 9. 12 type FDMutex struct { 13 fdmu fdMutex 14 } 15 16 func (fdmu *FDMutex) Incref() bool { 17 return fdmu.fdmu.incref() 18 } 19 20 func (fdmu *FDMutex) Decref() bool { 21 return fdmu.fdmu.decref() 22 } 23 24 func (fdmu *FDMutex) IncrefAndClose() bool { 25 return fdmu.fdmu.increfAndClose() 26 } 27 28 func (fdmu *FDMutex) ReadLock() bool { 29 return fdmu.fdmu.rwlock(true) 30 } 31 32 func (fdmu *FDMutex) ReadUnlock() bool { 33 return fdmu.fdmu.rwunlock(true) 34 } 35 36 func (fdmu *FDMutex) WriteLock() bool { 37 return fdmu.fdmu.rwlock(false) 38 } 39 40 func (fdmu *FDMutex) WriteUnlock() bool { 41 return fdmu.fdmu.rwunlock(false) 42 }