~ knotless Search/
↑↓ move↵ open⇧↵ all results
0
0
main
29 lines · 398 B Raw History
//go:build unix

package hostos

import (
	"os"
	"syscall"
)

const (
	LockShared = syscall.LOCK_SH

	LockExclusive = syscall.LOCK_EX

	LockNonBlocking = syscall.LOCK_NB
)

func Lock(f *os.File, how int) error {
	for {
		err := syscall.Flock(int(f.Fd()), how)
		if err != syscall.EINTR {
			return err
		}
	}
}

func Unlock(f *os.File) error {
	return syscall.Flock(int(f.Fd()), syscall.LOCK_UN)
}