1fullock(3) FULLOCK fullock(3)
2
3
4
6 fullock - Fast User Level LOCK (FULLOCK) library for C/C++
7
9 Please see fullock.h for full description.
10
12 fullock is an open-source software for user level lock library sup‐
13 ported by Yahoo! JAPAN. It runs on user level and provides two types
14 lock. One is a shared reader/writer lock which has the same function‐
15 ality with pthread_rwlock. Another is a shared mutex lock which also
16 has the same functionality with pthread_mutex.
17
18 Here is primary fullock features:
19
20 1. fullock is a thread safety library which can be used for multi-
21 processing as well as for multi-threading.
22
23 2. fullock releases a mutex lock safely even if a lock owner
24 process exit with 0 in which case OS doesn't release the lock.
25
26 3. fullock provides a shared reader/writer lock. A lock owner
27 thread can get another lock again without deadlock.
28
29 Please visit our website and get more details at:
30
31 https://github.com/yahoojapan/fullock
32
34 FULLOCK provides following programming interface:
35
36 void fullock_print_version(...)
37 bool fullock_set_no_robust(...)
38 bool fullock_set_low_robust(...)
39 bool fullock_set_high_robust(...)
40 bool fullock_set_noretry_allow_nomap(...)
41 bool fullock_set_noretry_deny_nomap(...)
42 bool fullock_set_retry_allow_nomap(...)
43 bool fullock_set_retry_deny_nomap(...)
44 bool fullock_set_no_freeunit(...)
45 bool fullock_set_fd_freeunit(...)
46 bool fullock_set_offset_freeunit(...)
47 bool fullock_set_robust_check_count(...)
48 bool fullock_reinitialize(...)
49 bool fullock_reinitialize_ex(...)
50 int fullock_mutex_lock(...)
51 int fullock_mutex_trylock(...)
52 int fullock_mutex_timedlock(...)
53 int fullock_mutex_unlock(...)
54 int fullock_rwlock_rdlock(...)
55 int fullock_rwlock_tryrdlock(...)
56 int fullock_rwlock_timedrdlock(...)
57 int fullock_rwlock_wrlock(...)
58 int fullock_rwlock_trywrlock(...)
59 int fullock_rwlock_timedwrlock(...)
60 int fullock_rwlock_unrwlock(...)
61 bool fullock_rwlock_islocked(...)
62 int fullock_cond_timedwait(...)
63 int fullock_cond_wait(...)
64 int fullock_cond_signal(...)
65 int fullock_cond_broadcast(...)
66
67
69 fullock uses useful environments for debug that change its behaviour.
70
71 FLCKDBGMODE specifies debugging level: INFO/WAN/ERR/SILENT
72
73 FLCKDBGFILE output file path for message(default: stderr)
74
75 FLCKAUTOINIT specify YES/NO, if this environment has YES, ful‐
76 lock does not initialize shared memory file. This
77 environment is for debugging.
78
79 FLCKROBUSTMODE specify NO/LOW/HIGH for robust mode.
80
81 FLCKNOMAPMODE specify ALLOW(ALLOW_NORETRY) / DENY(DENY_NORETRY) /
82 ALLOW_RETRY / DENY_RETRY for fault tolerant. This
83 value determines the behavior of the case can not
84 be mapped.
85
86 FLCKFREEUNITMODE specify NO/FD/OFFSET/ALWAYS, it specifies the open
87 method of unit management area to be used in the
88 reader/writer lock.
89
90 FLCKROBUSTCHKCNT If fullock is operating in a high robust mode, this
91 value sets the processing frequency for the dead‐
92 lock detection.
93
94 FLCKUMASK specify umask for the shared memory file which is
95 made by fullock.
96
97 FLCKDIRPATH specify directory path for the shared memory file
98 which is made by fullock.
99
100 FLCKFILENAME specify the shared memory file name which is made
101 by fullock.
102
103 FLCKFILECNT specify file count for the reader/writer lock.
104
105 FLCKOFFETCNT specify offset count for the reader/writer lock.
106
107 FLCKLOCKERCNT specify the process(thread) count for the
108 reader/writer lock and mutex at same time.
109
110 FLCKNMTXCNT specify count for named mutex.
111
112 FLCKNCONDCNT specify count for named condition variable.
113
114 FLCKWAITERCNT specify named condition waiter count for named con‐
115 dition variable.
116
118 The web site can be found at:
119
120 https://github.com/yahoojapan/fullock
121
123 Please make sure you use the latest version in the web site:
124
125 https://github.com/yahoojapan/fullock
126
127 Then, please submit your questions or comments here:
128
129 https://github.com/yahoojapan/fullock/issues
130
132 Takeshi Nakatani <ggtakec@gmail.com>
133
135 MIT License
136
137 Copyright (C) 2015 Yahoo Japan Corporation
138
139 Permission is hereby granted, free of charge, to any person obtaining a
140 copy of this software and associated documentation files (the "Soft‐
141 ware"), to deal in the Software without restriction, including without
142 limitation the rights to use, copy, modify, merge, publish, distribute,
143 sublicense, and/or sell copies of the Software, and to permit persons
144 to whom the Software is furnished to do so, subject to the following
145 conditions:
146
147 The above copyright notice and this permission notice shall be included
148 in all copies or substantial portions of the Software.
149
150 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
151 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MER‐
152 CHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
153 NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
154 CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
155 TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFT‐
156 WARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
157
158
159
160fullock May 2015 fullock(3)