Open System Services System Calls Reference Manual (G06.29+, H06.08+, J06.03+)

PUT_LOCKFILE(2) OSS System Calls Reference Manual
To use this function in a 32-bit application on systems running H06.24 or later RVUs or J06.13 or
later RVUs, perform the same tasks (described above) used to enable the function on systems
running H06.21/J06.10 or later RVUs.
To use this function in a 64-bit application on systems running H06.24 or later RVUs or J06.13 or
later RVUs, you must perform all of the following tasks:
Include the pthread.h header file in the application.
Compile the application using the _PUT_MODEL_ feature test macro or equivalent
compiler command option.
Compile the application using the -Wlp64 compiler command option.
Link the application to the yputdll library (/G/system/zdllnnn/yputdll).
Considerations
Record locking versus file locking
A call to PUT_LOCKFILE() is not equivalent to locking all records in a file;
that is, locking all records still allows insertion of new records, but file locking
does not. File locks and record locks are queued in the order in which they are
issued.
Nowait and PUT_LOCKFILE()
If the PUT_LOCKFILE() function is used to initiate an operation with a file
opened for nowait I/O, it must complete with a corresponding call to the Guar-
dian AWAITIO procedure.
Locking modes
Default mode If the file is already locked by another user when
PUT_LOCKFILE() is called, the process requesting the lock is
suspended and queued in a locking queue behind other users try-
ing to access the file. When the file becomes unlocked, the user
at the head of the locking queue is granted access to the file. If
the user at the head of the locking queue is requesting a lock, the
user is granted the lock and resumes execution. If the user at the
head of the locking queue is requesting a read, the read opera-
tion continues to completion.
Alternate mode If the file is already locked by another user when the call to
PUT_LOCKFILE() is made, the lock request is rejected, and
the call to PUT_LOCKFILE() completes immediately with
Guardian file-system error 73 (file is locked). The alter-
nate locking mode is specified by calling the
PUT_SETMODE() procedure and specifying function 4.
Locks and open files (applies to nonaudited files only)
Locks are granted on a file open (that is, on a file number) basis. Therefore, if a
process has multiple opens of the same file, a lock of one file number excludes
access to the file through other file numbers.
Attempting to read a locked file in default locking mode
If the default locking mode is in effect when a call to PUT_READX() or
PUT_READUPDATEX() is made for a file that is locked by another user, the
caller of PUT_READX( ) or PUT_READUPDATEX() is suspended and
queued in the locking queue behind other users attempting to access the file.
5226 Hewlett-Packard Company 527186-023