diff --git a/src/core/dune b/src/core/dune index d4454309..5d575f89 100644 --- a/src/core/dune +++ b/src/core/dune @@ -4,6 +4,11 @@ (libraries moonpool.private (re_export thread-local-storage) + (select + hmap_ls_.ml + from + (hmap -> hmap_ls_.real.ml) + (-> hmap_ls_.dummy.ml)) moonpool.dpool (re_export exn_bt) (re_export picos)) diff --git a/src/fib/hmap_fls.dummy.ml b/src/core/hmap_ls_.dummy.ml similarity index 100% rename from src/fib/hmap_fls.dummy.ml rename to src/core/hmap_ls_.dummy.ml diff --git a/src/fib/hmap_fls.real.ml b/src/core/hmap_ls_.real.ml similarity index 92% rename from src/fib/hmap_fls.real.ml rename to src/core/hmap_ls_.real.ml index 89ec8701..ef4e078f 100644 --- a/src/fib/hmap_fls.real.ml +++ b/src/core/hmap_ls_.real.ml @@ -1,4 +1,4 @@ -open Moonpool.Private.Types_ +open Types_ open struct module FLS = Picos.Fiber.FLS @@ -36,7 +36,8 @@ let[@inline] set_in_local_hmap (k : 'a Hmap.key) (v : 'a) : unit = (**/**) -module Private_hmap_fls_ = struct +(* private functions, to be used by the rest of moonpool *) +module Private_hmap_ls_ = struct (** Copy the hmap from f1.fls to f2.fls *) let copy_fls (f1 : Picos.Fiber.t) (f2 : Picos.Fiber.t) : unit = match FLS.get_exn f1 k_local_hmap with diff --git a/src/core/task_local_storage.ml b/src/core/task_local_storage.ml index b66448af..5df4a182 100644 --- a/src/core/task_local_storage.ml +++ b/src/core/task_local_storage.ml @@ -39,3 +39,5 @@ let with_value k v (f : _ -> 'b) : 'b = PF.FLS.set fiber k v; let finally () = PF.FLS.set fiber k old_v in Fun.protect f ~finally + +include Hmap_ls_ diff --git a/src/core/task_local_storage.mli b/src/core/task_local_storage.mli index 69c07039..71c7ffe6 100644 --- a/src/core/task_local_storage.mli +++ b/src/core/task_local_storage.mli @@ -36,3 +36,11 @@ val with_value : 'a t -> 'a -> (unit -> 'b) -> 'b (** [with_value k v f] sets [k] to [v] for the duration of the call to [f()]. When [f()] returns (or fails), [k] is restored to its old value. *) + +(** {2 Local [Hmap.t]} + + This requires [hmap] to be installed. *) + +include module type of struct + include Hmap_ls_ +end diff --git a/src/fib/dune b/src/fib/dune index e54de52c..9d787af8 100644 --- a/src/fib/dune +++ b/src/fib/dune @@ -4,12 +4,7 @@ (synopsis "Fibers and structured concurrency for Moonpool") (libraries moonpool - picos - (select - hmap_fls.ml - from - (hmap -> hmap_fls.real.ml) - (-> hmap_fls.dummy.ml))) + picos) (enabled_if (>= %{ocaml_version} 5.0)) (flags :standard -open Moonpool_private -open Moonpool) diff --git a/src/fib/fiber.ml b/src/fib/fiber.ml index bd2a11ab..bedfa0e7 100644 --- a/src/fib/fiber.ml +++ b/src/fib/fiber.ml @@ -259,7 +259,7 @@ let spawn_ ~parent ~runner (f : unit -> 'a) : 'a t = (* copy local hmap from parent, if present *) Option.iter - (fun (p : _ t) -> Hmap_fls.Private_hmap_fls_.copy_fls p.pfiber pfiber) + (fun (p : _ t) -> Fls.Private_hmap_ls_.copy_fls p.pfiber pfiber) parent; (match parent with diff --git a/src/fib/fls.ml b/src/fib/fls.ml index 8fd4d6ee..ed2162c4 100644 --- a/src/fib/fls.ml +++ b/src/fib/fls.ml @@ -1,2 +1 @@ include Task_local_storage -include Hmap_fls diff --git a/src/fib/fls.mli b/src/fib/fls.mli index 2d942304..35210a8d 100644 --- a/src/fib/fls.mli +++ b/src/fib/fls.mli @@ -17,11 +17,3 @@ include module type of struct include Task_local_storage end - -(** {2 Local [Hmap.t]} - - This requires [hmap] to be installed. *) - -include module type of struct - include Hmap_fls -end