ThreadId.Spec
include module type of struct include Analyses.IdentitySpec end
include module type of struct include Analyses.DefaultSpec end
Relatively safe default implementations of some boring Spec functions.
module G = Lattice.Unit
module V = Analyses.EmptyV
val vdecl : ('a, 'b, 'c, 'd) Analyses.ctx -> 'e -> 'f
val asm : ('a, 'b, 'c, 'd) Analyses.ctx -> 'e
val skip : ('a, 'b, 'c, 'd) Analyses.ctx -> 'e
val event : ('a, 'b, 'c, 'd) Analyses.ctx -> 'e -> 'f -> 'g
val sync : ('a, 'b, 'c, 'd) Analyses.ctx -> 'e -> 'f
val paths_as_set : ('a, 'b, 'c, 'd) Analyses.ctx -> 'e list
val assign :
('a, 'b, 'c, 'd) Analyses.ctx ->
GoblintCil.lval ->
GoblintCil.exp ->
'e
val branch : ('a, 'b, 'c, 'd) Analyses.ctx -> GoblintCil.exp -> bool -> 'e
val body : ('a, 'b, 'c, 'd) Analyses.ctx -> GoblintCil.fundec -> 'e
val return :
('a, 'b, 'c, 'd) Analyses.ctx ->
GoblintCil.exp option ->
GoblintCil.fundec ->
'e
val combine_assign :
('a, 'b, 'c, 'd) Analyses.ctx ->
GoblintCil.lval option ->
'e ->
GoblintCil.fundec ->
GoblintCil.exp list ->
'f ->
'g ->
Queries.ask ->
'h
val special :
('a, 'b, 'c, 'd) Analyses.ctx ->
GoblintCil.lval option ->
GoblintCil.varinfo ->
GoblintCil.exp list ->
'e
module N : sig ... end
module TD = Thread.D
module Created : sig ... end
module D : sig ... end
Uniqueness Counter * TID * (All thread creates of current thread * All thread creates of the current function and its callees)
module P : sig ... end
val tids : (Thread.t, unit) Batteries.Hashtbl.t Batteries.ref
val create_tid :
?multiple:bool ->
('a * [> `Lifted of Thread.t ] * (Thread.D.t * 'b)) ->
(Node.t * int option) ->
GoblintCil.varinfo ->
[> `Lifted of Thread.t ] list
val is_unique :
('a, 'b, 'c, 'd) Analyses.ctx ->
BoolDomain.MustBool.t Queries.result
val enter :
('a * 'b * ('c * 'd), 'e, 'f, 'g) Analyses.ctx ->
'h ->
'i ->
'j ->
(('a * 'b * ('c * 'd)) * ('k * 'l * ('m * TD.t))) list
val created :
('a * [> `Lifted of Thread.t ] * (Thread.D.t * 'b)) ->
ConcDomain.ThreadSet.t
val query :
(D.t, 'b, 'c, 'd) Analyses.ctx ->
'a Queries.t ->
'a0 Queries.result
module A : sig ... end
val access : ('a * 'b * 'c, 'd, 'e, 'f) Analyses.ctx -> 'g -> 'h option
val indexed_node_for_ctx :
('a, 'b, 'c, 'd) Analyses.ctx ->
Node.t * WrapperFunctionAnalysis0.ThreadCreateUniqueCount.t option
get the node that identifies the current context, possibly that of a wrapper function
val threadenter :
('a * [> `Lifted of Thread.t ] * (Thread.D.t * 'b), 'c, 'd, 'e) Analyses.ctx ->
multiple:bool ->
'f ->
GoblintCil.varinfo ->
'g ->
D.t list
val threadspawn :
('a * 'b * (Thread.D.t * Thread.D.t), 'c, 'd, 'e) Analyses.ctx ->
multiple:bool ->
'f ->
'g ->
'h ->
([> `Lifted of GoblintCil.varinfo * Node.t * int option ] * 'i * 'j,
'k,
'l,
'm)
Analyses.ctx ->
'n * 'o * (Thread.D.t * Thread.D.t)
type marshal = (Thread.t, unit) Batteries.Hashtbl.t
val init : marshal option -> unit
val finalize : unit -> (Thread.t, unit) Batteries.Hashtbl.t