src/Pure/ML/ml_pid.ML
author wenzelm
Mon, 01 Apr 2024 15:37:55 +0200
changeset 80064 0d94dd2fd2d0
parent 73587 d1767bcb79ec
permissions -rw-r--r--
clarified names (see also 9c00a46d69d0, c5cd7a58cf2d); NB: Simplifier.set_trace_ops overrides Pure setup for Simplifier_Trace panel, but that is hardly every used in practice;

(*  Title:      Pure/ML/ml_pid.ML
    Author:     Makarius

Native PID for ML process.
*)

signature ML_PID =
sig
  val get: unit -> int
end;

structure ML_Pid: ML_PID =
struct

\<^if_windows>\<open>
  val get =
    Foreign.buildCall0
      (Foreign.getSymbol (Foreign.loadLibrary "kernel32.dll") "GetCurrentProcessId", (), Foreign.cInt);
\<close>

\<^if_unix>\<open>
  val get = Posix.ProcEnv.getpid #> Posix.Process.pidToWord #> SysWord.toLargeInt;
\<close>

end;