| 145 | } |
| 146 | |
| 147 | void FastLock::unlock() { |
| 148 | #ifdef HAVE_CPP_THREADS |
| 149 | while (_lock.test_and_set()) { |
| 150 | } |
| 151 | _owner = _head; |
| 152 | if (_owner >= 0) |
| 153 | _head = vmem.metapage->process_info[_head].next; |
| 154 | _lock.clear(); |
| 155 | if (_owner >= 0) |
| 156 | send_signal(_owner, 0, false); |
| 157 | #else |
| 158 | unlock_file(vmem.fd, _offset); |
| 159 | #endif |
| 160 | } |
| 161 | |
| 162 | static void lock_allocator() { |
| 163 | vmem.metapage->allocator_lock.lock(); |
no test coverage detected