package eio

  1. Overview
  2. Docs
Effect-based direct-style IO API for OCaml

Install

Dune Dependency

Authors

Maintainers

Sources

eio-0.10.tbz
sha256=390f7814507b8133d6c25e3a67a742d731c7ca66252b287b1fb0e3ad4d10eecc
sha512=9c0c9088b178df9799aaae9deb803a802228f1329cbe452479c90e80a13985d9c364ea86ee14e4e759133940f9f6065c7e8ece509d176fb1e347c5320f00a494

doc/src/eio.unix/ctf_unix.ml.html

Source file ctf_unix.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
open Bigarray

module Ctf = Eio.Private.Ctf

let timestamper log_buffer ofs =
  let ns = Mtime.to_uint64_ns @@ Mtime_clock.now () in
  Ctf.BS.set_int64_le log_buffer ofs ns

let mmap_buffer ~size path =
  let fd = Unix.(openfile path [O_RDWR; O_CREAT; O_TRUNC] 0o644) in
  Unix.set_close_on_exec fd;
  Unix.ftruncate fd size;
  let ba = array1_of_genarray (Unix.map_file fd char c_layout true [| size |]) in
  Unix.close fd;
  ba

let with_tracing ?(size=0x100000) path fn =
  let buffer = mmap_buffer ~size path in
  let trace_config = Ctf.Control.make ~timestamper buffer in
  Ctf.Control.start trace_config;
  Fun.protect fn ~finally:(fun () -> Ctf.Control.stop trace_config)
OCaml

Innovation. Community. Security.