//===-- sanitizer_ring_buffer.h ---------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // Simple ring buffer. // //===----------------------------------------------------------------------===// #ifndef SANITIZER_RING_BUFFER_H #define SANITIZER_RING_BUFFER_H #include "sanitizer_common.h" namespace __sanitizer { // RingBuffer<T>: fixed-size ring buffer optimized for speed of push(). // T should be a POD type and sizeof(T) should be divisible by sizeof(void*). // At creation, all elements are zero. template<class T> class RingBuffer { … }; // A ring buffer with externally provided storage that encodes its state in 8 // bytes. Has significant constraints on size and alignment of storage. // See a comment in hwasan/hwasan_thread_list.h for the motivation behind this. #if SANITIZER_WORDSIZE == 64 template <class T> class CompactRingBuffer { … }; #endif } // namespace __sanitizer #endif // SANITIZER_RING_BUFFER_H