From 9803784ca462e1a70f36c59b5d3364f052e67d9d Mon Sep 17 00:00:00 2001 From: Nuno Cruces Date: Sun, 29 Jan 2023 02:44:10 +0000 Subject: [PATCH] macOS OFD locks. --- vfs_unix.go | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/vfs_unix.go b/vfs_unix.go index 0c04663..614ecc2 100644 --- a/vfs_unix.go +++ b/vfs_unix.go @@ -161,16 +161,26 @@ func (l *vfsFileLocker) CheckReservedLock() (bool, xErrorCode) { func (l *vfsFileLocker) fcntlGetLock(lock *syscall.Flock_t) error { F_GETLK := syscall.F_GETLK - if runtime.GOOS == "linux" { + switch runtime.GOOS { + case "linux": + // https://github.com/torvalds/linux/blob/master/include/uapi/asm-generic/fcntl.h F_GETLK = 36 // F_OFD_GETLK + case "darwin": + // https://github.com/apple/darwin-xnu/blob/main/bsd/sys/fcntl.h + F_GETLK = 92 // F_OFD_GETLK } return syscall.FcntlFlock(l.Fd(), F_GETLK, lock) } func (l *vfsFileLocker) fcntlSetLock(lock *syscall.Flock_t) error { F_SETLK := syscall.F_SETLK - if runtime.GOOS == "linux" { + switch runtime.GOOS { + case "linux": + // https://github.com/torvalds/linux/blob/master/include/uapi/asm-generic/fcntl.h F_SETLK = 37 // F_OFD_SETLK + case "darwin": + // https://github.com/apple/darwin-xnu/blob/main/bsd/sys/fcntl.h + F_SETLK = 90 // F_OFD_SETLK } return syscall.FcntlFlock(l.Fd(), F_SETLK, lock) }