ReadLock
// Constructor
SST::Interfaces::StandardMem::ReadLock(Addr pAddr, uint64_t size, flags_t flags = 0, Addr vAddr = 0,
Addr iPtr = 0, uint32_t tid = 0);
Response Type StandardMem::ReadResp
Needs Response true
The StandardMem::ReadLock request class defines a request to lock an address in the memory system and return the value of the line. A lock prevents access by any other processor and must be followed eventually by a StandardMem::WriteUnlock to release the lock on the line. Issuing multiple ReadLock requests consecutively without an intervening WriteUnlock for the same address is an error condition. An interface that receives this request should return a response containing the requested data. Fields for both a virtual and physical address are available, the interpretation of those fields is up to the underlying memory system model. physAddr
is however required in the constructor.
Member variables
Including those inherited from the StandardMem::Request
base class, StandardMem::ReadLock
includes the following member variables.
- id (id_t) A request or response identifier. A request and its response contain the same identifier.
- flags (flags_t) A 32-bit vector indicating any special flags added to the request
- pAddr (Addr) The physical starting address for the bytes to be read and locked
- vAddr (Addr) The virtual (if any) starting address for the bytes to be read and locked
- size (uint64_t) The number of bytes to read and lock
- iPtr (Addr) An instruction pointer. This is optional metadata.
- tid (uint32_t) An optional thread ID, can be used by memory systems if needed
Member functions
Defined in Request
base class
getId
setNoncacheable
unsetNoncacheable
getNoncacheable
setSuccess
unsetSuccess
getSuccess
setFail
unsetFail
getFail
setTrace
unsetTrace
getTrace
setFlag
unsetFlag
getFlag
clearAllFlags
getAllFlags
getFlagString
Virtual functions inherited from the Request
base class
makeResponse
Request* makeResponse();
Creates a ReadResp initialized as a response to this read request.
Initializes the data
field in the response to be size
bytes with value 0
.
Interfaces must set the data
field in the response after calling this function if the simulation uses data values. The makeResponse()
function only initializes the field to 0.
needsResponse
bool needsResponse();
Returns true
.
convert
SST::Event* convert(RequestConverter* converter);
Invokes convert()
on the supplied converter
visitor class to return an SST::Event in an implementation-specific format.
handle
virtual void handle(RequestHandler* handler) =0;
Invokes handle()
on the supplied handler
visitor class to handle the event according to type.
getString
virtual std::string getString() =0;
Returns a formatted string listing all fields of the ReadLock.
Example Outputs:
ID: 133, Type: ReadLock, Flags: [], PhysAddr: 0x13158, VirtAddr: 0x13158, Size: 8, InstPtr: 0x10176, ThreadID: 0
ID: 206, Type: ReadLock, Flags: [F_TRACE], PhysAddr: 0x7ffffcf0, VirtAddr: 0x7ffffcf0, Size: 8, InstPtr: 0x103e2, ThreadID: 0
Header
#include <sst/core/interfaces/stdMem.h>