Import Upstream version 20180207
[hcoop/debian/mlton.git] / basis-library / libs / basis-1997 / posix / io.sig
1 signature POSIX_IO_1997 =
2 sig
3 eqtype file_desc
4 eqtype pid
5
6 val pipe: unit -> {infd: file_desc, outfd: file_desc}
7 val dup: file_desc -> file_desc
8 val dup2: {old: file_desc, new: file_desc} -> unit
9
10 val close: file_desc -> unit
11 val readVec: file_desc * int -> Word8Vector.vector
12 val readArr: file_desc * {buf: Word8Array.array,
13 i: int,
14 sz: int option} -> int
15 val writeVec: file_desc * {buf: Word8Vector.vector,
16 i: int,
17 sz: int option} -> int
18 val writeArr: file_desc * {buf: Word8Array.array,
19 i: int,
20 sz: int option} -> int
21
22 datatype whence = SEEK_SET | SEEK_CUR | SEEK_END
23
24 structure FD:
25 sig
26 include POSIX_FLAGS_1997
27
28 val cloexec: flags
29 end
30
31 structure O:
32 sig
33 include POSIX_FLAGS_1997
34
35 val append: flags
36 val nonblock: flags
37 val sync: flags
38 end
39
40 datatype open_mode = O_RDONLY | O_WRONLY | O_RDWR
41
42 val dupfd: {old: file_desc, base: file_desc} -> file_desc
43 val getfd: file_desc -> FD.flags
44 val setfd: file_desc * FD.flags -> unit
45 val getfl: file_desc -> O.flags * open_mode
46 val setfl: file_desc * O.flags -> unit
47 val lseek: file_desc * Position.int * whence -> Position.int
48 val fsync: file_desc -> unit
49
50 datatype lock_type =
51 F_RDLCK
52 | F_WRLCK
53 | F_UNLCK
54
55 structure FLock:
56 sig
57 type flock
58 val flock: {
59 ltype: lock_type,
60 whence: whence,
61 start: Position.int,
62 len: Position.int,
63 pid: pid option
64 } -> flock
65 val ltype: flock -> lock_type
66 val whence: flock -> whence
67 val start: flock -> Position.int
68 val len: flock -> Position.int
69 val pid: flock -> pid option
70 end
71
72 val getlk: file_desc * FLock.flock -> FLock.flock
73 val setlk: file_desc * FLock.flock -> FLock.flock
74 val setlkw: file_desc * FLock.flock -> FLock.flock
75 end