summaryrefslogtreecommitdiff
path: root/source/Host/windows/LockFileWindows.cpp
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2019-08-20 18:01:57 +0000
committerDimitry Andric <dim@FreeBSD.org>2019-08-20 18:01:57 +0000
commit88c643b6fec27eec436c8d138fee6346e92337d6 (patch)
tree82cd13b2f3cde1c9e5f79689ba4e6ba67694843f /source/Host/windows/LockFileWindows.cpp
parent94994d372d014ce4c8758b9605d63fae651bd8aa (diff)
Notes
Diffstat (limited to 'source/Host/windows/LockFileWindows.cpp')
-rw-r--r--source/Host/windows/LockFileWindows.cpp79
1 files changed, 0 insertions, 79 deletions
diff --git a/source/Host/windows/LockFileWindows.cpp b/source/Host/windows/LockFileWindows.cpp
deleted file mode 100644
index 2178fd1f5f6c..000000000000
--- a/source/Host/windows/LockFileWindows.cpp
+++ /dev/null
@@ -1,79 +0,0 @@
-//===-- LockFileWindows.cpp -------------------------------------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "lldb/Host/windows/LockFileWindows.h"
-
-#include <io.h>
-
-using namespace lldb;
-using namespace lldb_private;
-
-namespace {
-
-Status fileLock(HANDLE file_handle, DWORD flags, const uint64_t start,
- const uint64_t len) {
- if (start != 0)
- return Status("Non-zero start lock regions are not supported");
-
- OVERLAPPED overlapped = {};
-
- if (!::LockFileEx(file_handle, flags, 0, len, 0, &overlapped) &&
- ::GetLastError() != ERROR_IO_PENDING)
- return Status(::GetLastError(), eErrorTypeWin32);
-
- DWORD bytes;
- if (!::GetOverlappedResult(file_handle, &overlapped, &bytes, TRUE))
- return Status(::GetLastError(), eErrorTypeWin32);
-
- return Status();
-}
-
-} // namespace
-
-LockFileWindows::LockFileWindows(int fd)
- : LockFileBase(fd), m_file(reinterpret_cast<HANDLE>(_get_osfhandle(fd))) {}
-
-LockFileWindows::~LockFileWindows() { Unlock(); }
-
-bool LockFileWindows::IsValidFile() const {
- return LockFileBase::IsValidFile() && m_file != INVALID_HANDLE_VALUE;
-}
-
-Status LockFileWindows::DoWriteLock(const uint64_t start, const uint64_t len) {
- return fileLock(m_file, LOCKFILE_EXCLUSIVE_LOCK, start, len);
-}
-
-Status LockFileWindows::DoTryWriteLock(const uint64_t start,
- const uint64_t len) {
- return fileLock(m_file, LOCKFILE_EXCLUSIVE_LOCK | LOCKFILE_FAIL_IMMEDIATELY,
- start, len);
-}
-
-Status LockFileWindows::DoReadLock(const uint64_t start, const uint64_t len) {
- return fileLock(m_file, 0, start, len);
-}
-
-Status LockFileWindows::DoTryReadLock(const uint64_t start,
- const uint64_t len) {
- return fileLock(m_file, LOCKFILE_FAIL_IMMEDIATELY, start, len);
-}
-
-Status LockFileWindows::DoUnlock() {
- OVERLAPPED overlapped = {};
-
- if (!::UnlockFileEx(m_file, 0, m_len, 0, &overlapped) &&
- ::GetLastError() != ERROR_IO_PENDING)
- return Status(::GetLastError(), eErrorTypeWin32);
-
- DWORD bytes;
- if (!::GetOverlappedResult(m_file, &overlapped, &bytes, TRUE))
- return Status(::GetLastError(), eErrorTypeWin32);
-
- return Status();
-}