[Imprint][Data Privacy Statement][E-Mail]

Back to main index. View the specification. View theorem base summary, View theorem base listing, the used properties by spec, the dependency list, the symbol table,

Specification dcache-asm
data asm specification 
   dcache

   using cache-base, 
         error-class


   

   
   
   
   
   procedures dcache_format#  :  : dcache × error  ;
              dcache_recovery#  :  : dcache × error  ;
              dcache_get# nat × string × dcache : bool × dentry × error nonfunctional ;
              dcache_set# nat × string × dentry : error × dcache nonfunctional ;
              dcache_delete# nat × string : error × dcache nonfunctional ;
   variables  DCACHE : dcache flexible;
              P_INO : nat flexible;
              NAME : string flexible;
              HIT : bool flexible;
              DENT : dentry flexible;
              KEY : key flexible;
   
   

   

   state variables  DCACHE : dcache flexible;

   initialization procedure dcache_format#

   if ERR = ESUCCESS

   sequential

   

   crash predicate true

   with crash-neutrality

   

   recovery procedure dcache_recovery#

   if ERR = ESUCCESS

   declarations format:dcache_format#(; ; DCACHE, ERR)  precondition true;  postcondition true;{{DCACHE := ∅; ERR := ESUCCESS}}
                recovery:dcache_recovery#(; ; DCACHE, ERR)  precondition true;  postcondition true;{{DCACHE := ∅; ERR := ESUCCESS}}
                get:
                dcache_get#(P_INO, NAME, DCACHE; HIT, DENT, ERR)
                  precondition true;
                  postcondition true;
                {{let KEY = dentrykey(P_INO, NAME) in if KEY ∈ DCACHE then {DENT := DCACHE[KEY]; HIT := true} else HIT := false; ERR := ESUCCESS}
                }
                set:
                dcache_set#(P_INO, NAME, DENT; ERR, DCACHE)
                  precondition true;
                  postcondition true;
                {let KEY = dentrykey(P_INO, NAME) in DCACHE[KEY] := DENT
                }
                delete:
                dcache_delete#(P_INO, NAME; ERR, DCACHE)
                  precondition true;
                  postcondition true;
                {let KEY = dentrykey(P_INO, NAME) in DCACHE := DCACHE -- KEY
                }
end data asm specification