ruby: message buffers: significant changes
[gem5.git] / src / mem / protocol / Network_test-dir.sm
index 6d2bbf3595154b97682167cfc024eccd10de6629..4d6472c542b08c18c634571a17789e06ce448789 100644 (file)
 
 
 machine(Directory, "Network_test Directory")
-:
+    : MessageBuffer * requestToDir, network="From", virtual_network="0",
+            ordered="false", vnet_type = "request";
+      MessageBuffer * forwardToDir, network="From", virtual_network="1",
+            ordered="false", vnet_type = "forward";
+      MessageBuffer * responseToDir, network="From", virtual_network="2",
+            ordered="false", vnet_type = "response";
 {
-
-  MessageBuffer requestToDir, network="From", virtual_network="0", ordered="false";
-  MessageBuffer forwardToDir, network="From", virtual_network="1", ordered="false";
-  MessageBuffer responseToDir, network="From", virtual_network="2", ordered="false";
-
   // STATES
   state_declaration(State, desc="Directory states", default="Directory_State_I") {
     // Base states
@@ -55,7 +55,7 @@ machine(Directory, "Network_test Directory")
 
   // TYPES
   // DirectoryEntry
-  structure(Entry, desc="...") {
+  structure(Entry, desc="...", interface="AbstractEntry") {
     State DirectoryState,          desc="Directory state";
     DataBlock DataBlk,             desc="data for the block";
   }
@@ -69,13 +69,24 @@ machine(Directory, "Network_test Directory")
 
   }
 
+  AccessPermission getAccessPermission(Address addr) {
+    return AccessPermission:NotPresent;
+  }
+
+  void setAccessPermission(Address addr, State state) {
+  }
+
+  DataBlock getDataBlock(Address addr), return_by_ref="yes" {
+    error("Network Test does not support get data block.");
+  }
+
   // ** IN_PORTS **
 
   in_port(requestQueue_in, RequestMsg, requestToDir) {
     if (requestQueue_in.isReady()) {
       peek(requestQueue_in, RequestMsg) {
         if (in_msg.Type == CoherenceRequestType:MSG) {
-          trigger(Event:Receive_Request, in_msg.Address);
+          trigger(Event:Receive_Request, in_msg.Addr);
         } else {
           error("Invalid message");
         }
@@ -86,7 +97,7 @@ machine(Directory, "Network_test Directory")
     if (forwardQueue_in.isReady()) {
       peek(forwardQueue_in, RequestMsg) {
         if (in_msg.Type == CoherenceRequestType:MSG) {
-          trigger(Event:Receive_Forward, in_msg.Address);
+          trigger(Event:Receive_Forward, in_msg.Addr);
         } else {
           error("Invalid message");
         }
@@ -97,7 +108,7 @@ machine(Directory, "Network_test Directory")
     if (responseQueue_in.isReady()) {
       peek(responseQueue_in, RequestMsg) {
         if (in_msg.Type == CoherenceRequestType:MSG) {
-          trigger(Event:Receive_Response, in_msg.Address);
+          trigger(Event:Receive_Response, in_msg.Addr);
         } else {
           error("Invalid message");
         }