diff options
Diffstat (limited to 'compiler-rt/lib/xray/xray_buffer_queue.cc')
| -rw-r--r-- | compiler-rt/lib/xray/xray_buffer_queue.cc | 65 |
1 files changed, 0 insertions, 65 deletions
diff --git a/compiler-rt/lib/xray/xray_buffer_queue.cc b/compiler-rt/lib/xray/xray_buffer_queue.cc deleted file mode 100644 index 17878eb85de..00000000000 --- a/compiler-rt/lib/xray/xray_buffer_queue.cc +++ /dev/null @@ -1,65 +0,0 @@ -//===-- xray_buffer_queue.cc -----------------------------------*- C++ -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// This file is a part of XRay, a dynamic runtime instruementation system. -// -// Defines the interface for a buffer queue implementation. -// -//===----------------------------------------------------------------------===// -#include "xray_buffer_queue.h" -#include <cassert> -#include <cstdlib> - -using namespace __xray; - -BufferQueue::BufferQueue(std::size_t B, std::size_t N) - : BufferSize(B), Buffers(N) { - for (auto &Buf : Buffers) { - void *Tmp = malloc(BufferSize); - Buf.Buffer = Tmp; - Buf.Size = B; - if (Tmp != 0) - OwnedBuffers.insert(Tmp); - } -} - -std::error_code BufferQueue::getBuffer(Buffer &Buf) { - if (Finalizing.load(std::memory_order_acquire)) - return std::make_error_code(std::errc::state_not_recoverable); - std::lock_guard<std::mutex> Guard(Mutex); - if (Buffers.empty()) - return std::make_error_code(std::errc::not_enough_memory); - Buf = Buffers.front(); - Buffers.pop_front(); - return {}; -} - -std::error_code BufferQueue::releaseBuffer(Buffer &Buf) { - if (OwnedBuffers.count(Buf.Buffer) == 0) - return std::make_error_code(std::errc::argument_out_of_domain); - std::lock_guard<std::mutex> Guard(Mutex); - Buffers.push_back(Buf); - Buf.Buffer = nullptr; - Buf.Size = BufferSize; - return {}; -} - -std::error_code BufferQueue::finalize() { - if (Finalizing.exchange(true, std::memory_order_acq_rel)) - return std::make_error_code(std::errc::state_not_recoverable); - return {}; -} - -BufferQueue::~BufferQueue() { - for (auto &Buf : Buffers) { - free(Buf.Buffer); - Buf.Buffer = nullptr; - Buf.Size = 0; - } -} |

