Skip to main content

WriteUnlock

// Constructor
SST::Interfaces::StandardMem::WriteUnlock(Addr pAddr, uint64_t size, std::vector<uint8_t> data,
bool posted = false, flags_t flags = 0, Addr vAddr = 0, Addr iPtr = 0, uint32_t tid = 0);

Response Type StandardMem::WriteResp  
Needs Response Depends on the value of the posted variable

The StandardMem::WriteUnlock request class defines a memory write that also unlocks an address. This request should always follow a StandardMem::ReadLock. Issuing a StandardMem::WriteUnlock without first issuing a StandardMem::ReadLock is incorrect behavior and particular StandardMem implementations may return a fatal error or ignore it, resulting in undefined behavior. An interface that receives this request should return a WriteResp response acknowledging the write completion if the request's posted field is false. Otherwise, no response is expected. The interface should also unlock the address. 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::WriteUnlock 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 byte address to write to
  • vAddr (Addr) The virtual (if any) starting byte address to write the data to
  • size (uint64_t) The number of bytes to write (same as size of data vector)
  • data (std::vector<uint8_t>) Bytes to write
  • posted (bool) Whether the write is posted (does not require a response)
  • 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 WriteResp initialized as a response to this write request.

needsResponse​

bool needsResponse();

Returns false if the posted field is set to true, other false.

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 WriteUnlock.

Example Output:
ID: 817, Type: WriteUnlock, Flags: [], PhysAddr: 0x13240, VirtAddr: 0x13240, Size: 4, Posted: F, InstPtr: 0x10ed8, ThreadID: 0, Payload: 0x48656c6c
#include <sst/core/interfaces/stdMem.h>