]> git.saurik.com Git - apple/libc.git/blobdiff - gen/FreeBSD/lockf.3
Libc-594.1.4.tar.gz
[apple/libc.git] / gen / FreeBSD / lockf.3
index 7041fe234dbdf8a6cd60848db47df112b431bc7c..bf6b7b1ca6230eec08072ee2455fd993a00d50b5 100644 (file)
@@ -34,7 +34,7 @@
 .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 .\" POSSIBILITY OF SUCH DAMAGE.
 .\"
-.\" $FreeBSD: src/lib/libc/gen/lockf.3,v 1.11 2002/12/18 10:13:54 ru Exp $
+.\" $FreeBSD: src/lib/libc/gen/lockf.3,v 1.13 2004/07/02 23:52:10 ru Exp $
 .\"
 .Dd December 19, 1997
 .Dt LOCKF 3
@@ -102,7 +102,8 @@ unlocked.
 The section to be locked or unlocked starts at the current
 offset in the file and extends forward for a positive size or backward
 for a negative size (the preceding bytes up to but not including the
-current offset). However, it is not permitted to lock a section that
+current offset).
+However, it is not permitted to lock a section that
 starts or extends before the beginning of the file.
 If
 .Fa size
@@ -142,7 +143,8 @@ controlled by the process.
 Locked sections will be unlocked starting
 at the current file offset through
 .Fa size
-bytes or to the end of file if size is 0. When all of a locked section
+bytes or to the end of file if size is 0.
+When all of a locked section
 is not released (that is, when the beginning or end of the area to be
 unlocked falls within a locked section), the remaining portions of
 that section are still locked by the process.
@@ -160,23 +162,37 @@ the requested section is the maximum value for an object of type
 off_t, when the process has an existing lock in which size is 0 and
 which includes the last byte of the requested section, will be treated
 as a request to unlock from the start of the requested section with a
-size equal to 0. Otherwise an
+size equal to 0.
+Otherwise an
 .Dv F_ULOCK
 request will attempt to unlock only the requested section.
 .Pp
 A potential for deadlock occurs if a process controlling a locked
 region is put to sleep by attempting to lock the locked region of
-another process.  This implementation detects that sleeping until a
+another process.
+This implementation detects that sleeping until a
 locked region is unlocked would cause a deadlock and fails with an
 .Er EDEADLK
 error.
 .Pp
 The
 .Fn lockf ,
-.Xr fcntl 2
+.Xr fcntl 2 ,
 and
 .Xr flock 2
-locks may be safely used concurrently.
+locks are compatible.
+Processes using different locking interfaces can cooperate
+over the same file safely.
+However, only one of such interfaces should be used within
+the same process.
+If a file is locked by a process through
+.Xr flock 2 ,
+any record within the file will be seen as locked
+from the viewpoint of another process using
+.Xr fcntl 2
+or
+.Fn lockf ,
+and vice versa.
 .Pp
 Blocking on a section is interrupted by any signal.
 .Sh RETURN VALUES