package posix-unistd

  1. Overview
  2. Docs

Source file posix_unistd_stubs_unlocked.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
open Ctypes

module Def (F : Cstubs.FOREIGN) = struct
  open F

  (* Type alias to fix const char ** vs char *const * mismatch *)
  let argv_t = typedef (ptr string) "char*const*"

  (* Basic I/O operations *)
  let read = foreign "read" (int @-> ptr char @-> int @-> returning int)
  let write = foreign "write" (int @-> ptr char @-> int @-> returning int)

  (* Positioned I/O *)
  let pread =
    foreign "pread" (int @-> ptr char @-> int @-> int @-> returning int)

  let pwrite =
    foreign "pwrite" (int @-> ptr char @-> int @-> int @-> returning int)

  let readlink =
    foreign "readlink" (string @-> ptr char @-> int @-> returning int)

  (* File positioning *)
  let lseek = foreign "lseek" (int @-> int @-> int @-> returning int)

  (* Process operations *)
  let fork = foreign "fork" (void @-> returning int)

  (* Process priority *)
  let nice = foreign "nice" (int @-> returning int)

  (* Sleep operations *)
  let sleep = foreign "sleep" (int @-> returning int)
  let usleep = foreign "usleep" (int @-> returning int)

  (* Signal/timer *)
  let pause = foreign "pause" (void @-> returning int)
  let alarm = foreign "alarm" (int @-> returning int)

  (* Program execution *)
  let execv = foreign "execv" (string @-> argv_t @-> returning int)
  let execve = foreign "execve" (string @-> argv_t @-> argv_t @-> returning int)
  let execvp = foreign "execvp" (string @-> argv_t @-> returning int)

  (* Process termination *)
  let _exit = foreign "_exit" (int @-> returning void)
end