blob: 57dc0c668f1d8479a78a98ce17e6ed9b7187c834 [file] [log] [blame]
// 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)
}