DynamoRIO
|
#include <reader_base.h>
Public Member Functions | |
void | clear () |
bool | empty () |
bool | has_record_and_next_pc_after_front () |
void | push_front (const trace_entry_t &entry, uint64_t &next_trace_pc) |
void | pop_front (trace_entry_t &entry, uint64_t &next_pc) |
void | push_back (const trace_entry_t &entry) |
Static Public Member Functions | |
static bool | entry_has_pc (const trace_entry_t &entry, uint64_t *pc=nullptr) |
Detailed Description
Queue of dynamorio::drmemtrace::trace_entry_t that have been read from the input but are yet to be processed by the reader.
These entries may have been:
- read in advance to allow us to figure out the next continuous pc in the trace.
- read in advance to allow the reader to figure out when a skip operation is complete (i.e., the post-skip instr entry)
- read in advance header markers to figure out the stream tid and pid.
- synthesized by the reader on a skip event (like the timestamp and cpu markers).
Member Function Documentation
◆ clear()
void dynamorio::drmemtrace::entry_queue_t::clear | ( | ) |
Removes all entries from the queue.
◆ empty()
bool dynamorio::drmemtrace::entry_queue_t::empty | ( | ) |
Returns whether the queue is empty.
◆ entry_has_pc()
|
static |
Returns whether the given dynamorio::drmemtrace::trace_entry_t has a PC, and if so, sets it at the given *pc.
◆ has_record_and_next_pc_after_front()
bool dynamorio::drmemtrace::entry_queue_t::has_record_and_next_pc_after_front | ( | ) |
Returns whether the queue is non-empty and has some record that tells us the next continuous pc in the trace after the record in the front.
◆ pop_front()
void dynamorio::drmemtrace::entry_queue_t::pop_front | ( | trace_entry_t & | entry, |
uint64_t & | next_pc | ||
) |
Returns the next entry from the queue in the entry arg, and the next continuous pc in the trace in the next_pc arg if it exists or zero otherwise.
◆ push_back()
void dynamorio::drmemtrace::entry_queue_t::push_back | ( | const trace_entry_t & | entry | ) |
Adds the given dynamorio::drmemtrace::trace_entry_t that was read from the input ahead of its time to the back of the queue.
Note that for trace entries that need to be added back to the queue by the dynamorio::drmemtrace::reader_t, dynamorio::drmemtrace::record_reader_t, or their derived classes (maybe because the entry cannot be returned just yet by the reader), the push_front API should be used, as there may be many readahead entries already in this queue.
◆ push_front()
void dynamorio::drmemtrace::entry_queue_t::push_front | ( | const trace_entry_t & | entry, |
uint64_t & | next_trace_pc | ||
) |
Adds the given dynamorio::drmemtrace::trace_entry_t to the front of the queue. This entry may have been synthesized by the reader (e.g., the timestamp and cpu entries are synthesized after a skip), or the reader may have decided it does not want to process it yet (e.g., the first instruction after a skip).
If this operation changes the next pc in the trace, next_trace_pc will be updated.
The documentation for this class was generated from the following file:
- /home/runner/work/dynamorio/dynamorio/build_release-64/clients/include/drmemtrace/reader_base.h