|
@@ -0,0 +1,491 @@
|
|
|
+MODULE LinLibc ["libc.so.66.0"];
|
|
|
+
|
|
|
+ (*
|
|
|
+ A. V. Shiryaev, 2012.11
|
|
|
+
|
|
|
+ Based on Linux' LinLibc (OpenBUGS Lin/Mod/Libc.odc)
|
|
|
+
|
|
|
+ OpenBSD 5.2
|
|
|
+ 32-bit
|
|
|
+ *)
|
|
|
+
|
|
|
+ IMPORT SYSTEM;
|
|
|
+
|
|
|
+ CONST
|
|
|
+ NULL* = 0H;
|
|
|
+ TRUE* = 1;
|
|
|
+ FALSE* = 0;
|
|
|
+
|
|
|
+ (* file constants *)
|
|
|
+ SEEK_SET* = 0;
|
|
|
+ SEEK_CUR* = 1;
|
|
|
+ SEEK_END* = 2;
|
|
|
+ NAME_MAX* = 255; (* OpenBSD /usr/include/sys/syslimits.h *)
|
|
|
+
|
|
|
+ (* The value of CLOCKS_PER_SEC is required to be 1 million on all XSI-conformant systems.*)
|
|
|
+ CLOCKS_PER_SEC* = 100; (* OpenBSD 5.2 /usr/include/time.h CLOCKS_PER_SEC *)
|
|
|
+
|
|
|
+ (* temp directory defined in stdio.h *)
|
|
|
+ P_tmpdir* = "/tmp";
|
|
|
+
|
|
|
+ (* signal constants *) (* Fake signal functions. *)
|
|
|
+ (* OpenBSD 5.2 /usr/include/sys/signal.h *)
|
|
|
+ SIG_ERR* = -1; (* Error return. *)
|
|
|
+ SIG_DFL* = 0; (* Default action. *)
|
|
|
+ SIG_IGN* = 1; (* Ignore signal. *)
|
|
|
+ SIG_HOLD* = 3; (* Add signal to hold mask. *) (* OpenBSD 5.2 /usr/include/sys/signalvar.h *)
|
|
|
+
|
|
|
+ (* Signals. *)
|
|
|
+ (* OpenBSD /usr/include/sys/signal.h *)
|
|
|
+%%defs-signal%%
|
|
|
+ (* Bits in `sa_flags'. *)
|
|
|
+%%defs-sa%%
|
|
|
+ (* Some aliases for the SA_ constants. *)
|
|
|
+(*
|
|
|
+ SA_NOMASK* = SA_NODEFER;
|
|
|
+ SA_ONESHOT* = SA_RESETHAND;
|
|
|
+ SA_STACK* = SA_ONSTACK;
|
|
|
+*)
|
|
|
+
|
|
|
+ (* code values for siginfo_t.si_code *)
|
|
|
+ (* OpenBSD /usr/include/sys/siginfo.h *)
|
|
|
+%%defs-siginfo1%%
|
|
|
+
|
|
|
+ (* possible error constants for errno *)
|
|
|
+ (* OpenBSD /usr/include/sys/errno.h *)
|
|
|
+%%defs-errno%%
|
|
|
+
|
|
|
+ (* OpenBSD 5.2 /usr/include/i386/setjmp.h *)
|
|
|
+ _JBLEN = 10;
|
|
|
+
|
|
|
+ (* OpenBSD 5.2 /usr/include/sys/mman.h *)
|
|
|
+ MAP_FAILED* = -1;
|
|
|
+%%defs-mman%%
|
|
|
+
|
|
|
+ (* OpenBSD 5.2 /usr/include/i386/param.h *)
|
|
|
+ PAGE_SHIFT* = 12;
|
|
|
+ PAGE_SIZE* = 4096; (* LSL(1, PAGE_SHIFT) *)
|
|
|
+ PAGE_MASK* = PAGE_SIZE - 1;
|
|
|
+
|
|
|
+ (* OpenBSD 5.2: /usr/include/fcntl.h *)
|
|
|
+%%defs-fcntl%%
|
|
|
+
|
|
|
+ (* OpenBSD 5.2 /usr/include/unistd.h *)
|
|
|
+%%defs-sc%%
|
|
|
+
|
|
|
+ (* OpenBSD 5.2 /usr/include/sys/mman.h *)
|
|
|
+%%defs-madv%%
|
|
|
+ MADV_NORMAL* = POSIX_MADV_NORMAL;
|
|
|
+ MADV_RANDOM* = POSIX_MADV_RANDOM;
|
|
|
+ MADV_SEQUENTIAL* = POSIX_MADV_SEQUENTIAL;
|
|
|
+ MADV_WILLNEED* = POSIX_MADV_WILLNEED;
|
|
|
+ MADV_DONTNEED* = POSIX_MADV_DONTNEED;
|
|
|
+
|
|
|
+ (* OpenBSD 5.2 /usr/include/sys/signal.h *)
|
|
|
+ MINSIGSTKSZ* = 8192; (* minimum allowable stack *)
|
|
|
+ SIGSTKSZ* = MINSIGSTKSZ + 32768; (* recommended stack size *)
|
|
|
+
|
|
|
+ (* OpenBSD 5.2 /usr/include/sys/signal.h *)
|
|
|
+%%defs-sig%%
|
|
|
+
|
|
|
+ TYPE
|
|
|
+ (* OpenBSD OK *)
|
|
|
+ __ftw_func_t* = PROCEDURE (fileName: PtrSTR; VAR [nil] stat: stat_t; flag: INTEGER): INTEGER; (* OpenBSD 5.2: OK *)
|
|
|
+ PtrVoid* = INTEGER;
|
|
|
+ PtrSTR* = POINTER TO ARRAY [untagged] OF SHORTCHAR;
|
|
|
+ (* PtrWSTR* = POINTER TO ARRAY [untagged] OF CHAR; *)
|
|
|
+ PtrInt* = INTEGER;
|
|
|
+ StrArray* = POINTER TO ARRAY [untagged] OF PtrSTR;
|
|
|
+ PtrFILE* = INTEGER;
|
|
|
+ PtrDIR* = INTEGER;
|
|
|
+ PtrProc* = INTEGER;
|
|
|
+ clock_t* = INTEGER; (* OpenBSD 5.2 /usr/include/i386/_types.h: 32-bit *)
|
|
|
+
|
|
|
+ (* jmp_buf* = ARRAY [untagged] 6 OF INTEGER; (* bx, si, di, bp, sp, pc *) *)
|
|
|
+ jmp_buf* = ARRAY [untagged] _JBLEN OF INTEGER; (* OpenBSD 5.2 *)
|
|
|
+
|
|
|
+ mode_t* = SET; (* OpenBSD 5.2: 32-bit *)
|
|
|
+ off_t* = LONGINT; (* OpenBSD 5.2: 64-bit *)
|
|
|
+
|
|
|
+ SelectorFunc* = PROCEDURE (dirent: Dirent): INTEGER; (* OpenBSD 5.2: OK *)
|
|
|
+ CmpFunc* = PROCEDURE (VAR [nil] dirent1, dirent2: PtrDirent): INTEGER; (* OpenBSD 5.2: OK *)
|
|
|
+
|
|
|
+ size_t* = INTEGER; (* should be unsigned int *) (* OpenBSD 5.2: /usr/include/i386/_types.h: 32-bit *)
|
|
|
+ ssize_t* = INTEGER; (* signed int *) (* OpenBSD 5.2: /usr/include/i386/_types.h: 32-bit *)
|
|
|
+
|
|
|
+ sigjmp_buf* = RECORD [untagged] (* OpenBSD 5.2 *)
|
|
|
+ buf*: jmp_buf;
|
|
|
+
|
|
|
+ (* mask_was_saved*: INTEGER;
|
|
|
+ saved_mask*: sigset_t; *) (* OpenBSD *)
|
|
|
+
|
|
|
+ xxx: INTEGER;
|
|
|
+ END;
|
|
|
+
|
|
|
+ PtrDirent* = POINTER TO Dirent;
|
|
|
+ PtrDirentArray* = POINTER TO ARRAY [untagged] OF Dirent;
|
|
|
+
|
|
|
+ Dirent* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/sys/dirent.h *)
|
|
|
+ (*
|
|
|
+ d_ino*: INTEGER; (* inode number *)
|
|
|
+ d_off*: off_t; (* offset to this dirent *)
|
|
|
+ d_reclen*: SHORTINT; (* length of this d_name *)
|
|
|
+ d_type*: BYTE;
|
|
|
+ d_name*: ARRAY[untagged] NAME_MAX+1 OF SHORTCHAR; (* file name (null-terminated) *)
|
|
|
+ *)
|
|
|
+
|
|
|
+ d_fileno*: INTEGER;
|
|
|
+ d_reclen*: SHORTINT;
|
|
|
+ d_type*: BYTE;
|
|
|
+ d_namlen*: BYTE;
|
|
|
+ d_name*: ARRAY [untagged] NAME_MAX + 1 (* 256 *) OF SHORTCHAR;
|
|
|
+ END;
|
|
|
+
|
|
|
+ pid_t* = INTEGER; (* OpenBSD 5.2: 32-bit *)
|
|
|
+ uid_t* = INTEGER; (* OpenBSD 5.2: 32-bit *)
|
|
|
+
|
|
|
+ sigval_t* = INTEGER; (* OpenBSD: 32-bit (union sigval) *)
|
|
|
+
|
|
|
+ siginfo_t* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/sys/siginfo.h *)
|
|
|
+ si_signo*: INTEGER; (* Signal number *) (* OpenBSD: 32-bit *)
|
|
|
+ si_code*: INTEGER; (* Signal code *) (* OpenBSD: 32-bit *)
|
|
|
+ si_errno*: INTEGER; (* An errno value *) (* OpenBSD: 32-bit *)
|
|
|
+
|
|
|
+ (* OpenBSD 5.2: 29 * 4 B below *)
|
|
|
+
|
|
|
+ si_pid*: pid_t; (* Sending process ID *)
|
|
|
+ si_uid*: uid_t; (* Real user ID of sending process *)
|
|
|
+ si_status*: INTEGER; (* Exit value or signal *) (* OpenBSD 5.2: 32-bit *)
|
|
|
+
|
|
|
+ (* si_utime*: clock_t; (* User time consumed *) *) (* OpenBSD: XXX *)
|
|
|
+ si_stime*: clock_t; (* System time consumed *)
|
|
|
+ (* si_value*: sigval_t; (* Signal value *) *) (* OpenBSD: XXX *)
|
|
|
+ (* si_int*: INTEGER; (* POSIX.1b signal *) *) (* OpenBSD: XXX *)
|
|
|
+ (* si_ptr*: PtrVoid; (* POSIX.1b signal *) *) (* OpenBSD: XXX *)
|
|
|
+ (* si_addr*: PtrVoid; (* Memory location which caused fault *) *) (* OpenBSD: XXX *)
|
|
|
+ (* si_band*: INTEGER; (* Band event *) *) (* OpenBSD: XXX *)
|
|
|
+ (* si_fd*: INTEGER; (* File descriptor *) *) (* OpenBSD: XXX *)
|
|
|
+
|
|
|
+ xxx: ARRAY [untagged] 25 OF INTEGER; (* OpenBSD *)
|
|
|
+ END;
|
|
|
+ Ptrsiginfo_t* = POINTER TO siginfo_t;
|
|
|
+
|
|
|
+ (* sigset_t* = ARRAY [untagged] 128 OF BYTE; *)
|
|
|
+ (* OpenBSD 5.2 /usr/include/sys/signal.h *)
|
|
|
+ (* sigset_t* = ARRAY [untagged] 4 OF BYTE; *)
|
|
|
+ sigset_t* = SET;
|
|
|
+
|
|
|
+ Ptrsigset_t* = INTEGER;
|
|
|
+ sigaction_t* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/sys/signal.h *)
|
|
|
+ sa_sigaction*: PROCEDURE [ccall] (sig: INTEGER; siginfo: Ptrsiginfo_t; ptr: Ptrucontext_t); (* union with sa_handler*: PtrProc;*)
|
|
|
+ sa_mask*: sigset_t;
|
|
|
+ sa_flags*: SET;
|
|
|
+ (* sa_restorer*: LONGINT; *) (* OpenBSD *)
|
|
|
+ END;
|
|
|
+
|
|
|
+ stack_t* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/sys/signal.h *)
|
|
|
+ ss_sp*: PtrVoid;
|
|
|
+ ss_size*: size_t; (* OpenBSD *)
|
|
|
+ ss_flags*: INTEGER; (* OpenBSD *)
|
|
|
+ END;
|
|
|
+
|
|
|
+ dev_t* = INTEGER; (* OpenBSD: 32-bit *)
|
|
|
+ gid_t* = INTEGER; (* OpenBSD: 32-bit *)
|
|
|
+
|
|
|
+ stat_t* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/sys/stat.h *)
|
|
|
+ st_dev*: dev_t; (* device *) (* OpenBSD: 32-bit *)
|
|
|
+ (* __pad1: SHORTINT; *) (* OpenBSD *)
|
|
|
+ st_ino*: INTEGER; (* 64? inode *) (* OpenBSD: 32-bit *)
|
|
|
+ st_mode*: mode_t; (* protection *) (* OpenBSD: 32-bit *)
|
|
|
+ st_nlink*: INTEGER; (* number of hard links *) (* OpenBSD: 32-bit *)
|
|
|
+ st_uid*: uid_t; (* user ID of owner *) (* OpenBSD: 32-bit *)
|
|
|
+ st_gid*: gid_t; (* group ID of owner *) (* OpenBSD: 32-bit *)
|
|
|
+ st_rdev*: dev_t; (* device type (if inode device) *) (* OpenBSD: 32-bit *)
|
|
|
+ st_lspare0*: INTEGER; (* OpenBSD *)
|
|
|
+ (* __pad2: SHORTINT; *) (* OpenBSD *)
|
|
|
+
|
|
|
+ (* OpenBSD *)
|
|
|
+ st_atime*: time_t;
|
|
|
+ st_atimensec*: INTEGER;
|
|
|
+ st_mtime*: time_t;
|
|
|
+ st_mtimensec*: INTEGER;
|
|
|
+ st_ctime*: time_t;
|
|
|
+ st_ctimensec*: INTEGER;
|
|
|
+
|
|
|
+ st_size*: off_t; (* 64? total size, in bytes *) (* OpenBSD *)
|
|
|
+ st_blocks*: LONGINT; (* OpenBSD: 64-bit *)
|
|
|
+ st_blksize*: INTEGER; (* blocksize for filesystem I/O *)
|
|
|
+ (* st_blocks*: INTEGER; (* 64? number of blocks allocated *) *) (* OpenBSD *)
|
|
|
+ st_flags*: INTEGER; (* OpenBSD: 32-bit *)
|
|
|
+ st_gen*: INTEGER; (* OpenBSD: 32-bit *)
|
|
|
+ st_lspare1*: INTEGER; (* OpenBSD: 32-bit *)
|
|
|
+
|
|
|
+ (* OpenBSD
|
|
|
+ st_atime*: INTEGER; (* time of last access *)
|
|
|
+ __unused1: INTEGER;
|
|
|
+ st_mtime*: INTEGER; (* time of last modification *)
|
|
|
+ __unused2: INTEGER;
|
|
|
+ st_ctime*: INTEGER; (* time of last change *)
|
|
|
+ __unused3: INTEGER;
|
|
|
+ __unused4: INTEGER;
|
|
|
+ __unused5: INTEGER;
|
|
|
+ *)
|
|
|
+
|
|
|
+ (* OpenBSD *)
|
|
|
+ __st_birthtime*: time_t;
|
|
|
+ __st_birthtimensec*: INTEGER;
|
|
|
+ st_qspare*: ARRAY [untagged] 2 OF LONGINT;
|
|
|
+ END;
|
|
|
+
|
|
|
+ (* OpenBSD
|
|
|
+ fpreg* = RECORD [untagged]
|
|
|
+ significand*: ARRAY [untagged] 4 OF CHAR;
|
|
|
+ exponent*: CHAR;
|
|
|
+ END;
|
|
|
+ *)
|
|
|
+
|
|
|
+ (* OpenBSD *)
|
|
|
+ (*
|
|
|
+ fpstate* = RECORD [untagged]
|
|
|
+ cw*: INTEGER; (* unsigned long int *)
|
|
|
+ sw*: INTEGER; (* unsigned long int *)
|
|
|
+ tag*: INTEGER; (* unsigned long int *)
|
|
|
+ ipoff*: INTEGER; (* unsigned long int *)
|
|
|
+ cssel*: INTEGER; (* unsigned long int *)
|
|
|
+ dataoff*: INTEGER; (* unsigned long int *)
|
|
|
+ datasel*: INTEGER; (* unsigned long int *)
|
|
|
+ _st: ARRAY [untagged] 8 OF fpreg;
|
|
|
+ status*: INTEGER; (* unsigned long int *)
|
|
|
+ END;
|
|
|
+ *)
|
|
|
+ envxmm* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/i386/npx.h *)
|
|
|
+ (*0*)
|
|
|
+ en_cw*: SHORTINT; (* FPU Control Word *)
|
|
|
+ en_sw*: SHORTINT; (* FPU Status Word *)
|
|
|
+ en_tw*: BYTE; (* FPU Tag Word (abridged) *)
|
|
|
+ en_rsvd0*: BYTE;
|
|
|
+ en_opcode*: SHORTINT; (* FPU Opcode *)
|
|
|
+ en_fip*: INTEGER; (* FPU Instruction Pointer *)
|
|
|
+ en_fcs*: SHORTINT; (* FPU IP selector *)
|
|
|
+ en_rsvd1*: SHORTINT;
|
|
|
+ (*16*)
|
|
|
+ en_foo*: INTEGER; (* FPU Data pointer *)
|
|
|
+ en_fos*: SHORTINT; (* FPU Data pointer selector *)
|
|
|
+ en_rsvd2*: SHORTINT;
|
|
|
+ en_mxcsr*: INTEGER; (* MXCSR Register State *)
|
|
|
+ en_mxcsr_mask*: INTEGER; (* Mask for valid MXCSR bits (may be 0) *)
|
|
|
+ END;
|
|
|
+ (* FPU regsters in the extended save format. *)
|
|
|
+ fpaccxmm* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/i386/npx.h *)
|
|
|
+ fp_bytes*: ARRAY [untagged] 10 OF BYTE;
|
|
|
+ fp_rsvd*: ARRAY [untagged] 6 OF BYTE;
|
|
|
+ END;
|
|
|
+ (* SSE/SSE2 registers. *)
|
|
|
+ xmmreg* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/i386/npx.h *)
|
|
|
+ sse_bytes*: ARRAY [untagged] 16 OF BYTE;
|
|
|
+ END;
|
|
|
+ fpstate* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/i386/npx.h savefpu.savexmm *)
|
|
|
+ sv_env*: envxmm; (* control/status context *)
|
|
|
+ sv_ac*: ARRAY [untagged] 8 OF fpaccxmm; (* ST/MM regs *)
|
|
|
+ sv_xmmregs*: ARRAY [untagged] 8 OF xmmreg; (* XMM regs *)
|
|
|
+ sv_rsvd*: ARRAY [untagged] 16 * 14 OF BYTE;
|
|
|
+ (* 512-bytes --- end of hardware portion of save area *)
|
|
|
+ sv_ex_sw*: INTEGER; (* saved SW from last exception *)
|
|
|
+ sv_ex_tw*: INTEGER; (* saved TW from last exception *)
|
|
|
+ END;
|
|
|
+
|
|
|
+ (* OpenBSD
|
|
|
+ gregset_t* = ARRAY [untagged] 19 OF INTEGER;
|
|
|
+ *)
|
|
|
+ fpregset_t* = POINTER TO fpstate;
|
|
|
+
|
|
|
+ (* OpenBSD
|
|
|
+ mcontext_t* = RECORD [untagged]
|
|
|
+ gregs*: gregset_t;
|
|
|
+ fpregs*: fpregset_t;
|
|
|
+ oldmask*: INTEGER; (* unsigned long int *)
|
|
|
+ cr2*: INTEGER; (* unsigned long int *)
|
|
|
+ END;
|
|
|
+ *)
|
|
|
+
|
|
|
+ Ptrucontext_t* = POINTER TO ucontext_t;
|
|
|
+ ucontext_t* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/i386/signal.h struct sigcontext *)
|
|
|
+ (*
|
|
|
+ uc_flags*: INTEGER; (* unsigned long int *)
|
|
|
+ uc_link*: Ptrucontext_t;
|
|
|
+ uc_stack*: stack_t;
|
|
|
+ uc_mcontext*: mcontext_t;
|
|
|
+ uc_sigmask: sigset_t;
|
|
|
+ __fpregs_mem*: fpstate;
|
|
|
+ *)
|
|
|
+
|
|
|
+ sc_gs*: INTEGER;
|
|
|
+ sc_fs*: INTEGER;
|
|
|
+ sc_es*: INTEGER;
|
|
|
+ sc_ds*: INTEGER;
|
|
|
+ sc_edi*: INTEGER;
|
|
|
+ sc_esi*: INTEGER;
|
|
|
+ sc_ebp*: INTEGER;
|
|
|
+ sc_ebx*: INTEGER;
|
|
|
+ sc_edx*: INTEGER;
|
|
|
+ sc_ecx*: INTEGER;
|
|
|
+ sc_eax*: INTEGER;
|
|
|
+ (* XXX *)
|
|
|
+ sc_eip*: INTEGER;
|
|
|
+ sc_cs*: INTEGER;
|
|
|
+ sc_eflags*: INTEGER;
|
|
|
+ sc_esp*: INTEGER;
|
|
|
+ sc_ss*: INTEGER;
|
|
|
+
|
|
|
+ sc_onstack*: INTEGER; (* sigstack state to restore *)
|
|
|
+ sc_mask*: INTEGER; (* signal mask to restore *)
|
|
|
+ sc_trapno*: INTEGER; (* XXX should be above *)
|
|
|
+ sc_err*: INTEGER;
|
|
|
+
|
|
|
+ sc_fpstate*: fpregset_t; (* POINTER TO savefpu *)
|
|
|
+ END;
|
|
|
+
|
|
|
+ (* Times and Dates *)
|
|
|
+
|
|
|
+ tm* = POINTER TO tmDesc;
|
|
|
+ tmDesc* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/time.h *)
|
|
|
+ tm_sec*: INTEGER; (* seconds *)
|
|
|
+ tm_min*: INTEGER; (* minutes *)
|
|
|
+ tm_hour*: INTEGER; (* hours *)
|
|
|
+ tm_mday*: INTEGER; (* day of the month *)
|
|
|
+ tm_mon*: INTEGER; (* month *)
|
|
|
+ tm_year*: INTEGER; (* year *)
|
|
|
+ tm_wday*: INTEGER; (* day of the week *)
|
|
|
+ tm_yday*: INTEGER; (* day in the year *)
|
|
|
+ tm_isdst*: INTEGER; (* daylight saving time *)
|
|
|
+
|
|
|
+ tm_gmtoff*: INTEGER; (* OpenBSD *)
|
|
|
+ tm_zone*: PtrSTR; (* OpenBSD *)
|
|
|
+ END;
|
|
|
+
|
|
|
+ time_t* = INTEGER; (* OpenBSD 5.2 /usr/include/i386/_types.h: 32-bit *)
|
|
|
+
|
|
|
+ FILE = ARRAY [untagged] 88 OF BYTE; (* OpenBSD 5.2 /usr/include/stdio.h *)
|
|
|
+
|
|
|
+ wchar_t* = INTEGER; (* OpenBSD 5.2: 32-bit *)
|
|
|
+ PtrWSTR* = POINTER TO ARRAY [untagged] OF wchar_t;
|
|
|
+
|
|
|
+ (* OpenBSD 5.2 *)
|
|
|
+ sigaltstack_t* = RECORD [untagged]
|
|
|
+ ss_sp*: PtrVoid;
|
|
|
+ ss_size*: size_t;
|
|
|
+ ss_flags*: INTEGER;
|
|
|
+ END;
|
|
|
+
|
|
|
+ VAR
|
|
|
+ (* timezone*: INTEGER; (* seconds from GMT *) *) (* OpenBSD: not present *)
|
|
|
+ (* stdin*, stdout*, stderr* : PtrFILE; (* OpenBSD: not present *) *)
|
|
|
+
|
|
|
+ (* OpenBSD: stdin, stdout, stderr *)
|
|
|
+ __sF*: ARRAY [untagged] 3 OF FILE; (* OpenBSD 5.2 /usr/include/stdio.h *)
|
|
|
+ (*
|
|
|
+ stdin = SYSTEM.ADR(__sF[0])
|
|
|
+ stdout = SYSTEM.ADR(__sF[1])
|
|
|
+ stderr = SYSTEM.ADR(__sF[2])
|
|
|
+ *)
|
|
|
+
|
|
|
+ PROCEDURE [ccall] calloc* (nmemb, size: size_t): PtrVoid;
|
|
|
+ PROCEDURE [ccall] clock* (): clock_t;
|
|
|
+
|
|
|
+ PROCEDURE [ccall] closedir* (dir: PtrDIR): INTEGER;
|
|
|
+
|
|
|
+ PROCEDURE [ccall] chmod* (path: PtrSTR; mode: mode_t);
|
|
|
+ PROCEDURE [ccall] exit* (status: INTEGER);
|
|
|
+
|
|
|
+ PROCEDURE [ccall] fclose* (fp: PtrFILE): INTEGER;
|
|
|
+ PROCEDURE [ccall] fflush* (fp: PtrFILE): INTEGER;
|
|
|
+ PROCEDURE [ccall] fopen* (filename, mode: PtrSTR): PtrFILE;
|
|
|
+ PROCEDURE [ccall] feof* (fp: PtrFILE): INTEGER;
|
|
|
+ PROCEDURE [ccall] fread* (ptr: PtrVoid; size, nmemb: size_t; stream: PtrFILE): size_t;
|
|
|
+ PROCEDURE [ccall] fseek* (stream: PtrFILE; offset, origin: INTEGER): INTEGER;
|
|
|
+ PROCEDURE [ccall] free* (p: PtrVoid);
|
|
|
+
|
|
|
+ PROCEDURE [ccall] ftell* (stream: PtrFILE): (* LONGINT; *) INTEGER; (* OpenBSD 5.2 *)
|
|
|
+
|
|
|
+ PROCEDURE [ccall] ftw* (filename: PtrSTR; func: __ftw_func_t; maxfds: INTEGER): INTEGER;
|
|
|
+ PROCEDURE [ccall] fwrite* (ptr: PtrVoid; size, nmemb: size_t; stream: PtrFILE): size_t;
|
|
|
+ PROCEDURE [ccall] getcwd* (buf: PtrSTR; size: size_t): PtrSTR;
|
|
|
+
|
|
|
+ (* PROCEDURE [ccall] getcontext* (ucontext_t: Ptrucontext_t): INTEGER; *) (* OpenBSD *)
|
|
|
+
|
|
|
+ (* PROCEDURE [ccall] gets* (s: PtrSTR); *)
|
|
|
+ PROCEDURE [ccall] gets* (s: PtrSTR): PtrSTR; (* OpenBSD 5.2 *)
|
|
|
+
|
|
|
+ PROCEDURE [ccall] fgets* (s: PtrSTR; n: INTEGER; fp: PtrFILE): PtrSTR;
|
|
|
+ PROCEDURE [ccall] gmtime* (VAR timep: time_t): tm;
|
|
|
+ PROCEDURE [ccall] kill* (pid: pid_t; sig: INTEGER): INTEGER;
|
|
|
+ PROCEDURE [ccall] localtime* (VAR timep: time_t): tm;
|
|
|
+ PROCEDURE [ccall] malloc* (size: size_t): PtrVoid;
|
|
|
+ PROCEDURE [ccall] mkdir* (path: PtrSTR; mode: mode_t): INTEGER;
|
|
|
+ PROCEDURE [ccall] mktime* (timeptr: tm): time_t;
|
|
|
+ PROCEDURE [ccall] opendir* (filename: PtrSTR): PtrDIR;
|
|
|
+ PROCEDURE [ccall] printf* (s: PtrSTR): INTEGER;
|
|
|
+ PROCEDURE [ccall] readdir* (dir: PtrDIR): PtrDirent;
|
|
|
+ PROCEDURE [ccall] remove* (path: PtrSTR): INTEGER;
|
|
|
+ PROCEDURE [ccall] rename* (from, to: PtrSTR): INTEGER;
|
|
|
+ PROCEDURE [ccall] scandir* (dir: PtrDIR; namelist: PtrDirentArray; selector: SelectorFunc; cmp: CmpFunc): INTEGER;
|
|
|
+
|
|
|
+ (* PROCEDURE [ccall] setcontext* (ucontext_t: Ptrucontext_t): INTEGER; *) (* OpenBSD *)
|
|
|
+
|
|
|
+ PROCEDURE [ccall] setjmp* (VAR env: jmp_buf): INTEGER;
|
|
|
+ PROCEDURE [ccall] sigaction* (sig_num: INTEGER; VAR [nil] act: sigaction_t; VAR [nil] oldact: sigaction_t): INTEGER;
|
|
|
+ PROCEDURE [ccall] sigaddset* (set: Ptrsigset_t; sig: INTEGER): INTEGER;
|
|
|
+ PROCEDURE [ccall] sigdelset* (set: Ptrsigset_t; sig: INTEGER): INTEGER;
|
|
|
+ PROCEDURE [ccall] sigemptyset* (set: Ptrsigset_t): INTEGER;
|
|
|
+ PROCEDURE [ccall] sigfillset* (set: Ptrsigset_t): INTEGER;
|
|
|
+ PROCEDURE [ccall] sigismemeber* (set: Ptrsigset_t; sig: INTEGER): INTEGER;
|
|
|
+ PROCEDURE [ccall] siglongjmp* (VAR env: sigjmp_buf; val: INTEGER);
|
|
|
+
|
|
|
+ PROCEDURE [ccall] signal* (sig_num: INTEGER; sighandler: PtrProc): PtrProc;
|
|
|
+ (* PROCEDURE [ccall] sigsetjmp* ["__sigsetjmp"] (VAR env: sigjmp_buf; savemask: INTEGER): INTEGER; *)
|
|
|
+ PROCEDURE [ccall] sigsetjmp* (VAR env: sigjmp_buf; savemask: INTEGER): INTEGER; (* OpenBSD *)
|
|
|
+
|
|
|
+ (* OpenBSD *)
|
|
|
+ PROCEDURE [ccall] stat* (filename: PtrSTR; VAR buf: stat_t): INTEGER; (* stat is a macro and expands to __xstat(3, filename, buf) *)
|
|
|
+(* OpenBSD: __xstat not present
|
|
|
+ PROCEDURE [ccall] __xstat* (version: INTEGER; filename: PtrSTR; VAR buf: stat_t): INTEGER;
|
|
|
+*)
|
|
|
+
|
|
|
+ PROCEDURE [ccall] strftime* (s: PtrSTR; max: size_t; format: PtrSTR; ptm: tm): size_t;
|
|
|
+ PROCEDURE [ccall] time* (VAR [nil] t: time_t): time_t;
|
|
|
+
|
|
|
+ (* PROCEDURE [ccall] __errno_location*(): INTEGER; *)
|
|
|
+ PROCEDURE [ccall] __errno_location* ["__errno"] (): INTEGER; (* OpenBSD *)
|
|
|
+
|
|
|
+ PROCEDURE [ccall] open* (path: PtrSTR; flags: SET; mode: mode_t): INTEGER;
|
|
|
+ PROCEDURE [ccall] close* (d: INTEGER): INTEGER;
|
|
|
+ PROCEDURE [ccall] read* (d: INTEGER; buf: PtrVoid; nbytes: size_t): ssize_t;
|
|
|
+ PROCEDURE [ccall] write* (d: INTEGER; buf: PtrVoid; nBytes: size_t): ssize_t;
|
|
|
+
|
|
|
+ (* OpenBSD *)
|
|
|
+ PROCEDURE [ccall] mprotect* (addr: PtrVoid; len: size_t; prot: SET): INTEGER;
|
|
|
+
|
|
|
+ (* OpenBSD 5.2 *)
|
|
|
+ PROCEDURE [ccall] madvise* (addr: PtrVoid; len: size_t; behav: INTEGER): INTEGER;
|
|
|
+
|
|
|
+ PROCEDURE [ccall] mmap* (addr: PtrVoid; len: size_t; prot: SET; flags: SET; fd: INTEGER; offset: off_t): PtrVoid;
|
|
|
+ PROCEDURE [ccall] munmap* (addr: PtrVoid; len: size_t): INTEGER;
|
|
|
+
|
|
|
+ PROCEDURE [ccall] getenv* (name: PtrSTR): PtrSTR;
|
|
|
+
|
|
|
+ (* OpenBSD 5.2: Ok *)
|
|
|
+ PROCEDURE [ccall] wctomb* (s: PtrSTR; wchar: wchar_t): INTEGER;
|
|
|
+ PROCEDURE [ccall] wcstombs* (s: PtrSTR; pwcs: PtrWSTR; n: size_t): size_t;
|
|
|
+ PROCEDURE [ccall] mbtowc* (pwc: PtrWSTR; s: PtrSTR; n: size_t): INTEGER;
|
|
|
+ PROCEDURE [ccall] mbstowcs* (pwcs: PtrWSTR; s: PtrSTR; n: size_t): size_t;
|
|
|
+
|
|
|
+ (* OpenBSD 5.2 *)
|
|
|
+ PROCEDURE [ccall] sysconf* (name: INTEGER): INTEGER;
|
|
|
+
|
|
|
+ PROCEDURE [ccall] sigaltstack* (VAR [nil] ss: sigaltstack_t; VAR [nil] oss: sigaltstack_t): INTEGER;
|
|
|
+
|
|
|
+ PROCEDURE [ccall] sigreturn* (ucontext_t: Ptrucontext_t): INTEGER;
|
|
|
+
|
|
|
+ PROCEDURE [ccall] sigprocmask* (how: INTEGER; VAR [nil] set: sigset_t; VAR [nil] oset: sigset_t): INTEGER;
|
|
|
+
|
|
|
+END LinLibc.
|