DynamoRIO
|
#include <noise_generator.h>

Public Member Functions | |
bool | init () override |
std::string | get_stream_name () const override |
![]() | |
uint64_t | get_record_ordinal () const override |
uint64_t | get_instruction_ordinal () const override |
uint64_t | get_last_timestamp () const override |
uint64_t | get_first_timestamp () const override |
uint64_t | get_version () const override |
uint64_t | get_filetype () const override |
uint64_t | get_cache_line_size () const override |
uint64_t | get_chunk_instr_count () const override |
uint64_t | get_page_size () const override |
bool | is_record_kernel () const override |
bool | is_record_synthetic () const override |
![]() | |
uint64_t | get_next_trace_pc () const override |
![]() | |
virtual | ~memtrace_stream_t () |
virtual int | get_shard_index () const |
virtual int64_t | get_output_cpuid () const |
virtual int64_t | get_workload_id () const |
virtual int64_t | get_input_id () const |
virtual int64_t | get_tid () const |
virtual memtrace_stream_t * | get_input_interface () const |
virtual double | get_schedule_statistic (schedule_statistic_t stat) const |
Protected Member Functions | |
virtual trace_entry_t * | read_next_entry () override |
![]() | |
trace_entry_t * | get_next_entry () |
bool | is_online () |
void | clear_entry_queue () |
void | queue_to_return_next (std::queue< trace_entry_t > &queue) |
void | queue_to_return_next (trace_entry_t &entry) |
Additional Inherited Members | |
![]() | |
enum | schedule_statistic_t { SCHED_STAT_SWITCH_INPUT_TO_INPUT , SCHED_STAT_SWITCH_INPUT_TO_IDLE , SCHED_STAT_SWITCH_IDLE_TO_INPUT , SCHED_STAT_SWITCH_NOP , SCHED_STAT_QUANTUM_PREEMPTS , SCHED_STAT_DIRECT_SWITCH_ATTEMPTS , SCHED_STAT_DIRECT_SWITCH_SUCCESSES , SCHED_STAT_MIGRATIONS , SCHED_STAT_RUNQUEUE_STEALS , SCHED_STAT_RUNQUEUE_REBALANCES , SCHED_STAT_HIT_OUTPUT_LIMIT , SCHED_STAT_KERNEL_SWITCH_SEQUENCE_INJECTIONS , SCHED_STAT_KERNEL_SYSCALL_SEQUENCE_INJECTIONS , SCHED_STAT_TYPE_COUNT } |
![]() | |
bool | at_eof_ = true |
trace_entry_t | entry_copy_ |
uint64_t | next_trace_pc_ = 0 |
Detailed Description
Generates synthetic dynamorio::drmemtrace::memref_t trace records in a single-process single-thread and presents them via an iterator interface to the scheduler. These synthetic trace records are preceded by TRACE_TYPE_THREAD, TRACE_TYPE_PID, TRACE_MARKER_TYPE_TIMESTAMP records and followed by TRACE_TYPE_THREAD_EXIT, as this is the order of records that the scheduler expects. The value of TRACE_MARKER_TYPE_TIMESTAMP is (ULONG_MAX - 1), which is not a serial-or-interval-suited timestamp value for mixing with real workload inputs. A serial analysis combined with real workload inputs would have these synthetic records at the very end, while time interval analysis would not consider these records unless the interval is very large (likely beyond the end of real input workloads). Noise generation is suited for dynamic scheduling, where the scheduler will re-write the values of TRACE_MARKER_TYPE_TIMESTAMP. Note that this class does not support simultaneous use by concurrent threads.
Member Function Documentation
◆ get_stream_name()
|
overridevirtual |
Returns a name for the memtrace stream. For stored offline traces, this is the base name of the trace on disk. For online traces, this is the name of the pipe.
Implements dynamorio::drmemtrace::memtrace_stream_t.
◆ init()
|
overridevirtual |
Initializes various state for the reader. E.g., subclasses should remember to set at_eof_ to false here. Also reads the first entry by invoking operator++() so that operator*() is ready to provide one after init().
May block for reading the first entry.
Implements dynamorio::drmemtrace::reader_base_t.
◆ read_next_entry()
|
overrideprotectedvirtual |
This reads the next single entry from the underlying single stream of entries.
If it returns nullptr, it will set the EOF bit to distinguish end-of-file from an error.
This is used only by dynamorio::drmemtrace::reader_base_t::get_next_entry() when needed to access the underlying source of entries. Subclasses that need the next entry should use dynamorio::drmemtrace::reader_base_t::get_next_entry() instead.
Implements dynamorio::drmemtrace::reader_base_t.
The documentation for this class was generated from the following file:
- /home/runner/work/dynamorio/dynamorio/build_release-64/clients/include/drmemtrace/noise_generator.h