summaryrefslogtreecommitdiff
path: root/lib/libc_r/man/flockfile.3
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc_r/man/flockfile.3')
-rw-r--r--lib/libc_r/man/flockfile.3112
1 files changed, 112 insertions, 0 deletions
diff --git a/lib/libc_r/man/flockfile.3 b/lib/libc_r/man/flockfile.3
new file mode 100644
index 00000000000..80602c5584b
--- /dev/null
+++ b/lib/libc_r/man/flockfile.3
@@ -0,0 +1,112 @@
+.\" $OpenBSD: flockfile.3,v 1.1 1998/08/27 09:00:34 d Exp $
+.Dd August 20, 1998
+.Os Ox
+.Dt FLOCKFILE 3
+.Sh NAME
+.Nm flockfile ,
+.Nm ftrylockfile ,
+.Nm funlockfile
+.Nd application level locking of stdio files
+.Sh SYNOPSIS
+.Fd #include <stdio.h>
+.Ft void
+.Fn flockfile "FILE *file"
+.Ft int
+.Fn ftrylockfile "FILE *file"
+.Ft void
+.Fn funlockfile "FILE *file"
+.Sh DESCRIPTION
+The
+.Fn flockfile ,
+.Fn ftrylockfile ,
+and
+.Fn funlockfile
+functions provide for explicit application-level locking of stdio
+.Ft "FILE *"
+objects. These functions can be used by a thread to delineate a sequence
+of I/O statements that are to be executed as a unit.
+.Pp
+The
+.Fn flockfile
+function is used by a thread to acquire ownership of a
+.Ft "FILE *"
+object.
+.Pp
+The
+.Fn ftrylockfile
+function is used by a thread to acquire ownership of a
+.Ft "FILE *"
+object if the object is available;
+.Fn ftrylockfile
+is a non-blocking version of
+.Fn flockfile .
+.Pp
+The
+.Fn funlockfile
+function is used to relinquish the ownership granted to the thread.
+The behaviour is undefined if a thread other than the current owner calls the
+.Fn funlockfile
+function.
+.Pp
+Logically, there is a lock count associated with each
+.Ft "FILE *"
+object. This count is implicitly intialized to zero when the
+.Ft "FILE *"
+object is created. The
+.Ft "FILE *"
+object is unlocked when the count is zero.
+When the count is positive, a single thread owns the
+.Ft "FILE *"
+object. When the
+.Fn flockfile
+function is called, if the count is zero or if the count is positive and
+the caller owns the
+.Ft "FILE *"
+object, the count is incremented.
+Otherwise, the calling thread is suspended, waiting for the count to
+return to zero.
+Each call to
+.Fn funlockfile
+decrements the count. This allows matching calls to
+.Fn flockfile
+(or sucessful calls to
+.Fn ftrylockfile )
+and
+.Fn funlockfile
+to be nested.
+.Pp
+Library functions that reference
+.Ft "FILE *"
+behave as if they use
+.Fn flockfile
+and
+.Fn funlockfile
+internally to obtain ownership of these
+.Ft "FILE *"
+objects.
+.Sh RETURN VALUES
+None for
+.Fn flockfile
+and
+.Fn funlockfile .
+The function
+.Fn ftrylock
+returns zero for success and non-zero to indicate that the lock cannot
+be acquired.
+.Sh ERRORS
+None.
+.Sh SEE ALSO
+.Xr getc_unlocked 3 ,
+.Xr getchar_unlocked 3 ,
+.Xr putc_unlocked 3 ,
+.Xr putchar_unlocked 3 ,
+.Xr pthreads 3
+.Sh STANDARDS
+.Fn flockfile ,
+.Fn ftrylockfile
+and
+.Fn funlockfile
+conform to ISO/IEC 9945-1 ANSI/IEEE
+.Pq Dq Tn POSIX
+Std 1003.1c/D10.
+.\" Std 1003.1 Second Edition 1996-07-12.