This manual page describes the interface to the AtFS locking
mechanism. Locks are used to avoid conflicting updates to one object
history. After a user has reserved the update rights, no other
user may add new versions to the reserved history.
Reserving the update rights happens by locking the most recent
version of the history.
As AtFS allows adding new versions to each generation in a history,
each generation may be locked separately. Reserving
update rights for old generations (with generation numbers smaller
than the newest generation) are performed by locking the most recent
version of the corresponding generation.
Removing an ASO (af_rm - manual page af_files(3)) and changing an
ASO's version number (af_svnum - manual page af_version(3)) also
requires a lock on the corresponding ASO.
af_lock reserves the update permission for the user identified
by locker. On successful completion, a buffer identical to
locker is returned, a NULL pointer otherwise.
af_unlock cancels a formerly established reservation of update
rights. Only the owner or the locker of an ASO (identified
by the Af_user structure that was given to the corresponding call of
af_lock) are allowed to do this. On successful completion,
af_unlock returns a buffer containing the identification of the
former locker. This may be empty, if the ASO was not locked.
Upon error, a NULL pointer is returned.
af_testlock returns a buffer containing an identification of the
current locker of the specified ASO. It returns an empty buffer, if no
lock is set.