16#ifndef SIMICS_BANK_INSTRUMENTATION_SUBSCRIBE_CONNECTION_H
17#define SIMICS_BANK_INSTRUMENTATION_SUBSCRIBE_CONNECTION_H
19#include <simics/c++/model-iface/bank-instrumentation.h>
20#include <simics/c++/model-iface/instrumentation-provider.h>
44 :
public iface::BankInstrumentationSubscribeInterface,
45 public iface::InstrumentationOrderInterface,
50 after_read_callback_t cb;
56 after_write_callback_t cb;
62 before_read_callback_t cb;
68 before_write_callback_t cb;
71 using ar_map = std::map<bank_callback_handle_t, AfterRead>;
72 using aw_map = std::map<bank_callback_handle_t, AfterWrite>;
73 using br_map = std::map<bank_callback_handle_t, BeforeRead>;
74 using bw_map = std::map<bank_callback_handle_t, BeforeWrite>;
75 using cb_tuple = std::tuple<bool, ar_map, aw_map, br_map, bw_map>;
76 using conf_obj_cb_pair = std::pair<conf_object_t *, cb_tuple>;
77 using vect_iter = std::vector<conf_obj_cb_pair>::iterator;
85 conf_object_t *connection, uint64 offset, uint64 size,
86 after_read_callback_t after_read, lang_void *user_data)
override;
88 conf_object_t *connection, uint64 offset, uint64 size,
89 after_write_callback_t after_write, lang_void *user_data)
override;
91 conf_object_t *connection, uint64 offset, uint64 size,
92 before_read_callback_t before_read, lang_void *user_data)
override;
94 conf_object_t *connection, uint64 offset, uint64 size,
95 before_write_callback_t before_write,
96 lang_void *user_data)
override;
104 bool move_before(conf_object_t *connection, conf_object_t *before)
override;
115 void init_connection_callbacks(conf_object_t *connection);
116 vect_iter find_connection(conf_object_t *connection);
120 bank_after_read_interface_t ar_iface_;
121 bank_after_write_interface_t aw_iface_;
122 bank_before_read_interface_t br_iface_;
123 bank_before_write_interface_t bw_iface_;
125 bank_callback_handle_t handle_ {0};
126 std::vector<conf_obj_cb_pair> connection_callbacks_;
Definition: bank-instrumentation-subscribe-connection.h:46
bank_callback_handle_t register_after_write(conf_object_t *connection, uint64 offset, uint64 size, after_write_callback_t after_write, lang_void *user_data) override
void remove_callback(bank_callback_handle_t callback) override
bank_callback_handle_t register_before_write(conf_object_t *connection, uint64 offset, uint64 size, before_write_callback_t before_write, lang_void *user_data) override
bank_callback_handle_t register_before_read(conf_object_t *connection, uint64 offset, uint64 size, before_read_callback_t before_read, lang_void *user_data) override
void remove_connection_callbacks(conf_object_t *connection) override
void disable_connection_callbacks(conf_object_t *connection) override
virtual ~BankInstrumentationSubscribeConnection()=default
BankInstrumentationSubscribeConnection()
void enable_connection_callbacks(conf_object_t *connection) override
unsigned int number_of_callbacks() const
void issue_callbacks(BankAccess *access, CallbackType type) const override
attr_value_t get_connections() override
bank_callback_handle_t register_after_read(conf_object_t *connection, uint64 offset, uint64 size, after_read_callback_t after_read, lang_void *user_data) override
bool move_before(conf_object_t *connection, conf_object_t *before) override
Definition: bank-issue-callbacks-interface.h:25
Definition: after-bank.h:33
CallbackType
Definition: bank-issue-callbacks-interface.h:23
Definition: bank-access.h:42