summaryrefslogtreecommitdiffstats
path: root/man3/lockf.3
diff options
context:
space:
mode:
Diffstat (limited to 'man3/lockf.3')
-rw-r--r--man3/lockf.3124
1 files changed, 124 insertions, 0 deletions
diff --git a/man3/lockf.3 b/man3/lockf.3
new file mode 100644
index 000000000..58b4e7544
--- /dev/null
+++ b/man3/lockf.3
@@ -0,0 +1,124 @@
+.\" Copyright 1997 Nicolás Lichtmaier <nick@debian.org>
+.\" Created Thu Aug 7 00:44:00 ART 1997
+.\"
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+.\" GNU General Public License for more details.
+.\"
+.\" Added section stuff, aeb, 2002-04-22.
+.\" Corrected include file, drepper, 2003-06-15.
+.\"
+.TH LOCKF 3 2002-04-22 "Linux 2.0" "Linux Programmer's Manual"
+.SH NAME
+lockf \- apply, test or remove a POSIX lock on an open file
+.SH SYNOPSIS
+.B #include <unistd.h>
+.sp
+.BR "int lockf(int " fd ", int " cmd ", off_t " len );
+.SH DESCRIPTION
+Apply, test or remove a POSIX lock on a section of an open file.
+The file is specified by
+.IR fd ,
+a file descriptor open for writing, the action by
+.IR cmd ,
+and the section consists of byte positions
+.IR pos .. pos + len -1
+if len is positive, and
+.IR pos - len .. pos -1
+if len is negative, where
+.I pos
+is the current file position, and if
+.I len
+is zero, the section extends from the current file position to
+infinity, encompassing the present and future end-of-file positions.
+In all cases, the section may extend past current end-of-file.
+.LP
+On Linux, this call is just an interface for
+.BR fcntl (2).
+(In general, the relation between
+.B lockf
+and
+.B fcntl
+is unspecified.)
+.LP
+Valid operations are given below:
+.TP
+.B F_LOCK
+Set an exclusive lock on the specified section of the file.
+If (part of) this section is already locked, the call
+blocks until the previous lock is released.
+If this section overlaps an earlier locked section,
+both are merged.
+File locks are released as soon as the process holding the locks
+closes some file descriptor for the file. A child process does not
+inherit these locks.
+.TP
+.B F_TLOCK
+Same as
+.B F_LOCK
+but the call never blocks and returns an error instead if the file is
+already locked.
+.TP
+.B F_ULOCK
+Unlock the indicated section of the file.
+This may cause a locked section to be split into two locked sections.
+.TP
+.B F_TEST
+Test the lock: return 0 if the specified section
+is unlocked or locked by this process; return \-1, set
+.I errno
+to
+.BR EACCES ,
+if another process holds a lock.
+.SH "RETURN VALUE"
+On success, zero is returned. On error, \-1 is returned, and
+.I errno
+is set appropriately.
+.SH ERRORS
+.TP
+.B EAGAIN
+The file is locked and
+.B F_TLOCK
+or
+.B F_TEST
+was specified, or the operation is prohibited because the file has
+been memory-mapped by another process.
+.TP
+.B EBADF
+.I fd
+is not an open file descriptor.
+.TP
+.B EDEADLK
+The command was
+.B T_LOCK
+and this lock operation would cause a deadlock.
+.TP
+.B EINVAL
+An invalid operation was specified in
+.IR fd .
+.TP
+.B ENOLCK
+Too many segment locks open, lock table is full.
+.SH "CONFORMING TO"
+SYSV, POSIX 1003.1-2001
+.SH "SEE ALSO"
+.BR fcntl (2),
+.BR flock (2)
+.br
+There are also
+.I locks.txt
+and
+.I mandatory.txt
+in
+.IR /usr/src/linux/Documentation .