gem5  v19.0.0.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Public Member Functions | Private Attributes | List of all members
FSTranslatingPortProxy Class Reference

A TranslatingPortProxy in FS mode translates a virtual address to a physical address and then calls the read/write functions of the port. More...

#include <fs_translating_port_proxy.hh>

Inheritance diagram for FSTranslatingPortProxy:
PortProxy FunctionalRequestProtocol

Public Member Functions

 FSTranslatingPortProxy (ThreadContext *tc)
 
 FSTranslatingPortProxy (SendFunctionalFunc func, unsigned int cacheLineSize)
 
 FSTranslatingPortProxy (MasterPort &port, unsigned int cacheLineSize)
 
 ~FSTranslatingPortProxy ()
 
bool tryReadBlob (Addr addr, void *p, int size) const override
 Version of tryReadblob that translates virt->phys and deals with page boundries. More...
 
bool tryWriteBlob (Addr addr, const void *p, int size) const override
 Version of tryWriteBlob that translates virt->phys and deals with page boundries. More...
 
bool tryMemsetBlob (Addr address, uint8_t v, int size) const override
 Fill size bytes starting at addr with byte value val. More...
 
- Public Member Functions inherited from PortProxy
 PortProxy (SendFunctionalFunc func, unsigned int cacheLineSize)
 
 PortProxy (const MasterPort &port, unsigned int cacheLineSize)
 
virtual ~PortProxy ()
 
void readBlobPhys (Addr addr, Request::Flags flags, void *p, int size) const
 Fixed functionality for use in base classes. More...
 
void writeBlobPhys (Addr addr, Request::Flags flags, const void *p, int size) const
 Write size bytes from p to physical address. More...
 
void memsetBlobPhys (Addr addr, Request::Flags flags, uint8_t v, int size) const
 Fill size bytes starting at physical addr with byte value val. More...
 
void readBlob (Addr addr, void *p, int size) const
 Higher level interfaces based on the above. More...
 
void writeBlob (Addr addr, const void *p, int size) const
 Same as tryWriteBlob, but insists on success. More...
 
void memsetBlob (Addr addr, uint8_t v, int size) const
 Same as tryMemsetBlob, but insists on success. More...
 
template<typename T >
read (Addr address) const
 Read sizeof(T) bytes from address and return as object T. More...
 
template<typename T >
void write (Addr address, const T &data) const
 Write object T to address. More...
 
template<typename T >
read (Addr address, ByteOrder guest_byte_order) const
 Read sizeof(T) bytes from address and return as object T. More...
 
template<typename T >
void write (Addr address, T data, ByteOrder guest_byte_order) const
 Write object T to address. More...
 
bool tryWriteString (Addr addr, const char *str) const
 Write the string str into guest memory at address addr. More...
 
void writeString (Addr addr, const char *str) const
 Same as tryWriteString, but insists on success. More...
 
bool tryReadString (std::string &str, Addr addr) const
 Reads the string at guest address addr into the std::string str. More...
 
void readString (std::string &str, Addr addr) const
 Same as tryReadString, but insists on success. More...
 
bool tryReadString (char *str, Addr addr, size_t maxlen) const
 Reads the string at guest address addr into the char * str, reading up to maxlen characters. More...
 
void readString (char *str, Addr addr, size_t maxlen) const
 Same as tryReadString, but insists on success. More...
 

Private Attributes

ThreadContext_tc
 

Additional Inherited Members

- Public Types inherited from PortProxy
typedef std::function< void(PacketPtr pkt)> SendFunctionalFunc
 

Detailed Description

A TranslatingPortProxy in FS mode translates a virtual address to a physical address and then calls the read/write functions of the port.

If a thread context is provided the address can alway be translated, If not it can only be translated if it is a simple address masking operation (such as alpha super page accesses).

Definition at line 73 of file fs_translating_port_proxy.hh.

Constructor & Destructor Documentation

◆ FSTranslatingPortProxy() [1/3]

FSTranslatingPortProxy::FSTranslatingPortProxy ( ThreadContext tc)

Definition at line 57 of file fs_translating_port_proxy.cc.

◆ FSTranslatingPortProxy() [2/3]

FSTranslatingPortProxy::FSTranslatingPortProxy ( SendFunctionalFunc  func,
unsigned int  cacheLineSize 
)

Definition at line 63 of file fs_translating_port_proxy.cc.

◆ FSTranslatingPortProxy() [3/3]

FSTranslatingPortProxy::FSTranslatingPortProxy ( MasterPort port,
unsigned int  cacheLineSize 
)

Definition at line 69 of file fs_translating_port_proxy.cc.

◆ ~FSTranslatingPortProxy()

FSTranslatingPortProxy::~FSTranslatingPortProxy ( )
inline

Member Function Documentation

◆ tryMemsetBlob()

bool FSTranslatingPortProxy::tryMemsetBlob ( Addr  address,
uint8_t  v,
int  size 
) const
overridevirtual

Fill size bytes starting at addr with byte value val.

Reimplemented from PortProxy.

Definition at line 113 of file fs_translating_port_proxy.cc.

References _tc, ChunkGenerator::done(), PortProxy::memsetBlobPhys(), AlphaISA::PageBytes, and AlphaISA::vtophys().

Referenced by ~FSTranslatingPortProxy().

◆ tryReadBlob()

bool FSTranslatingPortProxy::tryReadBlob ( Addr  addr,
void *  p,
int  size 
) const
overridevirtual

Version of tryReadblob that translates virt->phys and deals with page boundries.

Reimplemented from PortProxy.

Definition at line 76 of file fs_translating_port_proxy.cc.

References _tc, ChunkGenerator::done(), MipsISA::p, AlphaISA::PageBytes, PortProxy::readBlobPhys(), and AlphaISA::vtophys().

Referenced by ~FSTranslatingPortProxy().

◆ tryWriteBlob()

bool FSTranslatingPortProxy::tryWriteBlob ( Addr  addr,
const void *  p,
int  size 
) const
overridevirtual

Version of tryWriteBlob that translates virt->phys and deals with page boundries.

Reimplemented from PortProxy.

Definition at line 94 of file fs_translating_port_proxy.cc.

References _tc, ChunkGenerator::done(), MipsISA::p, AlphaISA::PageBytes, AlphaISA::vtophys(), and PortProxy::writeBlobPhys().

Referenced by ~FSTranslatingPortProxy().

Member Data Documentation

◆ _tc

ThreadContext* FSTranslatingPortProxy::_tc
private

Definition at line 76 of file fs_translating_port_proxy.hh.

Referenced by tryMemsetBlob(), tryReadBlob(), and tryWriteBlob().


The documentation for this class was generated from the following files:

Generated on Fri Feb 28 2020 16:27:11 for gem5 by doxygen 1.8.13