16#ifndef SIMICS_SYSTEMC_SIMICS2TLM_DIRECT_MEMORY_UPDATE_H
17#define SIMICS_SYSTEMC_SIMICS2TLM_DIRECT_MEMORY_UPDATE_H
43 direct_memory_handle_t handle,
44 direct_memory_ack_id_t
id) {
48 direct_memory_handle_t handle,
50 access_t lost_permission,
51 access_t lost_inhibit,
52 direct_memory_ack_id_t
id) {
56 direct_memory_handle_t handle,
57 access_t conflicting_permission,
58 direct_memory_ack_id_t
id) {
71 ConfObjectRef target) {
72 if (target != direct_memory_provider_.
target()) {
77 const direct_memory_interface_t>();
80 direct_memory_handle_t handle,
81 direct_memory_ack_id_t
id) {
84 void *user_data = dm_iface->get_user_data(target, handle);
91 static_cast<sc_dt::uint64
>(-1));
94 dm_iface->ack(target,
id);
Returns the interface provided by the associated Simics object.
Definition: interface_provider.h:32
virtual void set_target(const ConfObjectRef &obj)
Definition: interface_provider.h:58
SimicsTargetLock< TInterface > get_interface()
Definition: interface_provider.h:94
virtual const simics::ConfObjectRef & target() const
Definition: interface_provider.h:81
Definition: simics_target_lock.h:27
Simics direct_memory_update interface.
Definition: direct_memory_update_interface.h:26
Class that implements the Simics direct_memory_update interface.
Definition: direct_memory_update.h:35
void update_permission(conf_object_t *target, direct_memory_handle_t handle, access_t lost_access, access_t lost_permission, access_t lost_inhibit, direct_memory_ack_id_t id)
Definition: direct_memory_update.h:47
virtual ~DirectMemoryUpdate()=default
DirectMemoryUpdate & operator=(const DirectMemoryUpdate &)=delete
void conflicting_access(conf_object_t *target, direct_memory_handle_t handle, access_t conflicting_permission, direct_memory_ack_id_t id)
Definition: direct_memory_update.h:55
void set_gasket(tlm2simics::GasketInterface::Ptr gasket)
Definition: direct_memory_update.h:65
DirectMemoryUpdate()
Definition: direct_memory_update.h:37
void release(conf_object_t *target, direct_memory_handle_t handle, direct_memory_ack_id_t id)
Definition: direct_memory_update.h:42
void invalidate_direct_mem_ptr(conf_object_t *target, direct_memory_handle_t handle, direct_memory_ack_id_t id)
Definition: direct_memory_update.h:79
SimicsTargetLock< const direct_memory_interface_t > direct_memory(ConfObjectRef target)
Definition: direct_memory_update.h:70
DirectMemoryUpdate(const DirectMemoryUpdate &)=delete
Interface used by tlm2simics gaskets, implemented by Gasket base class.
Definition: gasket_interface.h:30
virtual void invalidate_direct_mem_ptr(sc_dt::uint64 start_range, sc_dt::uint64 end_range)=0
Calling this method will end up calling the same method on the target socket, that will forward the c...
std::shared_ptr< GasketInterface > Ptr
Definition: gasket_interface.h:32
Definition: pci_bus_interface.h:24