CreationLockset.Specinclude module type of struct include Analyses.IdentityUnitContextsSpec endinclude module type of struct include Analyses.IdentitySpec endinclude module type of struct include Analyses.DefaultSpec endmodule P = Analyses.EmptyPval vdecl : ('a, 'b, 'c, 'd) Analyses.man -> 'e -> 'aval asm : ('a, 'b, 'c, 'd) Analyses.man -> 'aval skip : ('a, 'b, 'c, 'd) Analyses.man -> 'aval query : 'b -> 'a Queries.t -> 'aval sync : ('a, 'b, 'c, 'd) Analyses.man -> 'e -> 'aval paths_as_set : ('a, 'b, 'c, 'd) Analyses.man -> 'a listval assign :
('a, 'b, 'c, 'd) Analyses.man ->
GoblintCil.lval ->
GoblintCil.exp ->
'aval branch : ('a, 'b, 'c, 'd) Analyses.man -> GoblintCil.exp -> bool -> 'aval body : ('a, 'b, 'c, 'd) Analyses.man -> GoblintCil.fundec -> 'aval return :
('a, 'b, 'c, 'd) Analyses.man ->
GoblintCil.exp option ->
GoblintCil.fundec ->
'aval enter :
('a, 'b, 'c, 'd) Analyses.man ->
GoblintCil.lval option ->
GoblintCil.fundec ->
GoblintCil.exp list ->
('a * 'a) listval combine_env :
'a ->
GoblintCil.lval option ->
'b ->
GoblintCil.fundec ->
GoblintCil.exp list ->
'c ->
'd ->
Queries.ask ->
'dval combine_assign :
('a, 'b, 'c, 'd) Analyses.man ->
GoblintCil.lval option ->
'e ->
GoblintCil.fundec ->
GoblintCil.exp list ->
'f ->
'g ->
Queries.ask ->
'aval special :
('a, 'b, 'c, 'd) Analyses.man ->
GoblintCil.lval option ->
GoblintCil.varinfo ->
GoblintCil.exp list ->
'aval threadenter :
('a, 'b, 'c, 'd) Analyses.man ->
multiple:'e ->
'f ->
'g ->
'h ->
'a listmodule C = Printable.Unitmodule D = Lattice.Unitmodule V : sig ... endmodule G : sig ... endval contribute_locks : ('a, 'b, 'c, 'd) Analyses.man -> 'b -> 'd -> unitregister a global contribution: global.child_tid \supseteq to_contribute
val must_ancestor_descendants_closure :
('a, 'b, 'c, 'd) Analyses.man ->
ThreadIdDomain.Thread.t ->
TIDs.treflexive-transitive closure of child relation applied to tid and filtered to only include threads, where tid is a must-ancestor
val threadspawn :
('a, G.t, 'b, TIDs.elt) Analyses.man ->
multiple:'c ->
'd ->
'e ->
'f ->
('g, 'h, 'i, 'j) Analyses.man ->
unitval get_must_ancestor_running_descendants :
('a, 'b, 'c, 'd) Analyses.man ->
TID.t ->
TIDs.tcompute all descendant threads that may run along with the ego thread at a program point. for all of them, tid must be an ancestor
val unlock :
('a, G.t, 'b, TIDs.elt) Analyses.man ->
G.key ->
TIDs.t ->
Lockset.elt ->
unithandle unlock of mutex lock
val unknown_unlock :
('a, G.t, 'b, TIDs.elt) Analyses.man ->
G.key ->
TIDs.t ->
unithandle unlock of an unknown mutex. Assumes that any mutex could have been unlocked
val event : ('a, G.t, 'b, TIDs.elt) Analyses.man -> Events.t -> 'c -> unitmodule A : sig ... endval access :
('a, G.t, 'b, ThreadIdDomain.Thread.t) Analyses.man ->
'c ->
ThreadIdDomain.Thread.t * LockDomain.MustLockset.t Queries.result * G.t