dynamorio::drmemtrace::scheduler_tmpl_t< RecordType, ReaderType >::input_thread_info_t Struct Reference

#include <scheduler.h>

Public Member Functions

 input_thread_info_t (std::vector< range_t > regions)
 
 input_thread_info_t (memref_tid_t tid, std::vector< range_t > regions)
 
 input_thread_info_t (memref_tid_t tid, int priority)
 
 input_thread_info_t (std::set< output_ordinal_t > output_binding)
 
 input_thread_info_t (memref_tid_t tid, std::set< output_ordinal_t > output_binding)
 

Data Fields

size_t struct_size = sizeof(input_thread_info_t)
 
std::vector< memref_tid_ttids
 
std::set< output_ordinal_toutput_binding
 
int priority = 0
 
std::vector< range_tregions_of_interest
 

Detailed Description

template<typename RecordType, typename ReaderType>
struct dynamorio::drmemtrace::scheduler_tmpl_t< RecordType, ReaderType >::input_thread_info_t

Specifies details about one set of input trace files from one workload, each input file representing a single software thread. It is assumed that there is no thread id duplication within one workload.

Constructor & Destructor Documentation

◆ input_thread_info_t() [1/5]

template<typename RecordType , typename ReaderType >
dynamorio::drmemtrace::scheduler_tmpl_t< RecordType, ReaderType >::input_thread_info_t::input_thread_info_t ( std::vector< range_t regions)
inlineexplicit

Convenience constructor for common usage.

◆ input_thread_info_t() [2/5]

template<typename RecordType , typename ReaderType >
dynamorio::drmemtrace::scheduler_tmpl_t< RecordType, ReaderType >::input_thread_info_t::input_thread_info_t ( memref_tid_t  tid,
std::vector< range_t regions 
)
inline

Convenience constructor for common usage.

◆ input_thread_info_t() [3/5]

template<typename RecordType , typename ReaderType >
dynamorio::drmemtrace::scheduler_tmpl_t< RecordType, ReaderType >::input_thread_info_t::input_thread_info_t ( memref_tid_t  tid,
int  priority 
)
inline

Convenience constructor for common usage.

◆ input_thread_info_t() [4/5]

template<typename RecordType , typename ReaderType >
dynamorio::drmemtrace::scheduler_tmpl_t< RecordType, ReaderType >::input_thread_info_t::input_thread_info_t ( std::set< output_ordinal_t output_binding)
inline

Convenience constructor for placing all threads for one workload on a set of cores for a static partitioning.

◆ input_thread_info_t() [5/5]

template<typename RecordType , typename ReaderType >
dynamorio::drmemtrace::scheduler_tmpl_t< RecordType, ReaderType >::input_thread_info_t::input_thread_info_t ( memref_tid_t  tid,
std::set< output_ordinal_t output_binding 
)
inline

Convenience constructor for placing one thread on a set of cores.

Field Documentation

◆ output_binding

template<typename RecordType , typename ReaderType >
std::set<output_ordinal_t> dynamorio::drmemtrace::scheduler_tmpl_t< RecordType, ReaderType >::input_thread_info_t::output_binding

Limits these threads to this set of output streams. They will not be scheduled on any other output streams.

◆ priority

template<typename RecordType , typename ReaderType >
int dynamorio::drmemtrace::scheduler_tmpl_t< RecordType, ReaderType >::input_thread_info_t::priority = 0

Relative priority for scheduling. The default is 0. Higher values have higher priorities and will starve lower-priority inputs. Higher priorities out-weigh dependencies such as DEPENDENCY_TIMESTAMPS.

◆ regions_of_interest

template<typename RecordType , typename ReaderType >
std::vector<range_t> dynamorio::drmemtrace::scheduler_tmpl_t< RecordType, ReaderType >::input_thread_info_t::regions_of_interest

If non-empty, all input records outside of these ranges are skipped: it is as though the input were constructed by concatenating these ranges together. A TRACE_MARKER_TYPE_WINDOW_ID marker is inserted between ranges (with a value equal to the range ordinal) to notify the client of the discontinuity. This marker is inserted between back-to-back regions with no separation, but it is not inserted prior to the first range. A dynamorio::drmemtrace::TRACE_TYPE_THREAD_EXIT record is inserted after the final range. These ranges must be non-overlapping and in increasing order.

Be aware that selecting a subset of code can remove inter-input communication steps that could be required for forward progress. For example, if selected subsets include TRACE_MARKER_TYPE_SYSCALL_UNSCHEDULE with no timeout but do not include a corresponding TRACE_MARKER_TYPE_SYSCALL_SCHEDULE for wakeup, an input could remain unscheduled.

◆ struct_size

template<typename RecordType , typename ReaderType >
size_t dynamorio::drmemtrace::scheduler_tmpl_t< RecordType, ReaderType >::input_thread_info_t::struct_size = sizeof(input_thread_info_t)

Size of the struct for binary-compatible additions.

◆ tids

template<typename RecordType , typename ReaderType >
std::vector<memref_tid_t> dynamorio::drmemtrace::scheduler_tmpl_t< RecordType, ReaderType >::input_thread_info_t::tids

Which threads the details in this structure apply to. If empty, the details apply to all not-yet-mentioned (by other 'tids' vectors in prior entries for this workload) threads in the dynamorio::drmemtrace::scheduler_tmpl_t::input_workload_t.


The documentation for this struct was generated from the following file:
  • /home/runner/work/dynamorio/dynamorio/build_release-64/clients/include/drmemtrace/scheduler.h