2 .\" Copyright (c) 1996 Brian Somers <brian@awfulhak.demon.co.uk>
4 .\" All rights reserved.
6 .\" Redistribution and use in source and binary forms, with or without
7 .\" modification, are permitted provided that the following conditions
9 .\" 1. Redistributions of source code must retain the above copyright
10 .\" notice, this list of conditions and the following disclaimer.
11 .\" 2. Redistributions in binary form must reproduce the above copyright
12 .\" notice, this list of conditions and the following disclaimer in the
13 .\" documentation and/or other materials provided with the distribution.
15 .\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
16 .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
17 .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
18 .\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
19 .\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20 .\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21 .\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22 .\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24 .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 .\" $FreeBSD: src/lib/libutil/uucplock.3,v 1.13.2.4 2001/12/17 10:08:32 ru Exp $
27 .\" $DragonFly: src/lib/libutil/uucplock.3,v 1.2 2003/06/17 04:26:52 dillon Exp $
36 .Nd acquire and release control of a serial device
43 .Fn uu_lock "const char *ttyname"
45 .Fn uu_lock_txfr "const char *ttyname" "pid_t pid"
47 .Fn uu_unlock "const char *ttyname"
49 .Fn uu_lockerr "int uu_lockresult"
53 function attempts to create a lock file called
54 .Pa /var/spool/lock/LCK..
55 with a suffix given by the passed
57 If the file already exists, it is expected to contain the process
58 id of the locking program.
60 If the file does not already exist, or the owning process given by
61 the process id found in the lock file is no longer running,
63 will write its own process id into the file and return success.
66 transfers lock ownership to another process.
68 must have previously been successful.
71 removes the lockfile created by
75 Care should be taken that
77 was successful before calling
81 returns an error string representing the error
87 returns 0 on success and -1 on failure.
90 may return any of the following values:
93 The lock is in use by another process.
96 The lock was successfully created.
98 .Dv UU_LOCK_OPEN_ERR :
99 The lock file could not be opened via
102 .Dv UU_LOCK_READ_ERR :
103 The lock file could not be read via
106 .Dv UU_LOCK_CREAT_ERR :
107 Can't create temporary lock file via
110 .Dv UU_LOCK_WRITE_ERR :
111 The current process id could not be written to the lock file via a call to
114 .Dv UU_LOCK_LINK_ERR :
115 Can't link temporary lock file via
118 .Dv UU_LOCK_TRY_ERR :
119 Locking attempts are failed after 5 tries.
125 an empty string is returned.
126 Otherwise, a string specifying
127 the reason for failure is returned.
129 uses the current value of
131 to determine the exact error. Care should be made not to allow
133 to be changed between calls to
139 may return any of the following values:
142 The transfer was successful. The specified process now holds the device
145 .Dv UU_LOCK_OWNER_ERR :
146 The current process does not already own a lock on the specified device.
148 .Dv UU_LOCK_WRITE_ERR :
149 The new process id could not be written to the lock file via a call to
154 returns one of the error values above, the global value
156 can be used to determine the cause. Refer to the respective manual pages
160 will set the global variable
162 to reflect the reason that the lock file could not be removed.
163 Refer to the description of
172 It is possible that a stale lock is not recognised as such if a new
173 processes is assigned the same processes id as the program that left
176 The calling process must have write permissions to the
178 directory. There is no mechanism in place to ensure that the
179 permissions of this directory are the same as those of the
180 serial devices that might be locked.