EACCES
or EAGAIN
Operation is prohibited by locks held by other processes.
EAGAIN
The operation is prohibited because the file has been
memory-mapped by another process.
EBADF
fd is not an open file descriptor
EBADF
cmd is F_SETLK
or F_SETLKW
and the file descriptor open
mode doesn't match with the type of lock requested.
EBUSY
cmd is F_SETPIPE_SZ
and the new pipe capacity specified in
arg is smaller than the amount of buffer space currently
used to store data in the pipe.
EBUSY
cmd is F_ADD_SEALS
, arg includes F_SEAL_WRITE
, and there
exists a writable, shared mapping on the file referred to
by fd.
EDEADLK
It was detected that the specified F_SETLKW
command would
cause a deadlock.
EFAULT
lock is outside your accessible address space.
EINTR
cmd is F_SETLKW
or F_OFD_SETLKW
and the operation was
interrupted by a signal; see signal(7).
EINTR
cmd is F_GETLK
, F_SETLK
, F_OFD_GETLK
, or F_OFD_SETLK
, and
the operation was interrupted by a signal before the lock
was checked or acquired. Most likely when locking a
remote file (e.g., locking over NFS), but can sometimes
happen locally.
EINVAL
The value specified in cmd is not recognized by this
kernel.
EINVAL
cmd is F_ADD_SEALS
and arg includes an unrecognized
sealing bit.
EINVAL
cmd is F_ADD_SEALS
or F_GET_SEALS
and the filesystem
containing the inode referred to by fd does not support
sealing.
EINVAL
cmd is F_DUPFD
and arg is negative or is greater than the
maximum allowable value (see the discussion of
RLIMIT_NOFILE
in getrlimit(2)).
EINVAL
cmd is F_SETSIG
and arg is not an allowable signal number.
EINVAL
cmd is F_OFD_SETLK
, F_OFD_SETLKW
, or F_OFD_GETLK
, and
l_pid was not specified as zero.
EMFILE
cmd is F_DUPFD
and the per-process limit on the number of
open file descriptors has been reached.
ENOLCK
Too many segment locks open, lock table is full, or a
remote locking protocol failed (e.g., locking over NFS).
ENOTDIR
F_NOTIFY
was specified in cmd, but fd does not refer to a
directory.
EPERM
cmd is F_SETPIPE_SZ
and the soft or hard user pipe limit
has been reached; see pipe(7).
EPERM
Attempted to clear the O_APPEND
flag on a file that has
the append-only attribute set.
EPERM
cmd was F_ADD_SEALS
, but fd was not open for writing or
the current set of seals on the file already includes
F_SEAL_SEAL
.