DEADSOFTWARE

CommV24 fixed (Linux)
[bbcp.git] / Trurl-based / _OpenBSD_ / Lin / Mod / Libc.txt
1 MODULE LinLibc ["libc.so.66.0"];
3 (*
4 A. V. Shiryaev, 2012.09
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 _NSIG* = 33; (* counting 0 (mask is 1-32) *)
41 SIGHUP* = 1; (* hangup *)
42 SIGINT* = 2; (* interrupt *)
43 SIGQUIT* = 3; (* quit *)
44 SIGILL* = 4; (* illegal instruction (not reset when caught) *)
45 SIGTRAP* = 5; (* trace trap (not reset when caught) *)
46 SIGABRT* = 6; (* abort() *)
47 SIGFPE* = 8; (* floating point exception *)
48 SIGKILL* = 9; (* kill (cannot be caught or ignored) *)
49 SIGBUS* = 10; (* bus error *)
50 SIGSEGV* = 11; (* segmentation violation *)
51 SIGSYS* = 12; (* bad argument to system call *)
52 SIGPIPE* = 13; (* write on a pipe with no one to read it *)
53 SIGALRM* = 14; (* alarm clock *)
54 SIGTERM* = 15; (* software termination signal from kill *)
55 SIGURG* = 16; (* urgent condition on IO channel *)
56 SIGSTOP* = 17; (* sendable stop signal not from tty *)
57 SIGTSTP* = 18; (* stop signal from tty *)
58 SIGCONT* = 19; (* continue a stopped process *)
59 SIGCHLD* = 20; (* to parent on child stop or exit *)
60 SIGTTIN* = 21; (* to readers pgrp upon background tty read *)
61 SIGTTOU* = 22; (* like TTIN for output if (tp->t_local&LTOSTOP) *)
62 SIGXCPU* = 24; (* exceeded CPU time limit *)
63 SIGXFSZ* = 25; (* exceeded file size limit *)
64 SIGVTALRM* = 26; (* virtual time alarm *)
65 SIGPROF* = 27; (* profiling time alarm *)
66 SIGUSR1* = 30; (* user defined signal 1 *)
67 SIGUSR2* = 31; (* user defined signal 2 *)
68 SIGWINCH* = 28; (* window size changes *)
69 SIGTHR* = 32; (* thread library AST *)
72 (* Bits in `sa_flags'. *)
73 SA_NOCLDSTOP* = {3}; (* = 1 Don't send SIGCHLD when children stop. *) (* OpenBSD *)
74 SA_NOCLDWAIT* = {5}; (* = 2 Don't create zombie on child death. *) (* OpenBSD *)
75 SA_SIGINFO* = {6}; (* = 4 Invoke signal-catching function wth three arguments instead of one. *) (* OpenBSD *)
76 SA_ONSTACK* = {0}; (* = 0x08000000 Use signal stack by using `sa_restorer'. *) (* OpenBSD *)
77 SA_RESTART* = {1}; (* = 0x10000000 Restart syscall on signal return. *) (* OpenBSD *)
78 SA_NODEFER* = {4}; (* = 0x40000000 Don't automatically block the signal when its handler is being executed. *) (* OpenBSD *)
79 SA_RESETHAND* = {2}; (* = 0x80000000 Reset to SIG_DFL on entry to handler. *) (* OpenBSD *)
80 (* SA_INTERRUPT* = {29}; (* = 0x20000000 Historical no-op. *) *) (* OpenBSD *)
81 (* Some aliases for the SA_ constants. *)
82 SA_NOMASK* = SA_NODEFER;
83 SA_ONESHOT* = SA_RESETHAND;
84 SA_STACK* = SA_ONSTACK;
86 (* code values for siginfo_t.si_code *)
87 (* OpenBSD /usr/include/sys/siginfo.h *)
88 FPE_INTDIV* = 1; (* integer divide by zero *)
89 FPE_INTOVF* = 2; (* integer overflow *)
90 FPE_FLTDIV* = 3; (* floating point divide by zero *)
91 FPE_FLTOVF* = 4; (* floating point overflow *)
92 FPE_FLTUND* = 5; (* floating point underflow *)
93 FPE_FLTRES* = 6; (* floating point inexact result *)
94 FPE_FLTINV* = 7; (* invalid floating point operation *)
95 FPE_FLTSUB* = 8; (* subscript out of range *)
96 ILL_ILLOPC* = 1; (* illegal opcode *)
97 ILL_ILLOPN* = 2; (* illegal operand *)
98 ILL_ILLADR* = 3; (* illegal addressing mode *)
99 ILL_ILLTRP* = 4; (* illegal trap *)
100 ILL_PRVOPC* = 5; (* privileged opcode *)
101 ILL_PRVREG* = 6; (* privileged register *)
102 ILL_COPROC* = 7; (* co-processor *)
103 ILL_BADSTK* = 8; (* bad stack *)
104 SEGV_MAPERR* = 1; (* address not mapped to object *)
105 SEGV_ACCERR* = 2; (* invalid permissions *)
106 BUS_ADRALN* = 1; (* invalid address alignment *)
107 BUS_ADRERR* = 2; (* non-existent physical address *)
108 BUS_OBJERR* = 3; (* object specific hardware error *)
111 (* possible error constants for errno *)
112 (* OpenBSD /usr/include/sys/errno.h *)
113 EPERM* = 1; (* Operation not permitted *)
114 ENOENT* = 2; (* No such file or directory *)
115 ESRCH* = 3; (* No such process *)
116 EINTR* = 4; (* Interrupted system call *)
117 EIO* = 5; (* Input/output error *)
118 ENXIO* = 6; (* Device not configured *)
119 E2BIG* = 7; (* Argument list too long *)
120 ENOEXEC* = 8; (* Exec format error *)
121 EBADF* = 9; (* Bad file descriptor *)
122 ECHILD* = 10; (* No child processes *)
123 EDEADLK* = 11; (* Resource deadlock avoided *)
124 ENOMEM* = 12; (* Cannot allocate memory *)
125 EACCES* = 13; (* Permission denied *)
126 EFAULT* = 14; (* Bad address *)
127 EBUSY* = 16; (* Device busy *)
128 EEXIST* = 17; (* File exists *)
129 EXDEV* = 18; (* Cross-device link *)
130 ENODEV* = 19; (* Operation not supported by device *)
131 ENOTDIR* = 20; (* Not a directory *)
132 EISDIR* = 21; (* Is a directory *)
133 EINVAL* = 22; (* Invalid argument *)
134 ENFILE* = 23; (* Too many open files in system *)
135 EMFILE* = 24; (* Too many open files *)
136 ENOTTY* = 25; (* Inappropriate ioctl for device *)
137 ETXTBSY* = 26; (* Text file busy *)
138 EFBIG* = 27; (* File too large *)
139 ENOSPC* = 28; (* No space left on device *)
140 ESPIPE* = 29; (* Illegal seek *)
141 EROFS* = 30; (* Read-only file system *)
142 EMLINK* = 31; (* Too many links *)
143 EPIPE* = 32; (* Broken pipe *)
144 EDOM* = 33; (* Numerical argument out of domain *)
145 ERANGE* = 34; (* Result too large *)
146 EAGAIN* = 35; (* Resource temporarily unavailable *)
147 EWOULDBLOCK* = EAGAIN; (* Operation would block *)
148 EINPROGRESS* = 36; (* Operation now in progress *)
149 EALREADY* = 37; (* Operation already in progress *)
150 ENOTSOCK* = 38; (* Socket operation on non-socket *)
151 EDESTADDRREQ* = 39; (* Destination address required *)
152 EMSGSIZE* = 40; (* Message too long *)
153 EPROTOTYPE* = 41; (* Protocol wrong type for socket *)
154 ENOPROTOOPT* = 42; (* Protocol not available *)
155 EPROTONOSUPPORT* = 43; (* Protocol not supported *)
156 EOPNOTSUPP* = 45; (* Operation not supported *)
157 EAFNOSUPPORT* = 47; (* Address family not supported by protocol family *)
158 EADDRINUSE* = 48; (* Address already in use *)
159 EADDRNOTAVAIL* = 49; (* Can't assign requested address *)
160 ENETDOWN* = 50; (* Network is down *)
161 ENETUNREACH* = 51; (* Network is unreachable *)
162 ENETRESET* = 52; (* Network dropped connection on reset *)
163 ECONNABORTED* = 53; (* Software caused connection abort *)
164 ECONNRESET* = 54; (* Connection reset by peer *)
165 ENOBUFS* = 55; (* No buffer space available *)
166 EISCONN* = 56; (* Socket is already connected *)
167 ENOTCONN* = 57; (* Socket is not connected *)
168 ETIMEDOUT* = 60; (* Operation timed out *)
169 ECONNREFUSED* = 61; (* Connection refused *)
170 ELOOP* = 62; (* Too many levels of symbolic links *)
171 ENAMETOOLONG* = 63; (* File name too long *)
172 ENOTEMPTY* = 66; (* Directory not empty *)
173 EDQUOT* = 69; (* Disk quota exceeded *)
174 ESTALE* = 70; (* Stale NFS file handle *)
175 ENOLCK* = 77; (* No locks available *)
176 ENOSYS* = 78; (* Function not implemented *)
177 EILSEQ* = 84; (* Illegal byte sequence *)
178 EIDRM* = 89; (* Identifier removed *)
179 ENOMSG* = 90; (* No message of desired type *)
180 ENOTSUP* = 91; (* Not supported *)
183 (* OpenBSD 5.2 /usr/include/i386/setjmp.h *)
184 _JBLEN = 10;
186 (* OpenBSD 5.2 /usr/include/sys/mman.h *)
187 PROT_NONE* = {}; (* no permission *)
188 PROT_READ* = {0}; (* pages can be read *)
189 PROT_WRITE* = {1}; (* pages can be written *)
190 PROT_EXEC* = {2}; (* pages can be executed *)
192 (* OpenBSD 5.2 /usr/include/sys/mman.h *)
193 MAP_FILE* = {}; (* map from file (default) *)
194 MAP_ANON* = {12}; (* allocated from memory, swap space *)
195 MAP_FIXED* = {4}; (* map addr must be exactly as requested *)
196 MAP_HASSEMAPHORE* = {9}; (* region may contain semaphores *)
197 MAP_INHERIT* = {7}; (* region is retained after exec *)
198 MAP_PRIVATE* = {1}; (* changes are private *)
199 MAP_SHARED* = {0}; (* share changes *)
200 MAP_TRYFIXED* = {10}; (* attempt hint address, even within heap *)
201 MAP_COPY* = {2}; (* "copy" region at mmap time *)
203 MAP_FAILED* = -1;
205 (* OpenBSD 5.2 /usr/include/i386/param.h *)
206 PAGE_SHIFT* = 12;
207 PAGE_SIZE* = 4096; (* LSL(1, PAGE_SHIFT) *)
208 PAGE_MASK* = PAGE_SIZE - 1;
210 (* OpenBSD 5.2: /usr/include/fcntl.h *)
211 O_RDONLY* = {};
212 O_WRONLY* = {0};
213 O_RDWR* = {1};
214 O_ACCMODE* = {0,1};
216 O_NONBLOCK* = {2}; (* Do not block on open or for data to become available *)
217 O_APPEND* = {3}; (* Append on each write *)
218 O_CREAT* = {9}; (* Create file if it does not exist *)
219 O_TRUNC* = {10}; (* Truncate size to 0 *)
220 O_EXCL* = {11}; (* Error if create and file exists *)
221 O_SYNC* = {7}; (* Perform synchronous I/O operations *)
222 O_SHLOCK* = {4}; (* Atomically obtain a shared lock *)
223 O_EXLOCK* = {5}; (* Atomically obtain an exclusive lock *)
224 O_NOFOLLOW* = {8}; (* If last path element is a symlink, don't follow it *)
225 O_CLOEXEC* = {16}; (* Set FD_CLOEXEC on the new file descriptor *)
226 O_DIRECTORY* = {17}; (* Error if path does not name a directory *)
228 (* OpenBSD 5.2 /usr/include/unistd.h *)
229 _SC_ARG_MAX* = 1;
230 _SC_CHILD_MAX* = 2;
231 _SC_CLK_TCK* = 3;
232 _SC_NGROUPS_MAX* = 4;
233 _SC_OPEN_MAX* = 5;
234 _SC_JOB_CONTROL* = 6;
235 _SC_SAVED_IDS* = 7;
236 _SC_VERSION* = 8;
237 _SC_BC_BASE_MAX* = 9;
238 _SC_BC_DIM_MAX* = 10;
239 _SC_BC_SCALE_MAX* = 11;
240 _SC_BC_STRING_MAX* = 12;
241 _SC_COLL_WEIGHTS_MAX* = 13;
242 _SC_EXPR_NEST_MAX* = 14;
243 _SC_LINE_MAX* = 15;
244 _SC_RE_DUP_MAX* = 16;
245 _SC_2_VERSION* = 17;
246 _SC_2_C_BIND* = 18;
247 _SC_2_C_DEV* = 19;
248 _SC_2_CHAR_TERM* = 20;
249 _SC_2_FORT_DEV* = 21;
250 _SC_2_FORT_RUN* = 22;
251 _SC_2_LOCALEDEF* = 23;
252 _SC_2_SW_DEV* = 24;
253 _SC_2_UPE* = 25;
254 _SC_STREAM_MAX* = 26;
255 _SC_TZNAME_MAX* = 27;
256 _SC_PAGESIZE* = 28;
257 _SC_PAGE_SIZE* = _SC_PAGESIZE; (* 1170 compatibility *)
258 _SC_FSYNC* = 29;
259 _SC_XOPEN_SHM* = 30;
260 _SC_SEM_NSEMS_MAX* = 31;
261 _SC_SEM_VALUE_MAX* = 32;
262 _SC_HOST_NAME_MAX* = 33;
263 _SC_MONOTONIC_CLOCK* = 34;
264 _SC_2_PBS* = 35;
265 _SC_2_PBS_ACCOUNTING* = 36;
266 _SC_2_PBS_CHECKPOINT* = 37;
267 _SC_2_PBS_LOCATE* = 38;
268 _SC_2_PBS_MESSAGE* = 39;
269 _SC_2_PBS_TRACK* = 40;
270 _SC_ADVISORY_INFO* = 41;
271 _SC_AIO_LISTIO_MAX* = 42;
272 _SC_AIO_MAX* = 43;
273 _SC_AIO_PRIO_DELTA_MAX* = 44;
274 _SC_ASYNCHRONOUS_IO* = 45;
275 _SC_ATEXIT_MAX* = 46;
276 _SC_BARRIERS* = 47;
277 _SC_CLOCK_SELECTION* = 48;
278 _SC_CPUTIME* = 49;
279 _SC_DELAYTIMER_MAX* = 50;
280 _SC_IOV_MAX* = 51;
281 _SC_IPV6* = 52;
282 _SC_MAPPED_FILES* = 53;
283 _SC_MEMLOCK* = 54;
284 _SC_MEMLOCK_RANGE* = 55;
285 _SC_MEMORY_PROTECTION* = 56;
286 _SC_MESSAGE_PASSING* = 57;
287 _SC_MQ_OPEN_MAX* = 58;
288 _SC_MQ_PRIO_MAX* = 59;
289 _SC_PRIORITIZED_IO* = 60;
290 _SC_PRIORITY_SCHEDULING* = 61;
291 _SC_RAW_SOCKETS* = 62;
292 _SC_READER_WRITER_LOCKS* = 63;
293 _SC_REALTIME_SIGNALS* = 64;
294 _SC_REGEXP* = 65;
295 _SC_RTSIG_MAX* = 66;
296 _SC_SEMAPHORES* = 67;
297 _SC_SHARED_MEMORY_OBJECTS* = 68;
298 _SC_SHELL* = 69;
299 _SC_SIGQUEUE_MAX* = 70;
300 _SC_SPAWN* = 71;
301 _SC_SPIN_LOCKS* = 72;
302 _SC_SPORADIC_SERVER* = 73;
303 _SC_SS_REPL_MAX* = 74;
304 _SC_SYNCHRONIZED_IO* = 75;
305 _SC_SYMLOOP_MAX* = 76;
306 _SC_THREAD_ATTR_STACKADDR* = 77;
307 _SC_THREAD_ATTR_STACKSIZE* = 78;
308 _SC_THREAD_CPUTIME* = 79;
309 _SC_THREAD_DESTRUCTOR_ITERATIONS* = 80;
310 _SC_THREAD_KEYS_MAX* = 81;
311 _SC_THREAD_PRIO_INHERIT* = 82;
312 _SC_THREAD_PRIO_PROTECT* = 83;
313 _SC_THREAD_PRIORITY_SCHEDULING* = 84;
314 _SC_THREAD_PROCESS_SHARED* = 85;
315 _SC_THREAD_ROBUST_PRIO_INHERIT* = 86;
316 _SC_THREAD_ROBUST_PRIO_PROTECT* = 87;
317 _SC_THREAD_SPORADIC_SERVER* = 88;
318 _SC_THREAD_STACK_MIN* = 89;
319 _SC_THREAD_THREADS_MAX* = 90;
320 _SC_THREADS* = 91;
321 _SC_TIMEOUTS* = 92;
322 _SC_TIMER_MAX* = 93;
323 _SC_TIMERS* = 94;
324 _SC_TRACE* = 95;
325 _SC_TRACE_EVENT_FILTER* = 96;
326 _SC_TRACE_EVENT_NAME_MAX* = 97;
327 _SC_TRACE_INHERIT* = 98;
328 _SC_TRACE_LOG* = 99;
329 _SC_GETGR_R_SIZE_MAX* = 100;
330 _SC_GETPW_R_SIZE_MAX* = 101;
331 _SC_LOGIN_NAME_MAX* = 102;
332 _SC_THREAD_SAFE_FUNCTIONS* = 103;
333 _SC_TRACE_NAME_MAX* = 104;
334 _SC_TRACE_SYS_MAX* = 105;
335 _SC_TRACE_USER_EVENT_MAX* = 106;
336 _SC_TTY_NAME_MAX* = 107;
337 _SC_TYPED_MEMORY_OBJECTS* = 108;
338 _SC_V6_ILP32_OFF32* = 109;
339 _SC_V6_ILP32_OFFBIG* = 110;
340 _SC_V6_LP64_OFF64* = 111;
341 _SC_V6_LPBIG_OFFBIG* = 112;
342 _SC_V7_ILP32_OFF32* = 113;
343 _SC_V7_ILP32_OFFBIG* = 114;
344 _SC_V7_LP64_OFF64* = 115;
345 _SC_V7_LPBIG_OFFBIG* = 116;
346 _SC_XOPEN_CRYPT* = 117;
347 _SC_XOPEN_ENH_I18N* = 118;
348 _SC_XOPEN_LEGACY* = 119;
349 _SC_XOPEN_REALTIME* = 120;
350 _SC_XOPEN_REALTIME_THREADS* = 121;
351 _SC_XOPEN_STREAMS* = 122;
352 _SC_XOPEN_UNIX* = 123;
353 _SC_XOPEN_UUCP* = 124;
354 _SC_XOPEN_VERSION* = 125;
355 _SC_PHYS_PAGES* = 500;
356 _SC_AVPHYS_PAGES* = 501;
357 _SC_NPROCESSORS_CONF* = 502;
358 _SC_NPROCESSORS_ONLN* = 503;
361 (* OpenBSD 5.2 /usr/include/sys/mman.h *)
362 POSIX_MADV_NORMAL* = 0; (* no further special treatment *)
363 POSIX_MADV_RANDOM* = 1; (* expect random page references *)
364 POSIX_MADV_SEQUENTIAL* = 2; (* expect sequential page references *)
365 POSIX_MADV_WILLNEED* = 3; (* will need these pages *)
366 POSIX_MADV_DONTNEED* = 4; (* don't need these pages *)
367 MADV_SPACEAVAIL* = 5; (* insure that resources are reserved *)
368 MADV_FREE* = 6; (* pages are empty, free them *)
370 MADV_NORMAL* = POSIX_MADV_NORMAL;
371 MADV_RANDOM* = POSIX_MADV_RANDOM;
372 MADV_SEQUENTIAL* = POSIX_MADV_SEQUENTIAL;
373 MADV_WILLNEED* = POSIX_MADV_WILLNEED;
374 MADV_DONTNEED* = POSIX_MADV_DONTNEED;
376 (* OpenBSD 5.2 /usr/include/sys/signal.h *)
377 MINSIGSTKSZ* = 8192; (* minimum allowable stack *)
378 SIGSTKSZ* = MINSIGSTKSZ + 32768; (* recommended stack size *)
380 (* OpenBSD 5.2 /usr/include/sys/signal.h *)
381 SIG_BLOCK* = 1; (* block specified signal set *)
382 SIG_UNBLOCK* = 2; (* unblock specified signal set *)
383 SIG_SETMASK* = 3; (* set specified signal set *)
385 TYPE
386 (* OpenBSD OK *)
387 __ftw_func_t* = PROCEDURE (fileName: PtrSTR; VAR [nil] stat: stat_t; flag: INTEGER): INTEGER; (* OpenBSD 5.2: OK *)
388 PtrVoid* = INTEGER;
389 PtrSTR* = POINTER TO ARRAY [untagged] OF SHORTCHAR;
390 (* PtrWSTR* = POINTER TO ARRAY [untagged] OF CHAR; *)
391 PtrInt* = INTEGER;
392 StrArray* = POINTER TO ARRAY [untagged] OF PtrSTR;
393 PtrFILE* = INTEGER;
394 PtrDIR* = INTEGER;
395 PtrProc* = INTEGER;
396 clock_t* = INTEGER; (* OpenBSD 5.2 /usr/include/i386/_types.h: 32-bit *)
398 (* jmp_buf* = ARRAY [untagged] 6 OF INTEGER; (* bx, si, di, bp, sp, pc *) *)
399 jmp_buf* = ARRAY [untagged] _JBLEN OF INTEGER; (* OpenBSD 5.2 *)
401 mode_t* = SET; (* OpenBSD 5.2: 32-bit *)
402 off_t* = LONGINT; (* OpenBSD 5.2: 64-bit *)
404 SelectorFunc* = PROCEDURE (dirent: Dirent): INTEGER; (* OpenBSD 5.2: OK *)
405 CmpFunc* = PROCEDURE (VAR [nil] dirent1, dirent2: PtrDirent): INTEGER; (* OpenBSD 5.2: OK *)
407 size_t* = INTEGER; (* should be unsigned int *) (* OpenBSD 5.2: /usr/include/i386/_types.h: 32-bit *)
408 ssize_t* = INTEGER; (* signed int *) (* OpenBSD 5.2: /usr/include/i386/_types.h: 32-bit *)
410 sigjmp_buf* = RECORD [untagged] (* OpenBSD 5.2 *)
411 buf*: jmp_buf;
413 (* mask_was_saved*: INTEGER;
414 saved_mask*: sigset_t; *) (* OpenBSD *)
416 xxx: INTEGER;
417 END;
419 PtrDirent* = POINTER TO Dirent;
420 PtrDirentArray* = POINTER TO ARRAY [untagged] OF Dirent;
422 Dirent* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/sys/dirent.h *)
423 (*
424 d_ino*: INTEGER; (* inode number *)
425 d_off*: off_t; (* offset to this dirent *)
426 d_reclen*: SHORTINT; (* length of this d_name *)
427 d_type*: BYTE;
428 d_name*: ARRAY[untagged] NAME_MAX+1 OF SHORTCHAR; (* file name (null-terminated) *)
429 *)
431 d_fileno*: INTEGER;
432 d_reclen*: SHORTINT;
433 d_type*: BYTE;
434 d_namlen*: BYTE;
435 d_name*: ARRAY [untagged] NAME_MAX + 1 (* 256 *) OF SHORTCHAR;
436 END;
438 pid_t* = INTEGER; (* OpenBSD 5.2: 32-bit *)
439 uid_t* = INTEGER; (* OpenBSD 5.2: 32-bit *)
441 sigval_t* = INTEGER; (* OpenBSD: 32-bit (union sigval) *)
443 siginfo_t* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/sys/siginfo.h *)
444 si_signo*: INTEGER; (* Signal number *) (* OpenBSD: 32-bit *)
445 si_code*: INTEGER; (* Signal code *) (* OpenBSD: 32-bit *)
446 si_errno*: INTEGER; (* An errno value *) (* OpenBSD: 32-bit *)
448 (* OpenBSD 5.2: 29 * 4 B below *)
450 si_pid*: pid_t; (* Sending process ID *)
451 si_uid*: uid_t; (* Real user ID of sending process *)
452 si_status*: INTEGER; (* Exit value or signal *) (* OpenBSD 5.2: 32-bit *)
454 (* si_utime*: clock_t; (* User time consumed *) *) (* OpenBSD: XXX *)
455 si_stime*: clock_t; (* System time consumed *)
456 (* si_value*: sigval_t; (* Signal value *) *) (* OpenBSD: XXX *)
457 (* si_int*: INTEGER; (* POSIX.1b signal *) *) (* OpenBSD: XXX *)
458 (* si_ptr*: PtrVoid; (* POSIX.1b signal *) *) (* OpenBSD: XXX *)
459 (* si_addr*: PtrVoid; (* Memory location which caused fault *) *) (* OpenBSD: XXX *)
460 (* si_band*: INTEGER; (* Band event *) *) (* OpenBSD: XXX *)
461 (* si_fd*: INTEGER; (* File descriptor *) *) (* OpenBSD: XXX *)
463 xxx: ARRAY [untagged] 25 OF INTEGER; (* OpenBSD *)
464 END;
465 Ptrsiginfo_t* = POINTER TO siginfo_t;
467 (* sigset_t* = ARRAY [untagged] 128 OF BYTE; *)
468 (* OpenBSD 5.2 /usr/include/sys/signal.h *)
469 (* sigset_t* = ARRAY [untagged] 4 OF BYTE; *)
470 sigset_t* = SET;
472 Ptrsigset_t* = INTEGER;
473 sigaction_t* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/sys/signal.h *)
474 sa_sigaction*: PROCEDURE [ccall] (sig: INTEGER; siginfo: Ptrsiginfo_t; ptr: Ptrucontext_t); (* union with sa_handler*: PtrProc;*)
475 sa_mask*: sigset_t;
476 sa_flags*: SET;
477 (* sa_restorer*: LONGINT; *) (* OpenBSD *)
478 END;
480 stack_t* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/sys/signal.h *)
481 ss_sp*: PtrVoid;
482 ss_size*: size_t; (* OpenBSD *)
483 ss_flags*: INTEGER; (* OpenBSD *)
484 END;
486 dev_t* = INTEGER; (* OpenBSD: 32-bit *)
487 gid_t* = INTEGER; (* OpenBSD: 32-bit *)
489 stat_t* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/sys/stat.h *)
490 st_dev*: dev_t; (* device *) (* OpenBSD: 32-bit *)
491 (* __pad1: SHORTINT; *) (* OpenBSD *)
492 st_ino*: INTEGER; (* 64? inode *) (* OpenBSD: 32-bit *)
493 st_mode*: mode_t; (* protection *) (* OpenBSD: 32-bit *)
494 st_nlink*: INTEGER; (* number of hard links *) (* OpenBSD: 32-bit *)
495 st_uid*: uid_t; (* user ID of owner *) (* OpenBSD: 32-bit *)
496 st_gid*: gid_t; (* group ID of owner *) (* OpenBSD: 32-bit *)
497 st_rdev*: dev_t; (* device type (if inode device) *) (* OpenBSD: 32-bit *)
498 st_lspare0*: INTEGER; (* OpenBSD *)
499 (* __pad2: SHORTINT; *) (* OpenBSD *)
501 (* OpenBSD *)
502 st_atime*: time_t;
503 st_atimensec*: INTEGER;
504 st_mtime*: time_t;
505 st_mtimensec*: INTEGER;
506 st_ctime*: time_t;
507 st_ctimensec*: INTEGER;
509 st_size*: off_t; (* 64? total size, in bytes *) (* OpenBSD *)
510 st_blocks*: LONGINT; (* OpenBSD: 64-bit *)
511 st_blksize*: INTEGER; (* blocksize for filesystem I/O *)
512 (* st_blocks*: INTEGER; (* 64? number of blocks allocated *) *) (* OpenBSD *)
513 st_flags*: INTEGER; (* OpenBSD: 32-bit *)
514 st_gen*: INTEGER; (* OpenBSD: 32-bit *)
515 st_lspare1*: INTEGER; (* OpenBSD: 32-bit *)
517 (* OpenBSD
518 st_atime*: INTEGER; (* time of last access *)
519 __unused1: INTEGER;
520 st_mtime*: INTEGER; (* time of last modification *)
521 __unused2: INTEGER;
522 st_ctime*: INTEGER; (* time of last change *)
523 __unused3: INTEGER;
524 __unused4: INTEGER;
525 __unused5: INTEGER;
526 *)
528 (* OpenBSD *)
529 __st_birthtime*: time_t;
530 __st_birthtimensec*: INTEGER;
531 st_qspare*: ARRAY [untagged] 2 OF LONGINT;
532 END;
534 (* OpenBSD
535 fpreg* = RECORD [untagged]
536 significand*: ARRAY [untagged] 4 OF CHAR;
537 exponent*: CHAR;
538 END;
539 *)
541 (* OpenBSD *)
542 (*
543 fpstate* = RECORD [untagged]
544 cw*: INTEGER; (* unsigned long int *)
545 sw*: INTEGER; (* unsigned long int *)
546 tag*: INTEGER; (* unsigned long int *)
547 ipoff*: INTEGER; (* unsigned long int *)
548 cssel*: INTEGER; (* unsigned long int *)
549 dataoff*: INTEGER; (* unsigned long int *)
550 datasel*: INTEGER; (* unsigned long int *)
551 _st: ARRAY [untagged] 8 OF fpreg;
552 status*: INTEGER; (* unsigned long int *)
553 END;
554 *)
555 envxmm* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/i386/npx.h *)
556 (*0*)
557 en_cw*: SHORTINT; (* FPU Control Word *)
558 en_sw*: SHORTINT; (* FPU Status Word *)
559 en_tw*: BYTE; (* FPU Tag Word (abridged) *)
560 en_rsvd0*: BYTE;
561 en_opcode*: SHORTINT; (* FPU Opcode *)
562 en_fip*: INTEGER; (* FPU Instruction Pointer *)
563 en_fcs*: SHORTINT; (* FPU IP selector *)
564 en_rsvd1*: SHORTINT;
565 (*16*)
566 en_foo*: INTEGER; (* FPU Data pointer *)
567 en_fos*: SHORTINT; (* FPU Data pointer selector *)
568 en_rsvd2*: SHORTINT;
569 en_mxcsr*: INTEGER; (* MXCSR Register State *)
570 en_mxcsr_mask*: INTEGER; (* Mask for valid MXCSR bits (may be 0) *)
571 END;
572 (* FPU regsters in the extended save format. *)
573 fpaccxmm* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/i386/npx.h *)
574 fp_bytes*: ARRAY [untagged] 10 OF BYTE;
575 fp_rsvd*: ARRAY [untagged] 6 OF BYTE;
576 END;
577 (* SSE/SSE2 registers. *)
578 xmmreg* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/i386/npx.h *)
579 sse_bytes*: ARRAY [untagged] 16 OF BYTE;
580 END;
581 fpstate* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/i386/npx.h savefpu.savexmm *)
582 sv_env*: envxmm; (* control/status context *)
583 sv_ac*: ARRAY [untagged] 8 OF fpaccxmm; (* ST/MM regs *)
584 sv_xmmregs*: ARRAY [untagged] 8 OF xmmreg; (* XMM regs *)
585 sv_rsvd*: ARRAY [untagged] 16 * 14 OF BYTE;
586 (* 512-bytes --- end of hardware portion of save area *)
587 sv_ex_sw*: INTEGER; (* saved SW from last exception *)
588 sv_ex_tw*: INTEGER; (* saved TW from last exception *)
589 END;
591 (* OpenBSD
592 gregset_t* = ARRAY [untagged] 19 OF INTEGER;
593 *)
594 fpregset_t* = POINTER TO fpstate;
596 (* OpenBSD
597 mcontext_t* = RECORD [untagged]
598 gregs*: gregset_t;
599 fpregs*: fpregset_t;
600 oldmask*: INTEGER; (* unsigned long int *)
601 cr2*: INTEGER; (* unsigned long int *)
602 END;
603 *)
605 Ptrucontext_t* = POINTER TO ucontext_t;
606 ucontext_t* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/i386/signal.h struct sigcontext *)
607 (*
608 uc_flags*: INTEGER; (* unsigned long int *)
609 uc_link*: Ptrucontext_t;
610 uc_stack*: stack_t;
611 uc_mcontext*: mcontext_t;
612 uc_sigmask: sigset_t;
613 __fpregs_mem*: fpstate;
614 *)
616 sc_gs*: INTEGER;
617 sc_fs*: INTEGER;
618 sc_es*: INTEGER;
619 sc_ds*: INTEGER;
620 sc_edi*: INTEGER;
621 sc_esi*: INTEGER;
622 sc_ebp*: INTEGER;
623 sc_ebx*: INTEGER;
624 sc_edx*: INTEGER;
625 sc_ecx*: INTEGER;
626 sc_eax*: INTEGER;
627 (* XXX *)
628 sc_eip*: INTEGER;
629 sc_cs*: INTEGER;
630 sc_eflags*: INTEGER;
631 sc_esp*: INTEGER;
632 sc_ss*: INTEGER;
634 sc_onstack*: INTEGER; (* sigstack state to restore *)
635 sc_mask*: INTEGER; (* signal mask to restore *)
636 sc_trapno*: INTEGER; (* XXX should be above *)
637 sc_err*: INTEGER;
639 sc_fpstate*: fpregset_t; (* POINTER TO savefpu *)
640 END;
642 (* Times and Dates *)
644 tm* = POINTER TO tmDesc;
645 tmDesc* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/time.h *)
646 tm_sec*: INTEGER; (* seconds *)
647 tm_min*: INTEGER; (* minutes *)
648 tm_hour*: INTEGER; (* hours *)
649 tm_mday*: INTEGER; (* day of the month *)
650 tm_mon*: INTEGER; (* month *)
651 tm_year*: INTEGER; (* year *)
652 tm_wday*: INTEGER; (* day of the week *)
653 tm_yday*: INTEGER; (* day in the year *)
654 tm_isdst*: INTEGER; (* daylight saving time *)
656 tm_gmtoff*: INTEGER; (* OpenBSD *)
657 tm_zone*: PtrSTR; (* OpenBSD *)
658 END;
660 time_t* = INTEGER; (* OpenBSD 5.2 /usr/include/i386/_types.h: 32-bit *)
662 FILE = ARRAY [untagged] 88 OF BYTE; (* OpenBSD 5.2 /usr/include/stdio.h *)
664 wchar_t* = INTEGER; (* OpenBSD 5.2: 32-bit *)
665 PtrWSTR* = POINTER TO ARRAY [untagged] OF wchar_t;
667 (* OpenBSD 5.2 *)
668 sigaltstack_t* = RECORD [untagged]
669 ss_sp*: PtrVoid;
670 ss_size*: size_t;
671 ss_flags*: INTEGER;
672 END;
674 VAR
675 (* timezone*: INTEGER; (* seconds from GMT *) *) (* OpenBSD: not present *)
676 (* stdin*, stdout*, stderr* : PtrFILE; (* OpenBSD: not present *) *)
678 (* OpenBSD: stdin, stdout, stderr *)
679 __sF*: ARRAY [untagged] 3 OF FILE; (* OpenBSD 5.2 /usr/include/stdio.h *)
680 (*
681 stdin = SYSTEM.ADR(__sF[0])
682 stdout = SYSTEM.ADR(__sF[1])
683 stderr = SYSTEM.ADR(__sF[2])
684 *)
686 PROCEDURE [ccall] calloc* (nmemb, size: size_t): PtrVoid;
687 PROCEDURE [ccall] clock* (): clock_t;
689 PROCEDURE [ccall] closedir* (dir: PtrDIR): INTEGER;
691 PROCEDURE [ccall] chmod* (path: PtrSTR; mode: mode_t);
692 PROCEDURE [ccall] exit* (status: INTEGER);
694 PROCEDURE [ccall] fclose* (fp: PtrFILE): INTEGER;
695 PROCEDURE [ccall] fflush* (fp: PtrFILE): INTEGER;
696 PROCEDURE [ccall] fopen* (filename, mode: PtrSTR): PtrFILE;
697 PROCEDURE [ccall] feof* (fp: PtrFILE): INTEGER;
698 PROCEDURE [ccall] fread* (ptr: PtrVoid; size, nmemb: size_t; stream: PtrFILE): size_t;
699 PROCEDURE [ccall] fseek* (stream: PtrFILE; offset, origin: INTEGER): INTEGER;
700 PROCEDURE [ccall] free* (p: PtrVoid);
702 PROCEDURE [ccall] ftell* (stream: PtrFILE): (* LONGINT; *) INTEGER; (* OpenBSD 5.2 *)
704 PROCEDURE [ccall] ftw* (filename: PtrSTR; func: __ftw_func_t; maxfds: INTEGER): INTEGER;
705 PROCEDURE [ccall] fwrite* (ptr: PtrVoid; size, nmemb: size_t; stream: PtrFILE): size_t;
706 PROCEDURE [ccall] getcwd* (buf: PtrSTR; size: size_t): PtrSTR;
708 (* PROCEDURE [ccall] getcontext* (ucontext_t: Ptrucontext_t): INTEGER; *) (* OpenBSD *)
710 (* PROCEDURE [ccall] gets* (s: PtrSTR); *)
711 PROCEDURE [ccall] gets* (s: PtrSTR): PtrSTR; (* OpenBSD 5.2 *)
713 PROCEDURE [ccall] fgets* (s: PtrSTR; n: INTEGER; fp: PtrFILE): PtrSTR;
714 PROCEDURE [ccall] gmtime* (VAR timep: time_t): tm;
715 PROCEDURE [ccall] kill* (pid: pid_t; sig: INTEGER): INTEGER;
716 PROCEDURE [ccall] localtime* (VAR timep: time_t): tm;
717 PROCEDURE [ccall] malloc* (size: size_t): PtrVoid;
718 PROCEDURE [ccall] mkdir* (path: PtrSTR; mode: mode_t): INTEGER;
719 PROCEDURE [ccall] mktime* (timeptr: tm): time_t;
720 PROCEDURE [ccall] opendir* (filename: PtrSTR): PtrDIR;
721 PROCEDURE [ccall] printf* (s: PtrSTR): INTEGER;
722 PROCEDURE [ccall] readdir* (dir: PtrDIR): PtrDirent;
723 PROCEDURE [ccall] remove* (path: PtrSTR): INTEGER;
724 PROCEDURE [ccall] rename* (from, to: PtrSTR): INTEGER;
725 PROCEDURE [ccall] scandir* (dir: PtrDIR; namelist: PtrDirentArray; selector: SelectorFunc; cmp: CmpFunc): INTEGER;
727 (* PROCEDURE [ccall] setcontext* (ucontext_t: Ptrucontext_t): INTEGER; *) (* OpenBSD *)
729 PROCEDURE [ccall] setjmp* (VAR env: jmp_buf): INTEGER;
730 PROCEDURE [ccall] sigaction* (sig_num: INTEGER; VAR [nil] act: sigaction_t; VAR [nil] oldact: sigaction_t): INTEGER;
731 PROCEDURE [ccall] sigaddset* (set: Ptrsigset_t; sig: INTEGER): INTEGER;
732 PROCEDURE [ccall] sigdelset* (set: Ptrsigset_t; sig: INTEGER): INTEGER;
733 PROCEDURE [ccall] sigemptyset* (set: Ptrsigset_t): INTEGER;
734 PROCEDURE [ccall] sigfillset* (set: Ptrsigset_t): INTEGER;
735 PROCEDURE [ccall] sigismemeber* (set: Ptrsigset_t; sig: INTEGER): INTEGER;
736 PROCEDURE [ccall] siglongjmp* (VAR env: sigjmp_buf; val: INTEGER);
738 PROCEDURE [ccall] signal* (sig_num: INTEGER; sighandler: PtrProc): PtrProc;
739 (* PROCEDURE [ccall] sigsetjmp* ["__sigsetjmp"] (VAR env: sigjmp_buf; savemask: INTEGER): INTEGER; *)
740 PROCEDURE [ccall] sigsetjmp* (VAR env: sigjmp_buf; savemask: INTEGER): INTEGER; (* OpenBSD *)
742 (* OpenBSD *)
743 PROCEDURE [ccall] stat* (filename: PtrSTR; VAR buf: stat_t): INTEGER; (* stat is a macro and expands to __xstat(3, filename, buf) *)
744 (* OpenBSD: __xstat not present
745 PROCEDURE [ccall] __xstat* (version: INTEGER; filename: PtrSTR; VAR buf: stat_t): INTEGER;
746 *)
748 PROCEDURE [ccall] strftime* (s: PtrSTR; max: size_t; format: PtrSTR; ptm: tm): size_t;
749 PROCEDURE [ccall] time* (VAR [nil] t: time_t): time_t;
751 (* PROCEDURE [ccall] __errno_location*(): INTEGER; *)
752 PROCEDURE [ccall] __errno_location* ["__errno"] (): INTEGER; (* OpenBSD *)
754 PROCEDURE [ccall] open* (path: PtrSTR; flags: SET; mode: mode_t): INTEGER;
755 PROCEDURE [ccall] close* (d: INTEGER): INTEGER;
756 PROCEDURE [ccall] read* (d: INTEGER; buf: PtrVoid; nbytes: size_t): ssize_t;
757 PROCEDURE [ccall] write* (d: INTEGER; buf: PtrVoid; nBytes: size_t): ssize_t;
759 (* OpenBSD *)
760 PROCEDURE [ccall] mprotect* (addr: PtrVoid; len: size_t; prot: SET): INTEGER;
762 (* OpenBSD 5.2 *)
763 PROCEDURE [ccall] madvise* (addr: PtrVoid; len: size_t; behav: INTEGER): INTEGER;
765 PROCEDURE [ccall] mmap* (addr: PtrVoid; len: size_t; prot: SET; flags: SET; fd: INTEGER; offset: off_t): PtrVoid;
766 PROCEDURE [ccall] munmap* (addr: PtrVoid; len: size_t): INTEGER;
768 PROCEDURE [ccall] getenv* (name: PtrSTR): PtrSTR;
770 (* OpenBSD 5.2: Ok *)
771 PROCEDURE [ccall] wctomb* (s: PtrSTR; wchar: wchar_t): INTEGER;
772 PROCEDURE [ccall] wcstombs* (s: PtrSTR; pwcs: PtrWSTR; n: size_t): size_t;
773 PROCEDURE [ccall] mbtowc* (pwc: PtrWSTR; s: PtrSTR; n: size_t): INTEGER;
774 PROCEDURE [ccall] mbstowcs* (pwcs: PtrWSTR; s: PtrSTR; n: size_t): size_t;
776 (* OpenBSD 5.2 *)
777 PROCEDURE [ccall] sysconf* (name: INTEGER): INTEGER;
779 PROCEDURE [ccall] sigaltstack* (VAR [nil] ss: sigaltstack_t; VAR [nil] oss: sigaltstack_t): INTEGER;
781 PROCEDURE [ccall] sigreturn* (ucontext_t: Ptrucontext_t): INTEGER;
783 PROCEDURE [ccall] sigprocmask* (how: INTEGER; VAR [nil] set: sigset_t; VAR [nil] oset: sigset_t): INTEGER;
785 END LinLibc.