mirror of
https://github.com/ocaml-tracing/ocaml-trace.git
synced 2026-03-07 18:37:56 -05:00
refactor: split some parts of trace-tef into trace.private.util
This commit is contained in:
parent
14f9a2ea94
commit
7f9370e842
10 changed files with 16 additions and 18 deletions
|
|
@ -3,7 +3,4 @@
|
|||
(name trace_tef)
|
||||
(public_name trace-tef)
|
||||
(synopsis "Simple and lightweight tracing using TEF/Catapult format, in-process")
|
||||
(libraries trace.core mtime mtime.clock.os atomic unix threads
|
||||
(select relax_.ml from
|
||||
(base-domain -> relax_.real.ml)
|
||||
( -> relax_.dummy.ml))))
|
||||
(libraries trace.core trace.private.util mtime mtime.clock.os atomic unix threads))
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
open Trace_core
|
||||
open Trace_private_util
|
||||
module A = Trace_core.Internal_.Atomic_
|
||||
|
||||
module Mock_ = struct
|
||||
|
|
@ -14,7 +15,7 @@ end
|
|||
let counter = Mtime_clock.counter ()
|
||||
|
||||
(** Now, in microseconds *)
|
||||
let now_us () : float =
|
||||
let[@inline] now_us () : float =
|
||||
if !Mock_.enabled then
|
||||
Mock_.now_us ()
|
||||
else (
|
||||
|
|
@ -22,16 +23,6 @@ let now_us () : float =
|
|||
Mtime.Span.to_float_ns t /. 1e3
|
||||
)
|
||||
|
||||
let protect ~finally f =
|
||||
try
|
||||
let x = f () in
|
||||
finally ();
|
||||
x
|
||||
with exn ->
|
||||
let bt = Printexc.get_raw_backtrace () in
|
||||
finally ();
|
||||
Printexc.raise_with_backtrace exn bt
|
||||
|
||||
let on_tracing_error = ref (fun s -> Printf.eprintf "trace-tef error: %s\n%!" s)
|
||||
|
||||
type event =
|
||||
|
|
@ -144,7 +135,7 @@ module Writer = struct
|
|||
|
||||
let with_ ~out f =
|
||||
let writer = create ~out () in
|
||||
protect ~finally:(fun () -> close writer) (fun () -> f writer)
|
||||
Fun.protect ~finally:(fun () -> close writer) (fun () -> f writer)
|
||||
|
||||
let[@inline] flush (self : t) : unit = flush self.oc
|
||||
|
||||
|
|
@ -499,7 +490,7 @@ let setup ?(out = `Env) () =
|
|||
|
||||
let with_setup ?out () f =
|
||||
setup ?out ();
|
||||
protect ~finally:Trace_core.shutdown f
|
||||
Fun.protect ~finally:Trace_core.shutdown f
|
||||
|
||||
module Internal_ = struct
|
||||
let mock_all_ () = Mock_.enabled := true
|
||||
|
|
|
|||
1
src/util/cpu_relax.mli
Normal file
1
src/util/cpu_relax.mli
Normal file
|
|
@ -0,0 +1 @@
|
|||
val cpu_relax : unit -> unit
|
||||
9
src/util/dune
Normal file
9
src/util/dune
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
|
||||
(library
|
||||
(public_name trace.private.util)
|
||||
(synopsis "internal utilities for trace. No guarantees of stability.")
|
||||
(name trace_private_util)
|
||||
(libraries trace.core mtime mtime.clock.os atomic unix threads
|
||||
(select cpu_relax.ml from
|
||||
(base-domain -> cpu_relax.real.ml)
|
||||
( -> cpu_relax.dummy.ml))))
|
||||
|
|
@ -11,7 +11,7 @@ module Backoff = struct
|
|||
|
||||
let once (b : t) : t =
|
||||
for _i = 1 to b do
|
||||
Relax_.cpu_relax ()
|
||||
Cpu_relax.cpu_relax ()
|
||||
done;
|
||||
min (b * 2) 256
|
||||
end
|
||||
Loading…
Add table
Reference in a new issue