Module Runtime_events.Callbacks

type t

Type of callbacks

val create : ?runtime_begin:(int -> Timestamp.t -> runtime_phase -> unit) -> ?runtime_end:(int -> Timestamp.t -> runtime_phase -> unit) -> ?runtime_counter:(int -> Timestamp.t -> runtime_counter -> int -> unit) -> ?alloc:(int -> Timestamp.t -> int array -> unit) -> ?lifecycle:(int -> Timestamp.t -> lifecycle -> int option -> unit) -> ?lost_events:(int -> int -> unit) -> unit -> t

Create a Callback that optionally subscribes to one or more runtime events. The first int supplied to callbacks is the ring buffer index. Each domain owns a single ring buffer for the duration of the domain's existence. After a domain terminates, a newly spawned domain may take ownership of the ring buffer. A runtime_begin callback is called when the runtime enters a new phase (e.g a runtime_begin with EV_MINOR is called at the start of a minor GC). A runtime_end callback is called when the runtime leaves a certain phase. The runtime_counter callback is called when a counter is emitted by the runtime. lifecycle callbacks are called when the ring undergoes a change in lifecycle and a consumer may need to respond. alloc callbacks are currently only called on the instrumented runtime. lost_events callbacks are called if the consumer code detects some unconsumed events have been overwritten.

val add_user_event : 'a Type.t -> (int -> Timestamp.t -> 'a User.t -> 'a -> unit) -> t -> t

add_user_event ty callback t extends t to additionally subscribe to user events of type ty. When such an event happens, callback is called with the corresponding event and payload.