src/Pure/ML/ml_pid.ML
author wenzelm
Sun, 15 Nov 2020 18:16:20 +0100
changeset 72615 f827c3bb6b7f
parent 72114 d00220799735
child 73587 d1767bcb79ec
permissions -rw-r--r--
more scalable: avoid large strings on command-line;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
72052
912f13865596 support native PID for ML process;
wenzelm
parents:
diff changeset
     1
(*  Title:      Pure/ML/ml_pid.ML
912f13865596 support native PID for ML process;
wenzelm
parents:
diff changeset
     2
    Author:     Makarius
912f13865596 support native PID for ML process;
wenzelm
parents:
diff changeset
     3
912f13865596 support native PID for ML process;
wenzelm
parents:
diff changeset
     4
Native PID for ML process.
912f13865596 support native PID for ML process;
wenzelm
parents:
diff changeset
     5
*)
912f13865596 support native PID for ML process;
wenzelm
parents:
diff changeset
     6
912f13865596 support native PID for ML process;
wenzelm
parents:
diff changeset
     7
signature ML_PID =
912f13865596 support native PID for ML process;
wenzelm
parents:
diff changeset
     8
sig
912f13865596 support native PID for ML process;
wenzelm
parents:
diff changeset
     9
  val get: unit -> int
912f13865596 support native PID for ML process;
wenzelm
parents:
diff changeset
    10
end;
912f13865596 support native PID for ML process;
wenzelm
parents:
diff changeset
    11
912f13865596 support native PID for ML process;
wenzelm
parents:
diff changeset
    12
if ML_System.platform_is_windows then ML
912f13865596 support native PID for ML process;
wenzelm
parents:
diff changeset
    13
\<open>
72114
d00220799735 tuned names;
wenzelm
parents: 72052
diff changeset
    14
structure ML_Pid: ML_PID =
72052
912f13865596 support native PID for ML process;
wenzelm
parents:
diff changeset
    15
struct
912f13865596 support native PID for ML process;
wenzelm
parents:
diff changeset
    16
912f13865596 support native PID for ML process;
wenzelm
parents:
diff changeset
    17
val get =
912f13865596 support native PID for ML process;
wenzelm
parents:
diff changeset
    18
  Foreign.buildCall0
912f13865596 support native PID for ML process;
wenzelm
parents:
diff changeset
    19
    (Foreign.getSymbol (Foreign.loadLibrary "kernel32.dll") "GetCurrentProcessId", (), Foreign.cInt);
912f13865596 support native PID for ML process;
wenzelm
parents:
diff changeset
    20
912f13865596 support native PID for ML process;
wenzelm
parents:
diff changeset
    21
end;
912f13865596 support native PID for ML process;
wenzelm
parents:
diff changeset
    22
\<close>
912f13865596 support native PID for ML process;
wenzelm
parents:
diff changeset
    23
else ML
912f13865596 support native PID for ML process;
wenzelm
parents:
diff changeset
    24
\<open>
72114
d00220799735 tuned names;
wenzelm
parents: 72052
diff changeset
    25
structure ML_Pid: ML_PID =
72052
912f13865596 support native PID for ML process;
wenzelm
parents:
diff changeset
    26
struct
912f13865596 support native PID for ML process;
wenzelm
parents:
diff changeset
    27
912f13865596 support native PID for ML process;
wenzelm
parents:
diff changeset
    28
val get = Posix.ProcEnv.getpid #> Posix.Process.pidToWord #> SysWord.toLargeInt
912f13865596 support native PID for ML process;
wenzelm
parents:
diff changeset
    29
912f13865596 support native PID for ML process;
wenzelm
parents:
diff changeset
    30
end;
912f13865596 support native PID for ML process;
wenzelm
parents:
diff changeset
    31
\<close>