gem5
v20.1.0.0
|
Circular buffer backed by a vector though a CircularQueue. More...
#include <circlebuf.hh>
Public Member Functions | |
CircleBuf (size_t size) | |
template<class OutputIterator > | |
void | peek (OutputIterator out, size_t len) const |
Copy buffer contents without advancing the read pointer. More... | |
template<class OutputIterator > | |
void | peek (OutputIterator out, off_t offset, size_t len) const |
Copy buffer contents without advancing the read pointer. More... | |
template<class OutputIterator > | |
void | read (OutputIterator out, size_t len) |
Copy buffer contents and advance the read pointer. More... | |
template<class InputIterator > | |
void | write (InputIterator in, size_t len) |
Add elements to the end of the ring buffers and advance. More... | |
Public Member Functions inherited from CircularQueue< T > | |
CircularQueue (uint32_t size=0) | |
void | flush () |
Remove all the elements in the queue. More... | |
bool | isValidIdx (size_t idx) const |
Test if the index is in the range of valid elements. More... | |
bool | isValidIdx (size_t idx, uint32_t round) const |
Test if the index is in the range of valid elements. More... | |
reference | front () |
reference | back () |
uint32_t | head () const |
uint32_t | tail () const |
size_t | capacity () const |
uint32_t | size () const |
uint32_t | moduloAdd (uint32_t s1, uint32_t s2) const |
uint32_t | moduloSub (uint32_t s1, uint32_t s2) const |
void | pop_front (size_t num_elem=1) |
Circularly increase the head pointer. More... | |
void | pop_back () |
Circularly decrease the tail pointer. More... | |
void | push_back (typename Base::value_type val) |
Pushes an element at the end of the queue. More... | |
void | advance_tail () |
Increases the tail by one. More... | |
void | advance_tail (uint32_t len) |
Increases the tail by a specified number of steps. More... | |
bool | empty () const |
Is the queue empty? More... | |
bool | full () const |
Is the queue full? A queue is full if the head is the 0^{th} element and the tail is the (size-1)^{th} element, or if the head is the n^{th} element and the tail the (n-1)^{th} element. More... | |
iterator | begin () |
Iterators. More... | |
iterator | begin () const |
iterator | end () |
iterator | end () const |
iterator | getIterator (size_t idx) |
Return an iterator to an index in the vector. More... | |
Additional Inherited Members | |
Protected Types inherited from CircularQueue< T > | |
using | Base = std::vector< T > |
Protected Member Functions inherited from CircularQueue< T > | |
void | increase (uint32_t &v, size_t delta=1) |
void | decrease (uint32_t &v) |
Static Protected Member Functions inherited from CircularQueue< T > | |
static uint32_t | moduloAdd (uint32_t op1, uint32_t op2, uint32_t size) |
General modular addition. More... | |
static uint32_t | moduloSub (uint32_t op1, uint32_t op2, uint32_t size) |
General modular subtraction. More... | |
static int32_t | sub (uint32_t op1, uint32_t op2, uint32_t size) |
Protected Attributes inherited from CircularQueue< T > | |
const uint32_t | _capacity |
uint32_t | _head |
uint32_t | _tail |
uint32_t | _empty |
uint32_t | _round |
Counter for how many times the tail wraps around. More... | |
Circular buffer backed by a vector though a CircularQueue.
The data in the cricular buffer is stored in a standard vector.
Definition at line 57 of file circlebuf.hh.
Definition at line 60 of file circlebuf.hh.
|
inline |
Copy buffer contents without advancing the read pointer.
out | Output iterator/pointer |
offset | Offset into the ring buffer |
len | Number of elements to copy |
Definition at line 89 of file circlebuf.hh.
|
inline |
Copy buffer contents without advancing the read pointer.
out | Output iterator/pointer |
len | Number of elements to copy |
Definition at line 77 of file circlebuf.hh.
Referenced by Terminal::accept(), arrayParamOut(), CircleBuf< char >::peek(), Fifo< uint8_t >::peek(), CircleBuf< char >::read(), and TEST().
|
inline |
Copy buffer contents and advance the read pointer.
out | Output iterator/pointer |
len | Number of elements to read |
Definition at line 103 of file circlebuf.hh.
Referenced by Fifo< uint8_t >::read(), Terminal::readData(), and TEST().
|
inline |
Add elements to the end of the ring buffers and advance.
in | Input iterator/pointer |
len | Number of elements to read |
Definition at line 115 of file circlebuf.hh.
Referenced by arrayParamIn(), Terminal::data(), TEST(), Fifo< uint8_t >::write(), and Terminal::writeData().