mirror of
https://github.com/onyx-dot-app/onyx.git
synced 2026-10-22 11:22:49 -05:00
24 lines
395 B
Go
24 lines
395 B
Go
//go:build !windows
|
|
|
|
package devstack
|
|
|
|
import (
|
|
"errors"
|
|
"os"
|
|
"syscall"
|
|
)
|
|
|
|
var errWouldBlock = errors.New("lock held")
|
|
|
|
func tryFlock(f *os.File) error {
|
|
err := syscall.Flock(int(f.Fd()), syscall.LOCK_EX|syscall.LOCK_NB)
|
|
if errors.Is(err, syscall.EWOULDBLOCK) {
|
|
return errWouldBlock
|
|
}
|
|
return err
|
|
}
|
|
|
|
func unflock(f *os.File) error {
|
|
return syscall.Flock(int(f.Fd()), syscall.LOCK_UN)
|
|
}
|