// Copyright 2022 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 poll // Expose fdMutex for use by the os package on Plan 9. // On Plan 9 we don't want to use async I/O for file operations, // but we still want the locking semantics that fdMutex provides. // FDMutex is an exported fdMutex, only for Plan 9. type FDMutex struct { fdmu fdMutex } func (fdmu *FDMutex) Incref() bool { return fdmu.fdmu.incref() } func (fdmu *FDMutex) Decref() bool { return fdmu.fdmu.decref() } func (fdmu *FDMutex) IncrefAndClose() bool { return fdmu.fdmu.increfAndClose() } func (fdmu *FDMutex) ReadLock() bool { return fdmu.fdmu.rwlock(true) } func (fdmu *FDMutex) ReadUnlock() bool { return fdmu.fdmu.rwunlock(true) } func (fdmu *FDMutex) WriteLock() bool { return fdmu.fdmu.rwlock(false) } func (fdmu *FDMutex) WriteUnlock() bool { return fdmu.fdmu.rwunlock(false) }