From 67bb3070032fcb944a63aabb4ecfff692840e7bf Mon Sep 17 00:00:00 2001 From: Nilay Vaish Date: Wed, 8 Jun 2011 11:58:09 -0500 Subject: Ruby: Correctly set access permissions for directory entries The access permissions for the directory entries are not being set correctly. This is because pointers are not used for handling directory entries. function. get and set functions for access permissions have been added to the Controller state machine. The changePermission() function provided by the AbstractEntry and AbstractCacheEntry classes has been exposed to SLICC code once again. The set_permission() functionality has been removed. NOTE: Each protocol will have to define these get and set functions in order to compile successfully. --- src/mem/protocol/RubySlicc_Types.sm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/mem/protocol/RubySlicc_Types.sm') diff --git a/src/mem/protocol/RubySlicc_Types.sm b/src/mem/protocol/RubySlicc_Types.sm index cf0f64500..a2f8abfaa 100644 --- a/src/mem/protocol/RubySlicc_Types.sm +++ b/src/mem/protocol/RubySlicc_Types.sm @@ -120,7 +120,9 @@ structure(RubyRequest, desc="...", interface="Message", external="yes") { int contextId, desc="this goes away but must be replace with Nilay"; } -external_type(AbstractEntry, primitive="yes"); +structure(AbstractEntry, primitive="yes", external = "yes") { + void changePermission(AccessPermission); +} structure (DirectoryMemory, external = "yes") { AbstractEntry lookup(Address); @@ -128,7 +130,9 @@ structure (DirectoryMemory, external = "yes") { void invalidateBlock(Address); } -external_type(AbstractCacheEntry, primitive="yes"); +structure(AbstractCacheEntry, primitive="yes", external = "yes") { + void changePermission(AccessPermission); +} structure (CacheMemory, external = "yes") { bool cacheAvail(Address); -- cgit v1.2.3