1 //===-- LockFileBase.h ------------------------------------------*- C++ -*-===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
9 #ifndef liblldb_Host_LockFileBase_h_
10 #define liblldb_Host_LockFileBase_h_
12 #include "lldb/Utility/Status.h"
16 namespace lldb_private {
20 virtual ~LockFileBase() = default;
22 bool IsLocked() const;
24 Status WriteLock(const uint64_t start, const uint64_t len);
25 Status TryWriteLock(const uint64_t start, const uint64_t len);
27 Status ReadLock(const uint64_t start, const uint64_t len);
28 Status TryReadLock(const uint64_t start, const uint64_t len);
33 using Locker = std::function<Status(const uint64_t, const uint64_t)>;
37 virtual bool IsValidFile() const;
39 virtual Status DoWriteLock(const uint64_t start, const uint64_t len) = 0;
40 virtual Status DoTryWriteLock(const uint64_t start, const uint64_t len) = 0;
42 virtual Status DoReadLock(const uint64_t start, const uint64_t len) = 0;
43 virtual Status DoTryReadLock(const uint64_t start, const uint64_t len) = 0;
45 virtual Status DoUnlock() = 0;
47 Status DoLock(const Locker &locker, const uint64_t start, const uint64_t len);
49 int m_fd; // not owned.