summaryrefslogtreecommitdiffstats
path: root/compiler-rt/lib/xray/xray_buffer_queue.h
diff options
context:
space:
mode:
authorDean Michael Berris <dberris@google.com>2016-11-25 03:54:45 +0000
committerDean Michael Berris <dberris@google.com>2016-11-25 03:54:45 +0000
commit291d74bdb4b7cf41c3cc041433fd6288d58f97b6 (patch)
treee0fcffb9e26d002d768838f70fe27650f1c549cd /compiler-rt/lib/xray/xray_buffer_queue.h
parent47119579c88d27adcdcb14bc8675d62ca5cc8e67 (diff)
downloadbcm5719-llvm-291d74bdb4b7cf41c3cc041433fd6288d58f97b6.tar.gz
bcm5719-llvm-291d74bdb4b7cf41c3cc041433fd6288d58f97b6.zip
Revert "[XRay][compiler-rt] XRay Buffer Queue"
Broke the build on arm7 and aarch64. llvm-svn: 287911
Diffstat (limited to 'compiler-rt/lib/xray/xray_buffer_queue.h')
-rw-r--r--compiler-rt/lib/xray/xray_buffer_queue.h86
1 files changed, 0 insertions, 86 deletions
diff --git a/compiler-rt/lib/xray/xray_buffer_queue.h b/compiler-rt/lib/xray/xray_buffer_queue.h
deleted file mode 100644
index bf0b7af9df4..00000000000
--- a/compiler-rt/lib/xray/xray_buffer_queue.h
+++ /dev/null
@@ -1,86 +0,0 @@
-//===-- xray_buffer_queue.h ------------------------------------*- 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 instrumentation system.
-//
-// Defines the interface for a buffer queue implementation.
-//
-//===----------------------------------------------------------------------===//
-#ifndef XRAY_BUFFER_QUEUE_H
-#define XRAY_BUFFER_QUEUE_H
-
-#include <atomic>
-#include <cstdint>
-#include <deque>
-#include <mutex>
-#include <system_error>
-#include <unordered_set>
-
-namespace __xray {
-
-/// BufferQueue implements a circular queue of fixed sized buffers (much like a
-/// freelist) but is concerned mostly with making it really quick to initialise,
-/// finalise, and get/return buffers to the queue. This is one key component of
-/// the "flight data recorder" (FDR) mode to support ongoing XRay function call
-/// trace collection.
-class BufferQueue {
-public:
- struct Buffer {
- void *Buffer = nullptr;
- std::size_t Size = 0;
- };
-
-private:
- std::size_t BufferSize;
- std::deque<Buffer> Buffers;
- std::mutex Mutex;
- std::unordered_set<void *> OwnedBuffers;
- std::atomic<bool> Finalizing;
-
-public:
- /// Initialise a queue of size |N| with buffers of size |B|.
- BufferQueue(std::size_t B, std::size_t N);
-
- /// Updates |Buf| to contain the pointer to an appropriate buffer. Returns an
- /// error in case there are no available buffers to return when we will run
- /// over the upper bound for the total buffers.
- ///
- /// Requirements:
- /// - BufferQueue is not finalising.
- ///
- /// Returns:
- /// - std::errc::not_enough_memory on exceeding MaxSize.
- /// - no error when we find a Buffer.
- /// - std::errc::state_not_recoverable on finalising BufferQueue.
- std::error_code getBuffer(Buffer &Buf);
-
- /// Updates |Buf| to point to nullptr, with size 0.
- ///
- /// Returns:
- /// - ...
- std::error_code releaseBuffer(Buffer &Buf);
-
- bool finalizing() const { return Finalizing.load(std::memory_order_acquire); }
-
- // Sets the state of the BufferQueue to finalizing, which ensures that:
- //
- // - All subsequent attempts to retrieve a Buffer will fail.
- // - All releaseBuffer operations will not fail.
- //
- // After a call to finalize succeeds, all subsequent calls to finalize will
- // fail with std::errc::state_not_recoverable.
- std::error_code finalize();
-
- // Cleans up allocated buffers.
- ~BufferQueue();
-};
-
-} // namespace __xray
-
-#endif // XRAY_BUFFER_QUEUE_H
OpenPOWER on IntegriCloud