@@ -33,8 +33,8 @@ module type S =
3333 the state when following conditional guards. *)
3434 val write_global : ?invariant : bool -> Q .ask -> (V .t -> G .t ) -> (V .t -> G .t -> unit ) -> relation_components_t -> varinfo -> varinfo -> relation_components_t
3535
36- val lock : Q .ask -> (V .t -> G .t ) -> relation_components_t -> LockDomain.Addr .t -> relation_components_t
37- val unlock : Q .ask -> (V .t -> G .t ) -> (V .t -> G .t -> unit ) -> relation_components_t -> LockDomain.Addr .t -> relation_components_t
36+ val lock : Q .ask -> (V .t -> G .t ) -> relation_components_t -> LockDomain.MustLock .t -> relation_components_t
37+ val unlock : Q .ask -> (V .t -> G .t ) -> (V .t -> G .t -> unit ) -> relation_components_t -> LockDomain.MustLock .t -> relation_components_t
3838
3939 val sync : Q .ask -> (V .t -> G .t ) -> (V .t -> G .t -> unit ) -> relation_components_t -> [`Normal | `Join | `JoinCall | `Return | `Init | `Thread ] -> relation_components_t
4040
@@ -483,7 +483,7 @@ struct
483483
484484 let startstate () = ()
485485
486- let atomic_mutex = LockDomain.Addr . of_var LibraryFunctions. verifier_atomic_var
486+ let atomic_mutex = LockDomain.MustLock . of_var LibraryFunctions. verifier_atomic_var
487487
488488 let get_m_with_mutex_inits ask getg m =
489489 let get_m = getg (V. mutex m) in
@@ -589,9 +589,9 @@ struct
589589 let write_escape = write_global_internal ~skip_meet: true
590590
591591 let lock ask getg (st : relation_components_t ) m =
592- let atomic = Param. handle_atomic && LockDomain.Addr . equal m ( atomic_mutex) in
592+ let atomic = Param. handle_atomic && LockDomain.MustLock . equal m atomic_mutex in
593593 (* TODO: somehow actually unneeded here? *)
594- if not atomic && Locksets. (not (Lockset . mem m (current_lockset ask))) then (
594+ if not atomic && Locksets. (not (MustLockset . mem m (current_lockset ask))) then (
595595 let rel = st.rel in
596596 let get_m = get_m_with_mutex_inits ask getg m in
597597 (* Additionally filter get_m in case it contains variables it no longer protects. E.g. in 36/22. *)
@@ -604,7 +604,7 @@ struct
604604 st (* sound w.r.t. recursive lock *)
605605
606606 let unlock ask getg sideg (st : relation_components_t ) m : relation_components_t =
607- let atomic = Param. handle_atomic && LockDomain.Addr . equal m ( atomic_mutex) in
607+ let atomic = Param. handle_atomic && LockDomain.MustLock . equal m atomic_mutex in
608608 let rel = st.rel in
609609 if not atomic then (
610610 let rel_side = keep_only_protected_globals ask m rel in
@@ -721,7 +721,7 @@ module type ClusterArg = functor (RD: RelationDomain.RD) ->
721721sig
722722 module LRD : Lattice .S
723723
724- val keep_only_protected_globals : Q .ask -> LockDomain.Addr .t -> LRD .t -> LRD .t
724+ val keep_only_protected_globals : Q .ask -> LockDomain.MustLock .t -> LRD .t -> LRD .t
725725 val keep_global : varinfo -> LRD .t -> LRD .t
726726
727727 val lock : RD .t -> LRD .t -> LRD .t -> RD .t
@@ -980,7 +980,7 @@ struct
980980
981981 let get_m_with_mutex_inits inits ask getg m =
982982 let get_m = get_relevant_writes ask m (G. mutex @@ getg (V. mutex m)) in
983- if M. tracing then M. traceli " relationpriv" " get_m_with_mutex_inits %a\n get=%a" LockDomain.Addr . pretty m LRD. pretty get_m;
983+ if M. tracing then M. traceli " relationpriv" " get_m_with_mutex_inits %a\n get=%a" LockDomain.MustLock . pretty m LRD. pretty get_m;
984984 let r =
985985 if not inits then
986986 get_m
@@ -993,7 +993,7 @@ struct
993993 if M. tracing then M. traceu " relationpriv" " -> %a" LRD. pretty r;
994994 r
995995
996- let atomic_mutex = LockDomain.Addr . of_var LibraryFunctions. verifier_atomic_var
996+ let atomic_mutex = LockDomain.MustLock . of_var LibraryFunctions. verifier_atomic_var
997997
998998 let get_mutex_global_g_with_mutex_inits inits ask getg g =
999999 let get_mutex_global_g =
@@ -1106,8 +1106,8 @@ struct
11061106 {rel = rel_local; priv = (W. add g w,lmust,l)} (* Keep write local as if it were protected by the atomic section. *)
11071107
11081108 let lock ask getg (st : relation_components_t ) m =
1109- let atomic = Param. handle_atomic && LockDomain.Addr . equal m ( atomic_mutex) in
1110- if not atomic && Locksets. (not (Lockset . mem m (current_lockset ask))) then (
1109+ let atomic = Param. handle_atomic && LockDomain.MustLock . equal m atomic_mutex in
1110+ if not atomic && Locksets. (not (MustLockset . mem m (current_lockset ask))) then (
11111111 let rel = st.rel in
11121112 let _,lmust,l = st.priv in
11131113 let lm = LLock. mutex m in
@@ -1130,7 +1130,7 @@ struct
11301130 RD. keep_filter oct protected
11311131
11321132 let unlock ask getg sideg (st : relation_components_t ) m : relation_components_t =
1133- let atomic = Param. handle_atomic && LockDomain.Addr . equal m ( atomic_mutex) in
1133+ let atomic = Param. handle_atomic && LockDomain.MustLock . equal m atomic_mutex in
11341134 let rel = st.rel in
11351135 let w,lmust,l = st.priv in
11361136 if not atomic then (
@@ -1314,7 +1314,7 @@ struct
13141314 r
13151315
13161316 let lock ask getg st m =
1317- if M. tracing then M. traceli " relationpriv" " lock %a" LockDomain.Addr . pretty m;
1317+ if M. tracing then M. traceli " relationpriv" " lock %a" LockDomain.MustLock . pretty m;
13181318 if M. tracing then M. trace " relationpriv" " st: %a" RelComponents. pretty st;
13191319 let getg x =
13201320 let r = getg x in
@@ -1326,7 +1326,7 @@ struct
13261326 r
13271327
13281328 let unlock ask getg sideg st m =
1329- if M. tracing then M. traceli " relationpriv" " unlock %a" LockDomain.Addr . pretty m;
1329+ if M. tracing then M. traceli " relationpriv" " unlock %a" LockDomain.MustLock . pretty m;
13301330 if M. tracing then M. trace " relationpriv" " st: %a" RelComponents. pretty st;
13311331 let getg x =
13321332 let r = getg x in
0 commit comments