Go to the documentation of this file.
20 #ifndef __SYSTEMC_EXT_TLM_UTILS_PEQ_WITH_CB_AND_PHASE_H__
21 #define __SYSTEMC_EXT_TLM_UTILS_PEQ_WITH_CB_AND_PHASE_H__
25 #include "../core/sc_main.hh"
26 #include "../core/sc_object.hh"
27 #include "../core/sc_spawn.hh"
28 #include "../core/sc_time.hh"
29 #include "../dt/int/sc_nbdefs.hh"
30 #include "../tlm_core/2/interfaces/fw_bw_ifs.hh"
35 template <
typename PAYLOAD>
36 class time_ordered_list
94 struct element *iterator =
list;
95 while (iterator !=
nill && iterator->t <=
t) {
97 iterator = iterator->next;
113 struct element *
e =
list;
134 template<
typename OWNER,
typename TYPES=tlm::tlm_base_protocol_types>
180 "peq_with_cb_and_phase")),
272 if (!
m_ppq.get_size())
279 while (
m_ppq.get_size() &&
top == now) {
286 if (
m_ppq.get_size()) {
294 time_ordered_list<PAYLOAD>
m_ppq;
void insert(const PAYLOAD &p, sc_core::sc_time t)
void set_sensitivity(const sc_event *)
std::pair< tlm_payload_type *, tlm_phase_type > PAYLOAD
void(OWNER::* cb)(tlm_payload_type &, const tlm_phase_type &)
const sc_time SC_ZERO_TIME
sc_core::sc_time top_time()
delta_list m_uneven_delta
TYPES::tlm_payload_type tlm_payload_type
TYPES::tlm_phase_type tlm_phase_type
peq_with_cb_and_phase(OWNER *_owner, cb _cb)
const char * sc_gen_unique_name(const char *seed)
sc_dt::uint64 & top_delta()
sc_core::sc_time next_time()
sc_dt::uint64 sc_delta_count()
void insert(const PAYLOAD &p)
sc_process_handle sc_spawn(T object, const char *name_p=nullptr, const sc_spawn_options *opt_p=nullptr)
void notify(tlm_payload_type &t, const tlm_phase_type &p, const sc_core::sc_time &when)
delta_list m_immediate_yield
auto sc_bind(F &&f, Args &&...args) -> decltype(std::bind(std::forward< F >(f), std::forward< Args >(args)...))
const sc_time & sc_time_stamp()
time_ordered_list< PAYLOAD > m_ppq
std::vector< PAYLOAD > entries
Generated on Wed Sep 30 2020 14:02:16 for gem5 by doxygen 1.8.17