dynamorio::drmemtrace::entry_queue_t Class Reference

#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 bool dynamorio::drmemtrace::entry_queue_t::entry_has_pc ( const trace_entry_t entry,
uint64_t *  pc = nullptr 
)
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