Commit | Line | Data |
---|---|---|
7f918cf1 CE |
1 | signature POSIX_ERROR = |
2 | sig | |
3 | eqtype syserror | |
4 | ||
5 | val toWord: syserror -> SysWord.word | |
6 | val fromWord: SysWord.word -> syserror | |
7 | ||
8 | val errorMsg: syserror -> string | |
9 | val errorName: syserror -> string | |
10 | val syserror: string -> syserror option | |
11 | ||
12 | val acces: syserror | |
13 | val again: syserror | |
14 | val badf: syserror | |
15 | val badmsg: syserror | |
16 | val busy: syserror | |
17 | val canceled: syserror | |
18 | val child: syserror | |
19 | val deadlk: syserror | |
20 | val dom: syserror | |
21 | val exist: syserror | |
22 | val fault: syserror | |
23 | val fbig: syserror | |
24 | val inprogress: syserror | |
25 | val intr: syserror | |
26 | val inval: syserror | |
27 | val io: syserror | |
28 | val isdir: syserror | |
29 | val loop: syserror | |
30 | val mfile: syserror | |
31 | val mlink: syserror | |
32 | val msgsize: syserror | |
33 | val nametoolong: syserror | |
34 | val nfile: syserror | |
35 | val nodev: syserror | |
36 | val noent: syserror | |
37 | val noexec: syserror | |
38 | val nolck: syserror | |
39 | val nomem: syserror | |
40 | val nospc: syserror | |
41 | val nosys: syserror | |
42 | val notdir: syserror | |
43 | val notempty: syserror | |
44 | val notsup: syserror | |
45 | val notty: syserror | |
46 | val nxio: syserror | |
47 | val perm: syserror | |
48 | val pipe: syserror | |
49 | val range: syserror | |
50 | val rofs: syserror | |
51 | val spipe: syserror | |
52 | val srch: syserror | |
53 | val toobig: syserror | |
54 | val xdev: syserror | |
55 | ||
56 | end | |
57 | ||
58 | signature POSIX_ERROR_EXTRA = | |
59 | sig | |
60 | include POSIX_ERROR | |
61 | ||
62 | exception SysErr of string * syserror option | |
63 | ||
64 | val cleared: syserror | |
65 | val raiseSys: syserror -> 'a | |
66 | val raiseSysWithMsg: syserror * string -> 'a | |
67 | ||
68 | structure SysCall : | |
69 | sig | |
70 | val blocker: (unit -> (unit -> unit)) ref | |
71 | val restartFlag: bool ref | |
72 | ||
73 | val syscallErr: | |
74 | {clear: bool, restart: bool, errVal: ''a} * | |
75 | (unit -> {return: ''a C_Errno.t, | |
76 | post: ''a -> 'b, | |
77 | handlers: (syserror * (unit -> 'b)) list}) -> 'b | |
78 | ||
79 | (* clear = false, restart = false, errVal = ~1 | |
80 | * post = fn _ => (), handlers = [] | |
81 | *) | |
82 | val simple: (unit -> C_Int.t C_Errno.t) -> unit | |
83 | (* clear = false, restart = false, | |
84 | * post = fn _ => (), handlers = [] | |
85 | *) | |
86 | val simple': {errVal: ''a} * (unit -> ''a C_Errno.t) -> unit | |
87 | ||
88 | (* clear = false, restart = true, errVal = ~1 | |
89 | * post = fn _ => (), handlers = [] | |
90 | *) | |
91 | val simpleRestart: (unit -> C_Int.t C_Errno.t) -> unit | |
92 | (* clear = false, restart = true, | |
93 | * post = fn _ => (), handlers = [] | |
94 | *) | |
95 | val simpleRestart': {errVal: ''a} * (unit -> ''a C_Errno.t) -> unit | |
96 | ||
97 | (* clear = false, restart = false, errVal = ~1 | |
98 | * post = fn ret => ret, handlers = [] | |
99 | *) | |
100 | val simpleResult: (unit -> C_Int.t C_Errno.t) -> C_Int.t | |
101 | (* clear = false, restart = false, | |
102 | * post = fn ret => ret, handlers = [] | |
103 | *) | |
104 | val simpleResult': {errVal: ''a} * (unit -> ''a C_Errno.t) -> ''a | |
105 | ||
106 | (* clear = false, restart = true, errVal = ~1 | |
107 | * post = fn ret => ret, handlers = [] | |
108 | *) | |
109 | val simpleResultRestart: (unit -> C_Int.t C_Errno.t) -> C_Int.t | |
110 | (* clear = false, restart = true, | |
111 | * post = fn ret => ret, handlers = [] | |
112 | *) | |
113 | val simpleResultRestart': {errVal: ''a} * (unit -> ''a C_Errno.t) -> ''a | |
114 | ||
115 | (* clear = false, restart = false, errVal = ~1 | |
116 | * handlers = [] | |
117 | *) | |
118 | val syscall: (unit -> C_Int.t C_Errno.t * (C_Int.t -> 'a)) -> 'a | |
119 | (* clear = false, restart = false, | |
120 | * handlers = [] | |
121 | *) | |
122 | val syscall': {errVal: ''a} * (unit -> ''a C_Errno.t * (''a -> 'b)) -> 'b | |
123 | ||
124 | (* clear = false, restart = true, errVal = ~1 | |
125 | * handlers = [] | |
126 | *) | |
127 | val syscallRestart: (unit -> C_Int.t C_Errno.t * (C_Int.t -> 'a)) -> 'a | |
128 | (* clear = false, restart = true, | |
129 | * handlers = [] | |
130 | *) | |
131 | val syscallRestart': {errVal: ''a} * (unit -> ''a C_Errno.t * (''a -> 'b)) -> 'b | |
132 | end | |
133 | end |