DEADSOFTWARE

Port, TODO
[bbcp.git] / new / _OpenBSD_ / Lin / Mod / gen-Libc / Libc.txt.templ
1 MODULE LinLibc ["libc.so.66.0"];
3 (*
4 A. V. Shiryaev, 2012.11
6 Based on Linux' LinLibc (OpenBUGS Lin/Mod/Libc.odc)
8 OpenBSD 5.2
9 32-bit
10 *)
12 IMPORT SYSTEM;
14 CONST
15 NULL* = 0H;
16 TRUE* = 1;
17 FALSE* = 0;
19 (* file constants *)
20 SEEK_SET* = 0;
21 SEEK_CUR* = 1;
22 SEEK_END* = 2;
23 NAME_MAX* = 255; (* OpenBSD /usr/include/sys/syslimits.h *)
25 (* The value of CLOCKS_PER_SEC is required to be 1 million on all XSI-conformant systems.*)
26 CLOCKS_PER_SEC* = 100; (* OpenBSD 5.2 /usr/include/time.h CLOCKS_PER_SEC *)
28 (* temp directory defined in stdio.h *)
29 P_tmpdir* = "/tmp";
31 (* signal constants *) (* Fake signal functions. *)
32 (* OpenBSD 5.2 /usr/include/sys/signal.h *)
33 SIG_ERR* = -1; (* Error return. *)
34 SIG_DFL* = 0; (* Default action. *)
35 SIG_IGN* = 1; (* Ignore signal. *)
36 SIG_HOLD* = 3; (* Add signal to hold mask. *) (* OpenBSD 5.2 /usr/include/sys/signalvar.h *)
38 (* Signals. *)
39 (* OpenBSD /usr/include/sys/signal.h *)
40 %%defs-signal%%
41 (* Bits in `sa_flags'. *)
42 %%defs-sa%%
43 (* Some aliases for the SA_ constants. *)
44 (*
45 SA_NOMASK* = SA_NODEFER;
46 SA_ONESHOT* = SA_RESETHAND;
47 SA_STACK* = SA_ONSTACK;
48 *)
50 (* code values for siginfo_t.si_code *)
51 (* OpenBSD /usr/include/sys/siginfo.h *)
52 %%defs-siginfo1%%
54 (* possible error constants for errno *)
55 (* /usr/include/sys/errno.h *)
56 %%defs-errno%%
58 (* OpenBSD 5.2 /usr/include/i386/setjmp.h *)
59 _JBLEN = 10;
61 (* OpenBSD 5.2 /usr/include/sys/mman.h *)
62 MAP_FAILED* = -1;
63 %%defs-mman%%
65 (* OpenBSD 5.2 /usr/include/i386/param.h *)
66 PAGE_SHIFT* = 12;
67 PAGE_SIZE* = 4096; (* LSL(1, PAGE_SHIFT) *)
68 PAGE_MASK* = PAGE_SIZE - 1;
70 (* OpenBSD 5.2: /usr/include/fcntl.h *)
71 %%defs-fcntl%%
73 (* OpenBSD 5.2 /usr/include/unistd.h *)
74 %%defs-sc%%
76 (* OpenBSD 5.2 /usr/include/sys/mman.h *)
77 %%defs-madv%%
78 MADV_NORMAL* = POSIX_MADV_NORMAL;
79 MADV_RANDOM* = POSIX_MADV_RANDOM;
80 MADV_SEQUENTIAL* = POSIX_MADV_SEQUENTIAL;
81 MADV_WILLNEED* = POSIX_MADV_WILLNEED;
82 MADV_DONTNEED* = POSIX_MADV_DONTNEED;
84 (* OpenBSD 5.2 /usr/include/sys/signal.h *)
85 MINSIGSTKSZ* = 8192; (* minimum allowable stack *)
86 SIGSTKSZ* = MINSIGSTKSZ + 32768; (* recommended stack size *)
88 (* OpenBSD 5.2 /usr/include/sys/signal.h *)
89 %%defs-sig%%
91 TYPE
92 (* OpenBSD OK *)
93 __ftw_func_t* = PROCEDURE (fileName: PtrSTR; VAR [nil] stat: stat_t; flag: INTEGER): INTEGER; (* OpenBSD 5.2: OK *)
94 PtrVoid* = INTEGER;
95 PtrSTR* = POINTER TO ARRAY [untagged] OF SHORTCHAR;
96 (* PtrWSTR* = POINTER TO ARRAY [untagged] OF CHAR; *)
97 PtrInt* = INTEGER;
98 StrArray* = POINTER TO ARRAY [untagged] OF PtrSTR;
99 PtrFILE* = INTEGER;
100 PtrDIR* = INTEGER;
101 PtrProc* = INTEGER;
102 clock_t* = INTEGER; (* OpenBSD 5.2 /usr/include/i386/_types.h: 32-bit *)
104 (* jmp_buf* = ARRAY [untagged] 6 OF INTEGER; (* bx, si, di, bp, sp, pc *) *)
105 jmp_buf* = ARRAY [untagged] _JBLEN OF INTEGER; (* OpenBSD 5.2 *)
107 mode_t* = SET; (* OpenBSD 5.2: 32-bit *)
108 off_t* = LONGINT; (* OpenBSD 5.2: 64-bit *)
110 SelectorFunc* = PROCEDURE (dirent: Dirent): INTEGER; (* OpenBSD 5.2: OK *)
111 CmpFunc* = PROCEDURE (VAR [nil] dirent1, dirent2: PtrDirent): INTEGER; (* OpenBSD 5.2: OK *)
113 size_t* = INTEGER; (* should be unsigned int *) (* OpenBSD 5.2: /usr/include/i386/_types.h: 32-bit *)
114 ssize_t* = INTEGER; (* signed int *) (* OpenBSD 5.2: /usr/include/i386/_types.h: 32-bit *)
116 sigjmp_buf* = RECORD [untagged] (* OpenBSD 5.2 *)
117 buf*: jmp_buf;
119 (* mask_was_saved*: INTEGER;
120 saved_mask*: sigset_t; *) (* OpenBSD *)
122 xxx: INTEGER;
123 END;
125 PtrDirent* = POINTER TO Dirent;
126 PtrDirentArray* = POINTER TO ARRAY [untagged] OF Dirent;
128 Dirent* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/sys/dirent.h *)
129 (*
130 d_ino*: INTEGER; (* inode number *)
131 d_off*: off_t; (* offset to this dirent *)
132 d_reclen*: SHORTINT; (* length of this d_name *)
133 d_type*: BYTE;
134 d_name*: ARRAY[untagged] NAME_MAX+1 OF SHORTCHAR; (* file name (null-terminated) *)
135 *)
137 d_fileno*: INTEGER;
138 d_reclen*: SHORTINT;
139 d_type*: BYTE;
140 d_namlen*: BYTE;
141 d_name*: ARRAY [untagged] NAME_MAX + 1 (* 256 *) OF SHORTCHAR;
142 END;
144 pid_t* = INTEGER; (* OpenBSD 5.2: 32-bit *)
145 uid_t* = INTEGER; (* OpenBSD 5.2: 32-bit *)
147 (*
148 sigval_t* = INTEGER; (* OpenBSD: 32-bit (union sigval) *)
149 *)
150 sigval = RECORD [union]
151 sival_int*: INTEGER; (* integer value *)
152 sival_ptr*: PtrVoid; (* pointer value *)
153 END;
155 siginfo_t* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/sys/siginfo.h *)
156 si_signo*: INTEGER; (* signal from signal.h *)
157 si_code*: INTEGER; (* code from above *)
158 si_errno*: INTEGER; (* error from errno.h *)
159 _data*: RECORD [union]
160 _pad*: ARRAY [untagged] 29 (* SI_PAD *) OF INTEGER; (* for future growth *)
161 _proc*: RECORD [untagged] (* kill(), SIGCLD, siqqueue() *)
162 _pid*: pid_t; (* process ID *)
163 _pdata*: RECORD [union]
164 _kill*: RECORD [untagged]
165 _uid*: uid_t;
166 _value*: sigval;
167 END;
168 _cld*: RECORD [untagged]
169 _utime*: clock_t;
170 _status*: INTEGER;
171 _stime*: clock_t;
172 END;
173 END;
174 END;
175 _fault*: RECORD [untagged] (* SIGSEGV, SIGBUS, SIGILL and SIGFPE *)
176 _addr*: PtrVoid; (* faulting address *)
177 _trapno*: INTEGER; (* illegal trap number *)
178 END;
179 END;
180 END;
181 Ptrsiginfo_t* = POINTER TO siginfo_t;
183 (* sigset_t* = ARRAY [untagged] 128 OF BYTE; *)
184 (* OpenBSD 5.2 /usr/include/sys/signal.h *)
185 (* sigset_t* = ARRAY [untagged] 4 OF BYTE; *)
186 sigset_t* = SET;
188 Ptrsigset_t* = INTEGER;
189 sigaction_t* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/sys/signal.h *)
190 sa_sigaction*: PROCEDURE [ccall] (sig: INTEGER; siginfo: Ptrsiginfo_t; ptr: Ptrucontext_t); (* union with sa_handler*: PtrProc;*)
191 sa_mask*: sigset_t;
192 sa_flags*: SET;
193 (* sa_restorer*: LONGINT; *) (* OpenBSD *)
194 END;
196 stack_t* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/sys/signal.h *)
197 ss_sp*: PtrVoid;
198 ss_size*: size_t; (* OpenBSD *)
199 ss_flags*: INTEGER; (* OpenBSD *)
200 END;
202 dev_t* = INTEGER; (* OpenBSD: 32-bit *)
203 gid_t* = INTEGER; (* OpenBSD: 32-bit *)
205 stat_t* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/sys/stat.h *)
206 st_dev*: dev_t; (* device *) (* OpenBSD: 32-bit *)
207 (* __pad1: SHORTINT; *) (* OpenBSD *)
208 st_ino*: INTEGER; (* 64? inode *) (* OpenBSD: 32-bit *)
209 st_mode*: mode_t; (* protection *) (* OpenBSD: 32-bit *)
210 st_nlink*: INTEGER; (* number of hard links *) (* OpenBSD: 32-bit *)
211 st_uid*: uid_t; (* user ID of owner *) (* OpenBSD: 32-bit *)
212 st_gid*: gid_t; (* group ID of owner *) (* OpenBSD: 32-bit *)
213 st_rdev*: dev_t; (* device type (if inode device) *) (* OpenBSD: 32-bit *)
214 st_lspare0*: INTEGER; (* OpenBSD *)
215 (* __pad2: SHORTINT; *) (* OpenBSD *)
217 (* OpenBSD *)
218 st_atime*: time_t;
219 st_atimensec*: INTEGER;
220 st_mtime*: time_t;
221 st_mtimensec*: INTEGER;
222 st_ctime*: time_t;
223 st_ctimensec*: INTEGER;
225 st_size*: off_t; (* 64? total size, in bytes *) (* OpenBSD *)
226 st_blocks*: LONGINT; (* OpenBSD: 64-bit *)
227 st_blksize*: INTEGER; (* blocksize for filesystem I/O *)
228 (* st_blocks*: INTEGER; (* 64? number of blocks allocated *) *) (* OpenBSD *)
229 st_flags*: INTEGER; (* OpenBSD: 32-bit *)
230 st_gen*: INTEGER; (* OpenBSD: 32-bit *)
231 st_lspare1*: INTEGER; (* OpenBSD: 32-bit *)
233 (* OpenBSD
234 st_atime*: INTEGER; (* time of last access *)
235 __unused1: INTEGER;
236 st_mtime*: INTEGER; (* time of last modification *)
237 __unused2: INTEGER;
238 st_ctime*: INTEGER; (* time of last change *)
239 __unused3: INTEGER;
240 __unused4: INTEGER;
241 __unused5: INTEGER;
242 *)
244 (* OpenBSD *)
245 __st_birthtime*: time_t;
246 __st_birthtimensec*: INTEGER;
247 st_qspare*: ARRAY [untagged] 2 OF LONGINT;
248 END;
250 (* OpenBSD
251 fpreg* = RECORD [untagged]
252 significand*: ARRAY [untagged] 4 OF CHAR;
253 exponent*: CHAR;
254 END;
255 *)
257 (* OpenBSD *)
258 (*
259 fpstate* = RECORD [untagged]
260 cw*: INTEGER; (* unsigned long int *)
261 sw*: INTEGER; (* unsigned long int *)
262 tag*: INTEGER; (* unsigned long int *)
263 ipoff*: INTEGER; (* unsigned long int *)
264 cssel*: INTEGER; (* unsigned long int *)
265 dataoff*: INTEGER; (* unsigned long int *)
266 datasel*: INTEGER; (* unsigned long int *)
267 _st: ARRAY [untagged] 8 OF fpreg;
268 status*: INTEGER; (* unsigned long int *)
269 END;
270 *)
271 envxmm* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/i386/npx.h *)
272 (*0*)
273 en_cw*: SHORTINT; (* FPU Control Word *)
274 en_sw*: SHORTINT; (* FPU Status Word *)
275 en_tw*: BYTE; (* FPU Tag Word (abridged) *)
276 en_rsvd0*: BYTE;
277 en_opcode*: SHORTINT; (* FPU Opcode *)
278 en_fip*: INTEGER; (* FPU Instruction Pointer *)
279 en_fcs*: SHORTINT; (* FPU IP selector *)
280 en_rsvd1*: SHORTINT;
281 (*16*)
282 en_foo*: INTEGER; (* FPU Data pointer *)
283 en_fos*: SHORTINT; (* FPU Data pointer selector *)
284 en_rsvd2*: SHORTINT;
285 en_mxcsr*: INTEGER; (* MXCSR Register State *)
286 en_mxcsr_mask*: INTEGER; (* Mask for valid MXCSR bits (may be 0) *)
287 END;
288 (* FPU regsters in the extended save format. *)
289 fpaccxmm* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/i386/npx.h *)
290 fp_bytes*: ARRAY [untagged] 10 OF BYTE;
291 fp_rsvd*: ARRAY [untagged] 6 OF BYTE;
292 END;
293 (* SSE/SSE2 registers. *)
294 xmmreg* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/i386/npx.h *)
295 sse_bytes*: ARRAY [untagged] 16 OF BYTE;
296 END;
297 fpstate* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/i386/npx.h savefpu.savexmm *)
298 sv_env*: envxmm; (* control/status context *)
299 sv_ac*: ARRAY [untagged] 8 OF fpaccxmm; (* ST/MM regs *)
300 sv_xmmregs*: ARRAY [untagged] 8 OF xmmreg; (* XMM regs *)
301 sv_rsvd*: ARRAY [untagged] 16 * 14 OF BYTE;
302 (* 512-bytes --- end of hardware portion of save area *)
303 sv_ex_sw*: INTEGER; (* saved SW from last exception *)
304 sv_ex_tw*: INTEGER; (* saved TW from last exception *)
305 END;
307 (* OpenBSD
308 gregset_t* = ARRAY [untagged] 19 OF INTEGER;
309 *)
310 fpregset_t* = POINTER TO fpstate;
312 (* OpenBSD
313 mcontext_t* = RECORD [untagged]
314 gregs*: gregset_t;
315 fpregs*: fpregset_t;
316 oldmask*: INTEGER; (* unsigned long int *)
317 cr2*: INTEGER; (* unsigned long int *)
318 END;
319 *)
321 Ptrucontext_t* = POINTER TO ucontext_t;
322 ucontext_t* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/i386/signal.h struct sigcontext *)
323 (*
324 uc_flags*: INTEGER; (* unsigned long int *)
325 uc_link*: Ptrucontext_t;
326 uc_stack*: stack_t;
327 uc_mcontext*: mcontext_t;
328 uc_sigmask: sigset_t;
329 __fpregs_mem*: fpstate;
330 *)
332 sc_gs*: INTEGER;
333 sc_fs*: INTEGER;
334 sc_es*: INTEGER;
335 sc_ds*: INTEGER;
336 sc_edi*: INTEGER;
337 sc_esi*: INTEGER;
338 sc_ebp*: INTEGER;
339 sc_ebx*: INTEGER;
340 sc_edx*: INTEGER;
341 sc_ecx*: INTEGER;
342 sc_eax*: INTEGER;
343 (* XXX *)
344 sc_eip*: INTEGER;
345 sc_cs*: INTEGER;
346 sc_eflags*: INTEGER;
347 sc_esp*: INTEGER;
348 sc_ss*: INTEGER;
350 sc_onstack*: INTEGER; (* sigstack state to restore *)
351 sc_mask*: INTEGER; (* signal mask to restore *)
352 sc_trapno*: INTEGER; (* XXX should be above *)
353 sc_err*: INTEGER;
355 sc_fpstate*: fpregset_t; (* POINTER TO savefpu *)
356 END;
358 (* Times and Dates *)
360 tm* = POINTER TO tmDesc;
361 tmDesc* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/time.h *)
362 tm_sec*: INTEGER; (* seconds *)
363 tm_min*: INTEGER; (* minutes *)
364 tm_hour*: INTEGER; (* hours *)
365 tm_mday*: INTEGER; (* day of the month *)
366 tm_mon*: INTEGER; (* month *)
367 tm_year*: INTEGER; (* year *)
368 tm_wday*: INTEGER; (* day of the week *)
369 tm_yday*: INTEGER; (* day in the year *)
370 tm_isdst*: INTEGER; (* daylight saving time *)
372 tm_gmtoff*: INTEGER; (* OpenBSD *)
373 tm_zone*: PtrSTR; (* OpenBSD *)
374 END;
376 time_t* = INTEGER; (* OpenBSD 5.2 /usr/include/i386/_types.h: 32-bit *)
378 FILE = ARRAY [untagged] 88 OF BYTE; (* OpenBSD 5.2 /usr/include/stdio.h *)
380 wchar_t* = INTEGER; (* OpenBSD 5.2: 32-bit *)
381 PtrWSTR* = POINTER TO ARRAY [untagged] OF wchar_t;
383 (* OpenBSD 5.2 *)
384 sigaltstack_t* = RECORD [untagged]
385 ss_sp*: PtrVoid;
386 ss_size*: size_t;
387 ss_flags*: INTEGER;
388 END;
390 VAR
391 (* timezone*: INTEGER; (* seconds from GMT *) *) (* OpenBSD: not present *)
392 (* stdin*, stdout*, stderr* : PtrFILE; (* OpenBSD: not present *) *)
394 (* OpenBSD: stdin, stdout, stderr *)
395 __sF*: ARRAY [untagged] 3 OF FILE; (* OpenBSD 5.2 /usr/include/stdio.h *)
396 (*
397 stdin = SYSTEM.ADR(__sF[0])
398 stdout = SYSTEM.ADR(__sF[1])
399 stderr = SYSTEM.ADR(__sF[2])
400 *)
402 PROCEDURE [ccall] calloc* (nmemb, size: size_t): PtrVoid;
403 PROCEDURE [ccall] clock* (): clock_t;
405 PROCEDURE [ccall] closedir* (dir: PtrDIR): INTEGER;
407 PROCEDURE [ccall] chmod* (path: PtrSTR; mode: mode_t);
408 PROCEDURE [ccall] exit* (status: INTEGER);
410 PROCEDURE [ccall] fclose* (fp: PtrFILE): INTEGER;
411 PROCEDURE [ccall] fflush* (fp: PtrFILE): INTEGER;
412 PROCEDURE [ccall] fopen* (filename, mode: PtrSTR): PtrFILE;
413 PROCEDURE [ccall] feof* (fp: PtrFILE): INTEGER;
414 PROCEDURE [ccall] fread* (ptr: PtrVoid; size, nmemb: size_t; stream: PtrFILE): size_t;
415 PROCEDURE [ccall] fseek* (stream: PtrFILE; offset, origin: INTEGER): INTEGER;
416 PROCEDURE [ccall] free* (p: PtrVoid);
418 PROCEDURE [ccall] ftell* (stream: PtrFILE): (* LONGINT; *) INTEGER; (* OpenBSD 5.2 *)
420 PROCEDURE [ccall] ftw* (filename: PtrSTR; func: __ftw_func_t; maxfds: INTEGER): INTEGER;
421 PROCEDURE [ccall] fwrite* (ptr: PtrVoid; size, nmemb: size_t; stream: PtrFILE): size_t;
422 PROCEDURE [ccall] getcwd* (buf: PtrSTR; size: size_t): PtrSTR;
424 (* PROCEDURE [ccall] getcontext* (ucontext_t: Ptrucontext_t): INTEGER; *) (* OpenBSD *)
426 (* PROCEDURE [ccall] gets* (s: PtrSTR); *)
427 PROCEDURE [ccall] gets* (s: PtrSTR): PtrSTR; (* OpenBSD 5.2 *)
429 PROCEDURE [ccall] fgets* (s: PtrSTR; n: INTEGER; fp: PtrFILE): PtrSTR;
430 PROCEDURE [ccall] gmtime* (VAR timep: time_t): tm;
431 PROCEDURE [ccall] kill* (pid: pid_t; sig: INTEGER): INTEGER;
432 PROCEDURE [ccall] localtime* (VAR timep: time_t): tm;
433 PROCEDURE [ccall] malloc* (size: size_t): PtrVoid;
434 PROCEDURE [ccall] mkdir* (path: PtrSTR; mode: mode_t): INTEGER;
435 PROCEDURE [ccall] mktime* (timeptr: tm): time_t;
436 PROCEDURE [ccall] opendir* (filename: PtrSTR): PtrDIR;
437 PROCEDURE [ccall] printf* (s: PtrSTR): INTEGER;
438 PROCEDURE [ccall] readdir* (dir: PtrDIR): PtrDirent;
439 PROCEDURE [ccall] remove* (path: PtrSTR): INTEGER;
440 PROCEDURE [ccall] rename* (from, to: PtrSTR): INTEGER;
441 PROCEDURE [ccall] scandir* (dir: PtrDIR; namelist: PtrDirentArray; selector: SelectorFunc; cmp: CmpFunc): INTEGER;
443 (* PROCEDURE [ccall] setcontext* (ucontext_t: Ptrucontext_t): INTEGER; *) (* OpenBSD *)
445 PROCEDURE [ccall] setjmp* (VAR env: jmp_buf): INTEGER;
446 PROCEDURE [ccall] sigaction* (sig_num: INTEGER; VAR [nil] act: sigaction_t; VAR [nil] oldact: sigaction_t): INTEGER;
447 PROCEDURE [ccall] sigaddset* (set: Ptrsigset_t; sig: INTEGER): INTEGER;
448 PROCEDURE [ccall] sigdelset* (set: Ptrsigset_t; sig: INTEGER): INTEGER;
449 PROCEDURE [ccall] sigemptyset* (set: Ptrsigset_t): INTEGER;
450 PROCEDURE [ccall] sigfillset* (set: Ptrsigset_t): INTEGER;
451 PROCEDURE [ccall] sigismemeber* (set: Ptrsigset_t; sig: INTEGER): INTEGER;
452 PROCEDURE [ccall] siglongjmp* (VAR env: sigjmp_buf; val: INTEGER);
454 PROCEDURE [ccall] signal* (sig_num: INTEGER; sighandler: PtrProc): PtrProc;
455 (* PROCEDURE [ccall] sigsetjmp* ["__sigsetjmp"] (VAR env: sigjmp_buf; savemask: INTEGER): INTEGER; *)
456 PROCEDURE [ccall] sigsetjmp* (VAR env: sigjmp_buf; savemask: INTEGER): INTEGER; (* OpenBSD *)
458 (* OpenBSD *)
459 PROCEDURE [ccall] stat* (filename: PtrSTR; VAR buf: stat_t): INTEGER; (* stat is a macro and expands to __xstat(3, filename, buf) *)
460 (* OpenBSD: __xstat not present
461 PROCEDURE [ccall] __xstat* (version: INTEGER; filename: PtrSTR; VAR buf: stat_t): INTEGER;
462 *)
464 PROCEDURE [ccall] strftime* (s: PtrSTR; max: size_t; format: PtrSTR; ptm: tm): size_t;
465 PROCEDURE [ccall] time* (VAR [nil] t: time_t): time_t;
467 (* PROCEDURE [ccall] __errno_location*(): INTEGER; *)
468 PROCEDURE [ccall] __errno_location* ["__errno"] (): INTEGER; (* OpenBSD *)
470 PROCEDURE [ccall] open* (path: PtrSTR; flags: SET; mode: mode_t): INTEGER;
471 PROCEDURE [ccall] close* (d: INTEGER): INTEGER;
472 PROCEDURE [ccall] read* (d: INTEGER; buf: PtrVoid; nbytes: size_t): ssize_t;
473 PROCEDURE [ccall] write* (d: INTEGER; buf: PtrVoid; nBytes: size_t): ssize_t;
475 (* OpenBSD *)
476 PROCEDURE [ccall] mprotect* (addr: PtrVoid; len: size_t; prot: SET): INTEGER;
478 (* OpenBSD 5.2 *)
479 PROCEDURE [ccall] madvise* (addr: PtrVoid; len: size_t; behav: INTEGER): INTEGER;
481 PROCEDURE [ccall] mmap* (addr: PtrVoid; len: size_t; prot: SET; flags: SET; fd: INTEGER; offset: off_t): PtrVoid;
482 PROCEDURE [ccall] munmap* (addr: PtrVoid; len: size_t): INTEGER;
484 PROCEDURE [ccall] getenv* (name: PtrSTR): PtrSTR;
486 (* OpenBSD 5.2: Ok *)
487 PROCEDURE [ccall] wctomb* (s: PtrSTR; wchar: wchar_t): INTEGER;
488 PROCEDURE [ccall] wcstombs* (s: PtrSTR; pwcs: PtrWSTR; n: size_t): size_t;
489 PROCEDURE [ccall] mbtowc* (pwc: PtrWSTR; s: PtrSTR; n: size_t): INTEGER;
490 PROCEDURE [ccall] mbstowcs* (pwcs: PtrWSTR; s: PtrSTR; n: size_t): size_t;
492 (* OpenBSD 5.2 *)
493 PROCEDURE [ccall] sysconf* (name: INTEGER): INTEGER;
495 PROCEDURE [ccall] sigaltstack* (VAR [nil] ss: sigaltstack_t; VAR [nil] oss: sigaltstack_t): INTEGER;
497 PROCEDURE [ccall] sigreturn* (ucontext_t: Ptrucontext_t): INTEGER;
499 PROCEDURE [ccall] sigprocmask* (how: INTEGER; VAR [nil] set: sigset_t; VAR [nil] oset: sigset_t): INTEGER;
501 END LinLibc.