package hack_parallel
Parallel and shared memory library
Install
Dune Dependency
Authors
Maintainers
Sources
1.0.1.tar.gz
md5=ba7c72bc207e326b72e294fc76f6ad2c
sha512=5020d47f97bea2f88e2a40411894d03232a7f2282606926c93c7d4c96d72e94a966be852897a9b16f7e0893ba376512045abb9d93020a7c03c3def4f3d918f8e
doc/src/hack_parallel.utils/pidLog.ml.html
Source file pidLog.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
(** * Copyright (c) 2015, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * *) open Hack_core let log_oc = ref None let enabled = ref true let disable () = enabled := false let init pids_file = assert (!log_oc = None); Sys_utils.with_umask 0o111 begin fun () -> Sys_utils.mkdir_no_fail (Filename.dirname pids_file); let oc = open_out pids_file in log_oc := Some oc; Unix.(set_close_on_exec (descr_of_out_channel oc)) end let log ?reason ?(no_fail=false) pid = if !enabled then let pid = Sys_utils.pid_of_handle pid in let reason = match reason with | None -> "unknown" | Some s -> s in match !log_oc with | None when no_fail -> () | None -> failwith "Can't write pid to uninitialized pids log" | Some oc -> Printf.fprintf oc "%d\t%s\n%!" pid reason exception FailedToGetPids let get_pids pids_file = try let ic = open_in pids_file in let results = ref [] in begin try while true do let row = input_line ic in if Str.string_match (Str.regexp "^\\([0-9]+\\)\t\\(.+\\)") row 0 then let pid = int_of_string (Str.matched_group 1 row) in let reason = Str.matched_group 2 row in results := (pid, reason)::!results; done; with End_of_file -> () end; close_in ic; List.rev !results with Sys_error _ -> raise FailedToGetPids let close () = Hack_option.iter !log_oc ~f:close_out; log_oc := None
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>