mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-12 04:06:08 +02:00
+ aix support for pthreads package
git-svn-id: trunk@20810 -
This commit is contained in:
parent
9ca2ea7fd0
commit
8335223caf
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -5995,6 +5995,7 @@ packages/pthreads/Makefile svneol=native#text/plain
|
|||||||
packages/pthreads/Makefile.fpc svneol=native#text/plain
|
packages/pthreads/Makefile.fpc svneol=native#text/plain
|
||||||
packages/pthreads/Makefile.fpc.fpcmake svneol=native#text/plain
|
packages/pthreads/Makefile.fpc.fpcmake svneol=native#text/plain
|
||||||
packages/pthreads/fpmake.pp svneol=native#text/plain
|
packages/pthreads/fpmake.pp svneol=native#text/plain
|
||||||
|
packages/pthreads/src/pthraix.inc svneol=native#text/plain
|
||||||
packages/pthreads/src/pthrbeos.inc svneol=native#text/plain
|
packages/pthreads/src/pthrbeos.inc svneol=native#text/plain
|
||||||
packages/pthreads/src/pthrbsd.inc svneol=native#text/plain
|
packages/pthreads/src/pthrbsd.inc svneol=native#text/plain
|
||||||
packages/pthreads/src/pthreads.pp svneol=native#text/plain
|
packages/pthreads/src/pthreads.pp svneol=native#text/plain
|
||||||
|
733
packages/pthreads/src/pthraix.inc
Normal file
733
packages/pthreads/src/pthraix.inc
Normal file
@ -0,0 +1,733 @@
|
|||||||
|
{$IFDEF FPC}
|
||||||
|
{$PACKRECORDS C}
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
|
Type
|
||||||
|
tid_t = {$ifdef cpu64}clong{$else}cint{$endif};
|
||||||
|
P__pthrdscreds = ^__pthrdscreds;
|
||||||
|
P__pthrdsinfo = ^__pthrdsinfo;
|
||||||
|
Pclockid_t = ^clockid_t;
|
||||||
|
Ppid_t = ^pid_t;
|
||||||
|
Ppthread_attr_t = ^pthread_attr_t;
|
||||||
|
Ppthread_barrier_t = ^pthread_barrier_t;
|
||||||
|
Ppthread_barrierattr_t = ^pthread_barrierattr_t;
|
||||||
|
Ppthread_cond_t = ^pthread_cond_t;
|
||||||
|
Ppthread_condattr_t = ^pthread_condattr_t;
|
||||||
|
Ppthread_key_t = ^pthread_key_t;
|
||||||
|
Ppthread_mutex_t = ^pthread_mutex_t;
|
||||||
|
Ppthread_mutexattr_t = ^pthread_mutexattr_t;
|
||||||
|
Ppthread_once_t = ^pthread_once_t;
|
||||||
|
Ppthread_rwlock_t = ^pthread_rwlock_t;
|
||||||
|
Ppthread_rwlockattr_t = ^pthread_rwlockattr_t;
|
||||||
|
Ppthread_spinlock_t = ^pthread_spinlock_t;
|
||||||
|
Ppthread_t = ^pthread_t;
|
||||||
|
Prusage = ^rusage;
|
||||||
|
Psched_param = ^sched_param;
|
||||||
|
Psigset_t = ^sigset_t;
|
||||||
|
Psize_t = ^size_t;
|
||||||
|
Ptid_t = ^tid_t;
|
||||||
|
Ptimespec = ^timespec;
|
||||||
|
|
||||||
|
pthread_barrier_t = record
|
||||||
|
{$ifdef cpu64}
|
||||||
|
__br_word: array[0..4] of clong;
|
||||||
|
{$else}
|
||||||
|
__br_word: array[0..7] of cint;
|
||||||
|
{$endif}
|
||||||
|
end;
|
||||||
|
|
||||||
|
pthread_barrierattr_t = pointer;
|
||||||
|
|
||||||
|
_once = record
|
||||||
|
{$ifdef cpu64}
|
||||||
|
__on_word: array[0..8] of clong;
|
||||||
|
{$else}
|
||||||
|
__on_word: array[0..27] of cint;
|
||||||
|
{$endif}
|
||||||
|
end;
|
||||||
|
|
||||||
|
pthread_once_t = _once;
|
||||||
|
|
||||||
|
pthread_rwlockattr_t = pointer;
|
||||||
|
|
||||||
|
pthread_spinlock_t = record
|
||||||
|
{$ifdef cpu64}
|
||||||
|
__sp_word: array[0..2] of clong;
|
||||||
|
{$else}
|
||||||
|
__sp_word: array[0..5] of cint;
|
||||||
|
{$endif}
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
rusage = record
|
||||||
|
ru_utime,
|
||||||
|
ru_stime: timeval;
|
||||||
|
ru_maxrss,
|
||||||
|
ru_ixrss,
|
||||||
|
ru_idrss,
|
||||||
|
ru_isrss,
|
||||||
|
ru_minflt,
|
||||||
|
ru_majflt,
|
||||||
|
ru_nswap,
|
||||||
|
ru_inblock,
|
||||||
|
ru_oublock,
|
||||||
|
ru_msgsnd,
|
||||||
|
ru_msgrcv,
|
||||||
|
ru_nsignals,
|
||||||
|
ru_nvcsw,
|
||||||
|
ru_nivcsw: clong;
|
||||||
|
end;
|
||||||
|
|
||||||
|
sched_param = record
|
||||||
|
sched_priority,
|
||||||
|
sched_policy : cint;
|
||||||
|
sched_reserved: array[0..5] of cint;
|
||||||
|
end;
|
||||||
|
|
||||||
|
plabel_t = ^label_t;
|
||||||
|
label_t = record
|
||||||
|
prev: plabel_t;
|
||||||
|
iar: culong;
|
||||||
|
stack: culong;
|
||||||
|
toc: culong;
|
||||||
|
cr: culong;
|
||||||
|
intpri: culong;
|
||||||
|
reg: array[0..18] of culong; // non-volatile regs (13..31)
|
||||||
|
end;
|
||||||
|
|
||||||
|
padspace_t = ^adspace_t;
|
||||||
|
adspace_t = record
|
||||||
|
alloc: culong;
|
||||||
|
srval: array[0..15] of cuint64;
|
||||||
|
end;
|
||||||
|
|
||||||
|
pmstsave = ^mstsave;
|
||||||
|
mstsave = record
|
||||||
|
prev: pmstsave;
|
||||||
|
kjmpbuf: plabel_t;
|
||||||
|
stackfix: pchar;
|
||||||
|
intpri: byte;
|
||||||
|
backt: byte;
|
||||||
|
rsvd: array[0..1] of byte;
|
||||||
|
curid: pid_t;
|
||||||
|
|
||||||
|
excp_type: cint;
|
||||||
|
iar: culong; // instruction address register
|
||||||
|
msr: culong;
|
||||||
|
cr: culong;
|
||||||
|
lr: culong;
|
||||||
|
ctr: culong;
|
||||||
|
xer: culong;
|
||||||
|
mq: culong;
|
||||||
|
tid: culong;
|
||||||
|
fpscr: culong;
|
||||||
|
fpeu: bytebool;
|
||||||
|
fpinfo: byte;
|
||||||
|
pad: array[0..1] of byte;
|
||||||
|
except_: array[0..4] of culong;
|
||||||
|
pad1: array[0..3] of byte;
|
||||||
|
o_iar: culong;
|
||||||
|
o_toc: culong;
|
||||||
|
o_arg1: culong;
|
||||||
|
excbranch: culong;
|
||||||
|
fpscrx: culong;
|
||||||
|
o_vaddr: culong;
|
||||||
|
cachealign: array[0..6] of culong;
|
||||||
|
as_: adspace_t;
|
||||||
|
gpr: array[0..31] of culong;
|
||||||
|
fpr: array[0..31] of double;
|
||||||
|
end;
|
||||||
|
|
||||||
|
pstack_t = ^stack_t;
|
||||||
|
stack_t = record
|
||||||
|
ss_sp: pointer;
|
||||||
|
ss_size: size_t;
|
||||||
|
ss_flags: cint;
|
||||||
|
__pad: array[0..3] of cint;
|
||||||
|
end;
|
||||||
|
|
||||||
|
__vmxreg_t = record
|
||||||
|
__v: array[0..3] of cint;
|
||||||
|
end;
|
||||||
|
|
||||||
|
__vmx_context = record
|
||||||
|
__vr: array[0..31] of __vmxreg_t;
|
||||||
|
__pad1: array[0..2] of cuint;
|
||||||
|
__vscr: cuint;
|
||||||
|
__vrsave: cuint;
|
||||||
|
__pad2: array[0..1] of cuint;
|
||||||
|
end;
|
||||||
|
|
||||||
|
p__extctx_t = ^__extctx_t;
|
||||||
|
__extctx_t = record
|
||||||
|
__flags: cuint;
|
||||||
|
__rsvd1: array[0..2] of cuint;
|
||||||
|
__u1: record
|
||||||
|
__vmx: __vmx_context
|
||||||
|
end;
|
||||||
|
__ukeys: cuint;
|
||||||
|
__reserved: array[0..4096-sizeof(__vmx_context)-7*sizeof(cint)-1] of byte;
|
||||||
|
__extctx_magic: cint;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
__pthrdscontext = record
|
||||||
|
__pc_gpr : array[0..(32)-1] of culonglong;
|
||||||
|
__pc_msr : culonglong;
|
||||||
|
__pc_iar : culonglong;
|
||||||
|
__pc_lr : culonglong;
|
||||||
|
__pc_ctr : culonglong;
|
||||||
|
__pc_cr : cuint;
|
||||||
|
__pc_xer : cuint;
|
||||||
|
__pc_fpscr : cuint;
|
||||||
|
__pc_fpscrx : cuint;
|
||||||
|
__pc_except : array[0..0] of culonglong;
|
||||||
|
__pc_fpr : array[0..(32)-1] of double;
|
||||||
|
__pc_fpeu : cchar;
|
||||||
|
__pc_fpinfo : cchar;
|
||||||
|
__pc_mq : cuint;
|
||||||
|
__pc_excp_type : cint;
|
||||||
|
end;
|
||||||
|
|
||||||
|
__pthrdsinfo = record
|
||||||
|
__pi_handle : culonglong;
|
||||||
|
__pi_ptid : pthread_t;
|
||||||
|
__pi_tid : tid_t;
|
||||||
|
__pi_state : cint;
|
||||||
|
__pi_suspendstate : cint;
|
||||||
|
__pi_exit : pointer;
|
||||||
|
__pi_ustk : culong;
|
||||||
|
__pi_func : pointer;
|
||||||
|
__pi_arg : pointer;
|
||||||
|
__pi_siglevel : cuint;
|
||||||
|
__pi_frame_count : cuint;
|
||||||
|
__pi_stackaddr : ^cchar;
|
||||||
|
__pi_stackend : ^cchar;
|
||||||
|
__pi_stacksize : size_t;
|
||||||
|
{$ifdef cpu64}
|
||||||
|
__pi_pad : array[0..13] of culong;
|
||||||
|
{$else}
|
||||||
|
__pi_pad : array[0..12] of culong;
|
||||||
|
{$endif}
|
||||||
|
__pi_context : __pthrdscontext;
|
||||||
|
end;
|
||||||
|
|
||||||
|
__pthrdsinfox = record
|
||||||
|
__pi : __pthrdsinfo;
|
||||||
|
__pi_ec : __extctx_t;
|
||||||
|
end;
|
||||||
|
|
||||||
|
__pthrdstlsinfo = record
|
||||||
|
pti_vaddr : pointer;
|
||||||
|
pti_region : cint;
|
||||||
|
end;
|
||||||
|
PTHRDS_TLS_INFO = __pthrdstlsinfo;
|
||||||
|
|
||||||
|
p__cap_t = ^__cap_t;
|
||||||
|
__cap_t = record
|
||||||
|
cap_effective,
|
||||||
|
cap_inheritable,
|
||||||
|
cap_permitted : cuint64;
|
||||||
|
end;
|
||||||
|
pcap_t = ^cap_t;
|
||||||
|
cap_t = __cap_t;
|
||||||
|
|
||||||
|
ppriv_t = ^priv_t;
|
||||||
|
priv_t = record
|
||||||
|
pv_priv: array[0..1] of cuint;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
pcred_ext_t = ^cred_ext_t;
|
||||||
|
cred_ext_t = record
|
||||||
|
crx_ruid,
|
||||||
|
crx_uid,
|
||||||
|
crx_suid,
|
||||||
|
crx_luid,
|
||||||
|
crx_acctid : uid_t;
|
||||||
|
|
||||||
|
crx_gid,
|
||||||
|
crx_rgid,
|
||||||
|
crx_sgid : gid_t;
|
||||||
|
|
||||||
|
crx_ngrps: cint;
|
||||||
|
crx_groups: array[0..128-1] of gid_t;
|
||||||
|
|
||||||
|
crx_reserved_1: cint;
|
||||||
|
|
||||||
|
crx_caps: __cap_t;
|
||||||
|
|
||||||
|
crx_mpriv,
|
||||||
|
crx_ipriv,
|
||||||
|
crx_epriv,
|
||||||
|
crx_bpriv: priv_t;
|
||||||
|
|
||||||
|
crx_npags: cint;
|
||||||
|
crx_pagids: array[0..15] of byte;
|
||||||
|
crx_pags: array[0..15] of cint;
|
||||||
|
|
||||||
|
crx_pad: array[0..256-173-1] of cint;
|
||||||
|
end;
|
||||||
|
|
||||||
|
__pthrdscreds = record
|
||||||
|
__pc_flags : cuint;
|
||||||
|
__pc_cred : cred_ext_t;
|
||||||
|
__pc_reserved : array[0..8] of cint;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
const
|
||||||
|
PTHREAD_PROCESS_SHARED = 0;
|
||||||
|
PTHREAD_PROCESS_PRIVATE = 1;
|
||||||
|
|
||||||
|
{$ifndef _AIX_PTHREADS_D7}
|
||||||
|
|
||||||
|
const
|
||||||
|
PTHREAD_MUTEX_ERRORCHECK = 3;
|
||||||
|
PTHREAD_MUTEX_NORMAL = 5;
|
||||||
|
PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
|
|
||||||
|
const
|
||||||
|
PTHREAD_MUTEX_RECURSIVE = 4;
|
||||||
|
|
||||||
|
PTHREAD_PRIO_DEFAULT = 0;
|
||||||
|
PTHREAD_PRIO_NONE = 1;
|
||||||
|
PTHREAD_PRIO_PROTECT = 2;
|
||||||
|
PTHREAD_PRIO_INHERIT = 3;
|
||||||
|
PTHREAD_INHERIT_SCHED = 0;
|
||||||
|
PTHREAD_EXPLICIT_SCHED = 1;
|
||||||
|
PTHREAD_SCOPE_SYSTEM = 0;
|
||||||
|
PTHREAD_SCOPE_PROCESS = 1;
|
||||||
|
|
||||||
|
PTHREAD_CREATE_DETACHED = 1;
|
||||||
|
PTHREAD_CREATE_JOINABLE = 0;
|
||||||
|
|
||||||
|
|
||||||
|
const
|
||||||
|
PTHREAD_CANCELED = pointer(-1);
|
||||||
|
|
||||||
|
PTHREAD_CANCEL_DISABLE = 0;
|
||||||
|
|
||||||
|
PTHREAD_CANCEL_ENABLE = 1;
|
||||||
|
|
||||||
|
PTHREAD_CANCEL_DEFERRED = 0;
|
||||||
|
|
||||||
|
PTHREAD_CANCEL_ASYNCHRONOUS = 1;
|
||||||
|
|
||||||
|
PTHREAD_BARRIER_SERIAL_THREAD = 2;
|
||||||
|
_PTH_FLAGS_INIT64 = 2;
|
||||||
|
|
||||||
|
|
||||||
|
function pthread_attr_init(_para1:Ppthread_attr_t):cint;cdecl;external;
|
||||||
|
function pthread_attr_destroy(_para1:Ppthread_attr_t):cint;cdecl;external;
|
||||||
|
{$ifndef _AIX_PTHREADS_D7}
|
||||||
|
|
||||||
|
function pthread_attr_setstack(_para1:Ppthread_attr_t; _para2:pointer; _para3:size_t):cint;cdecl;external;
|
||||||
|
(* Const before type ignored *)
|
||||||
|
function pthread_attr_getstack(_para1:Ppthread_attr_t; _para2:Ppointer; _para3:Psize_t):cint;cdecl;external;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
|
|
||||||
|
function pthread_attr_setstacksize(_para1:Ppthread_attr_t; _para2:size_t):cint;cdecl;external;
|
||||||
|
(* Const before type ignored *)
|
||||||
|
function pthread_attr_getstacksize(_para1:Ppthread_attr_t; _para2:Psize_t):cint;cdecl;external;
|
||||||
|
function pthread_attr_setstackaddr(_para1:Ppthread_attr_t; _para2:pointer):cint;cdecl;external;
|
||||||
|
(* Const before type ignored *)
|
||||||
|
function pthread_attr_getstackaddr(_para1:Ppthread_attr_t; _para2:Ppointer):cint;cdecl;external;
|
||||||
|
function pthread_attr_setschedpolicy(_para1:Ppthread_attr_t; _para2:cint):cint;cdecl;external;
|
||||||
|
(* Const before type ignored *)
|
||||||
|
function pthread_attr_getschedpolicy(_para1:Ppthread_attr_t; _para2:Pcint):cint;cdecl;external;
|
||||||
|
(* Const before type ignored *)
|
||||||
|
function pthread_attr_setschedparam(_para1:Ppthread_attr_t; _para2:Psched_param):cint;cdecl;external;
|
||||||
|
(* Const before type ignored *)
|
||||||
|
function pthread_attr_getschedparam(_para1:Ppthread_attr_t; _para2:Psched_param):cint;cdecl;external;
|
||||||
|
function pthread_attr_setinheritsched(_para1:Ppthread_attr_t; _para2:cint):cint;cdecl;external;
|
||||||
|
(* Const before type ignored *)
|
||||||
|
function pthread_attr_getinheritsched(_para1:Ppthread_attr_t; _para2:Pcint):cint;cdecl;external;
|
||||||
|
function pthread_attr_setdetachstate(_para1:Ppthread_attr_t; _para2:cint):cint;cdecl;external;
|
||||||
|
(* Const before type ignored *)
|
||||||
|
function pthread_attr_getdetachstate(_para1:Ppthread_attr_t; _para2:Pcint):cint;cdecl;external;
|
||||||
|
{$ifndef _AIX_PTHREADS_D7}
|
||||||
|
|
||||||
|
function pthread_attr_setguardsize(_para1:Ppthread_attr_t; _para2:size_t):cint;cdecl;external;
|
||||||
|
(* Const before type ignored *)
|
||||||
|
function pthread_attr_getguardsize(_para1:Ppthread_attr_t; _para2:Psize_t):cint;cdecl;external;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
|
|
||||||
|
(* Const before type ignored *)
|
||||||
|
|
||||||
|
function pthread_setschedparam(_para1:pthread_t; _para2:cint; _para3:Psched_param):cint;cdecl;external;
|
||||||
|
function pthread_getschedparam(_para1:pthread_t; _para2:Pcint; _para3:Psched_param):cint;cdecl;external;
|
||||||
|
function pthread_setschedprio(_para1:pthread_t; _para2:cint):cint;cdecl;external;
|
||||||
|
function pthread_self:pthread_t;cdecl;external;
|
||||||
|
|
||||||
|
(* Const before type ignored *)
|
||||||
|
|
||||||
|
type pthreadcreateroutine = function (p:pointer):pointer; cdecl;
|
||||||
|
function pthread_create(_para1:Ppthread_t; _para2:Ppthread_attr_t; _para3:Pthreadcreateroutine; _para4:pointer):cint;cdecl;external;
|
||||||
|
function pthread_detach(_para1:pthread_t):cint;cdecl;external;
|
||||||
|
function pthread_join(_para1:pthread_t; _para2:Ppointer):cint;cdecl;external;
|
||||||
|
procedure pthread_exit(_para1:pointer);cdecl;external;
|
||||||
|
{$ifdef _AIX_PTHREADS_D7}
|
||||||
|
procedure pthread_yield;cdecl;external;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
|
type cleanuproutine= procedure (a:pointer);cdecl;
|
||||||
|
procedure pthread_cleanup_push(_para1:cleanuproutine; _para2:pointer);cdecl;external;
|
||||||
|
procedure pthread_cleanup_pop(_para1:cint);cdecl;external;
|
||||||
|
function pthread_cancel(_para1:pthread_t):cint;cdecl;external;
|
||||||
|
function pthread_attr_setscope(_para1:Ppthread_attr_t; _para2:cint):cint;cdecl;external;
|
||||||
|
(* Const before type ignored *)
|
||||||
|
function pthread_attr_getscope(_para1:Ppthread_attr_t; _para2:Pcint):cint;cdecl;external;
|
||||||
|
function pthread_equal(_para1:pthread_t; _para2:pthread_t):cint;cdecl;external;
|
||||||
|
function pthread_kill(_para1:pthread_t; _para2:cint):cint;cdecl;external;
|
||||||
|
function pthread_checkpnt_pending:cint;cdecl;external;
|
||||||
|
|
||||||
|
function pthread_getcpuclockid(_para1:pthread_t; _para2:Pclockid_t):cint;cdecl;external;
|
||||||
|
|
||||||
|
|
||||||
|
function pthread_mutexattr_init(_para1:Ppthread_mutexattr_t):cint;cdecl;external;
|
||||||
|
function pthread_mutexattr_destroy(_para1:Ppthread_mutexattr_t):cint;cdecl;external;
|
||||||
|
function pthread_mutexattr_setprotocol(_para1:Ppthread_mutexattr_t; _para2:cint):cint;cdecl;external;
|
||||||
|
(* Const before type ignored *)
|
||||||
|
function pthread_mutexattr_getprotocol(_para1:Ppthread_mutexattr_t; _para2:Pcint):cint;cdecl;external;
|
||||||
|
function pthread_mutexattr_setprioceiling(_para1:Ppthread_mutexattr_t; _para2:cint):cint;cdecl;external;
|
||||||
|
(* Const before type ignored *)
|
||||||
|
function pthread_mutexattr_getprioceiling(_para1:Ppthread_mutexattr_t; _para2:Pcint):cint;cdecl;external;
|
||||||
|
(* Const before type ignored *)
|
||||||
|
function pthread_mutexattr_getpshared(_para1:Ppthread_mutexattr_t; _para2:Pcint):cint;cdecl;external;
|
||||||
|
{$ifdef _AIX_PTHREADS_D7}
|
||||||
|
(* Const before type ignored *)
|
||||||
|
function pthread_mutexattr_setpshared(_para1:Ppthread_mutexattr_t; _para2:cint):cint;cdecl;external;
|
||||||
|
{$else}
|
||||||
|
|
||||||
|
function pthread_mutexattr_setpshared(_para1:Ppthread_mutexattr_t; _para2:cint):cint;cdecl;external;
|
||||||
|
{$endif}
|
||||||
|
{$ifndef _AIX_PTHREADS_D7}
|
||||||
|
(* Const before type ignored *)
|
||||||
|
|
||||||
|
function pthread_mutexattr_gettype(_para1:Ppthread_mutexattr_t; _para2:Pcint):cint;cdecl;external;
|
||||||
|
function pthread_mutexattr_settype(_para1:Ppthread_mutexattr_t; _para2:cint):cint;cdecl;external;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function pthread_mutex_init(_para1:Ppthread_mutex_t; _para2:Ppthread_mutexattr_t):cint;cdecl;external;
|
||||||
|
function pthread_mutex_destroy(_para1:Ppthread_mutex_t):cint;cdecl;external;
|
||||||
|
function pthread_mutex_lock(_para1:Ppthread_mutex_t):cint;cdecl;external;
|
||||||
|
(* Const before type ignored *)
|
||||||
|
function pthread_mutex_timedlock(_para1:Ppthread_mutex_t; _para2:Ptimespec):cint;cdecl;external;
|
||||||
|
function pthread_mutex_trylock(_para1:Ppthread_mutex_t):cint;cdecl;external;
|
||||||
|
function pthread_mutex_unlock(_para1:Ppthread_mutex_t):cint;cdecl;external;
|
||||||
|
function pthread_mutex_setprioceiling(_para1:Ppthread_mutex_t; _para2:cint; _para3:Pcint):cint;cdecl;external;
|
||||||
|
function pthread_mutex_getprioceiling(_para1:Ppthread_mutex_t; _para2:Pcint):cint;cdecl;external;
|
||||||
|
|
||||||
|
function pthread_condattr_init(_para1:Ppthread_condattr_t):cint;cdecl;external;
|
||||||
|
function pthread_condattr_destroy(_para1:Ppthread_condattr_t):cint;cdecl;external;
|
||||||
|
(* Const before type ignored *)
|
||||||
|
function pthread_condattr_getpshared(_para1:Ppthread_condattr_t; _para2:Pcint):cint;cdecl;external;
|
||||||
|
function pthread_condattr_setpshared(_para1:Ppthread_condattr_t; _para2:cint):cint;cdecl;external;
|
||||||
|
(* Const before type ignored *)
|
||||||
|
function pthread_condattr_getclock(_para1:Ppthread_condattr_t; _para2:Pclockid_t):cint;cdecl;external;
|
||||||
|
function pthread_condattr_setclock(_para1:Ppthread_condattr_t; _para2:clockid_t):cint;cdecl;external;
|
||||||
|
|
||||||
|
(* Const before type ignored *)
|
||||||
|
function pthread_cond_init(_para1:Ppthread_cond_t; _para2:Ppthread_condattr_t):cint;cdecl;external;
|
||||||
|
function pthread_cond_destroy(_para1:Ppthread_cond_t):cint;cdecl;external;
|
||||||
|
function pthread_cond_wait(_para1:Ppthread_cond_t; _para2:Ppthread_mutex_t):cint;cdecl;external;
|
||||||
|
(* Const before type ignored *)
|
||||||
|
function pthread_cond_timedwait(_para1:Ppthread_cond_t; _para2:Ppthread_mutex_t; _para3:Ptimespec):cint;cdecl;external;
|
||||||
|
function pthread_cond_signal(_para1:Ppthread_cond_t):cint;cdecl;external;
|
||||||
|
function pthread_cond_broadcast(_para1:Ppthread_cond_t):cint;cdecl;external;
|
||||||
|
|
||||||
|
type keycreateroutine = procedure(p: pointer); cdecl;
|
||||||
|
function pthread_key_create(_para1:Ppthread_key_t; _para2:keycreateroutine):cint;cdecl;external;
|
||||||
|
function pthread_key_delete(_para1:pthread_key_t):cint;cdecl;external;
|
||||||
|
function pthread_getspecific(_para1:pthread_key_t):pointer;cdecl;external;
|
||||||
|
(* Const before type ignored *)
|
||||||
|
function pthread_setspecific(_para1:pthread_key_t; _para2:pointer):cint;cdecl;external;
|
||||||
|
|
||||||
|
procedure pthread_testcancel;cdecl;external;
|
||||||
|
function pthread_setcancelstate(_para1:cint; _para2:Pcint):cint;cdecl;external;
|
||||||
|
function pthread_setcanceltype(_para1:cint; _para2:Pcint):cint;cdecl;external;
|
||||||
|
|
||||||
|
type pthreadonceroutine = procedure;cdecl;
|
||||||
|
function pthread_once(_para1:Ppthread_once_t; _para2:pthreadonceroutine ):cint;cdecl;external;
|
||||||
|
|
||||||
|
{$ifndef _AIX_PTHREADS_D7}
|
||||||
|
|
||||||
|
function pthread_rwlock_destroy(_para1:Ppthread_rwlock_t):cint;cdecl;external;
|
||||||
|
(* Const before type ignored *)
|
||||||
|
function pthread_rwlock_init(_para1:Ppthread_rwlock_t; _para2:Ppthread_rwlockattr_t):cint;cdecl;external;
|
||||||
|
function pthread_rwlock_rdlock(_para1:Ppthread_rwlock_t):cint;cdecl;external;
|
||||||
|
function pthread_rwlock_tryrdlock(_para1:Ppthread_rwlock_t):cint;cdecl;external;
|
||||||
|
function pthread_rwlock_trywrlock(_para1:Ppthread_rwlock_t):cint;cdecl;external;
|
||||||
|
function pthread_rwlock_unlock(_para1:Ppthread_rwlock_t):cint;cdecl;external;
|
||||||
|
function pthread_rwlock_wrlock(_para1:Ppthread_rwlock_t):cint;cdecl;external;
|
||||||
|
function pthread_rwlockattr_destroy(_para1:Ppthread_rwlockattr_t):cint;cdecl;external;
|
||||||
|
(* Const before type ignored *)
|
||||||
|
function pthread_rwlockattr_getpshared(_para1:Ppthread_rwlockattr_t; _para2:Pcint):cint;cdecl;external;
|
||||||
|
function pthread_rwlockattr_init(_para1:Ppthread_rwlockattr_t):cint;cdecl;external;
|
||||||
|
function pthread_rwlockattr_setpshared(_para1:Ppthread_rwlockattr_t; _para2:cint):cint;cdecl;external;
|
||||||
|
type pthreadatforkroutine = procedure;cdecl;
|
||||||
|
function pthread_atfork(_para1:pthreadatforkroutine ; _para2:pthreadatforkroutine ; _para3:pthreadatforkroutine ):cint;cdecl;external;
|
||||||
|
|
||||||
|
(* Const before type ignored *)
|
||||||
|
|
||||||
|
function pthread_rwlock_timedwrlock(_para1:Ppthread_rwlock_t; _para2:Ptimespec):cint;cdecl;external;
|
||||||
|
(* Const before type ignored *)
|
||||||
|
function pthread_rwlock_timedrdlock(_para1:Ppthread_rwlock_t; _para2:Ptimespec):cint;cdecl;external;
|
||||||
|
|
||||||
|
|
||||||
|
function pthread_getconcurrency:cint;cdecl;external;
|
||||||
|
function pthread_setconcurrency(_para1:cint):cint;cdecl;external;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
|
function pthread_spin_init(_para1:Ppthread_spinlock_t; _para2:cint):cint;cdecl;external;
|
||||||
|
function pthread_spin_destroy(_para1:Ppthread_spinlock_t):cint;cdecl;external;
|
||||||
|
function pthread_spin_lock(_para1:Ppthread_spinlock_t):cint;cdecl;external;
|
||||||
|
function pthread_spin_unlock(_para1:Ppthread_spinlock_t):cint;cdecl;external;
|
||||||
|
function pthread_spin_trylock(_para1:Ppthread_spinlock_t):cint;cdecl;external;
|
||||||
|
|
||||||
|
function pthread_barrierattr_init(_para1:Ppthread_barrierattr_t):cint;cdecl;external;
|
||||||
|
function pthread_barrierattr_destroy(_para1:Ppthread_barrierattr_t):cint;cdecl;external;
|
||||||
|
(* Const before type ignored *)
|
||||||
|
function pthread_barrierattr_getpshared(_para1:Ppthread_barrierattr_t; _para2:Pcint):cint;cdecl;external;
|
||||||
|
function pthread_barrierattr_setpshared(_para1:Ppthread_barrierattr_t; _para2:cint):cint;cdecl;external;
|
||||||
|
|
||||||
|
(* Const before type ignored *)
|
||||||
|
function pthread_barrier_init(_para1:Ppthread_barrier_t; _para2:Ppthread_barrierattr_t; _para3:cunsigned):cint;cdecl;external;
|
||||||
|
function pthread_barrier_destroy(_para1:Ppthread_barrier_t):cint;cdecl;external;
|
||||||
|
function pthread_barrier_wait(_para1:Ppthread_barrier_t):cint;cdecl;external;
|
||||||
|
|
||||||
|
{$ifdef _AIX_PTHREADS_D7}
|
||||||
|
|
||||||
|
function pthread_atfork(_para1:procedure ; _para2:procedure ; _para3:procedure ):cint;cdecl;external;
|
||||||
|
{$endif}
|
||||||
|
var
|
||||||
|
__pthread_trace : cint;cvar;external;
|
||||||
|
|
||||||
|
__n_pthreads : cint;cvar;external;
|
||||||
|
|
||||||
|
{$if defined(_ALL_SOURCE) or defined(_AIX_PTHREADS_D7)}
|
||||||
|
|
||||||
|
|
||||||
|
const
|
||||||
|
LOG_GENERAL = 1;
|
||||||
|
LOG_LOCKS = 2;
|
||||||
|
LOG_DATA = 4;
|
||||||
|
LOG_CREATE = 8;
|
||||||
|
LOG_USCHED = 16;
|
||||||
|
LOG_CANCEL = 32;
|
||||||
|
LOG_SIGNAL = 64;
|
||||||
|
LOG_SUSPEND = 128;
|
||||||
|
LOG_MRQ = 256;
|
||||||
|
LOG_MRQ1 = 512;
|
||||||
|
|
||||||
|
LOG_HANG = 1024;
|
||||||
|
LOG_LOCKBOOST = 2048;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
MUTEX_FAST_NP = 2;
|
||||||
|
MUTEX_RECURSIVE_NP = 1;
|
||||||
|
|
||||||
|
MUTEX_NONRECURSIVE_NP = 0;
|
||||||
|
|
||||||
|
DEFAULT_SCHED = SCHED_OTHER;
|
||||||
|
DEFAULT_PRIO = PTHREAD_PRIO_MIN;
|
||||||
|
DEFAULT_INHERIT = PTHREAD_INHERIT_SCHED;
|
||||||
|
PTHREAD_SCOPE_GLOBAL = PTHREAD_SCOPE_SYSTEM;
|
||||||
|
PTHREAD_SCOPE_LOCAL = PTHREAD_SCOPE_PROCESS;
|
||||||
|
DEFAULT_SCOPE = PTHREAD_SCOPE_LOCAL;
|
||||||
|
|
||||||
|
PTHREAD_CREATE_UNDETACHED = 0;
|
||||||
|
|
||||||
|
PTHREAD_CREATE_SUSPENDED_NP = 1;
|
||||||
|
PTHREAD_CREATE_UNSUSPENDED_NP = 0;
|
||||||
|
{$ifdef _AIX_PTHREADS_D7}
|
||||||
|
DEFAULT_DETACHSTATE = PTHREAD_CREATE_DETACHED;
|
||||||
|
{$else}
|
||||||
|
|
||||||
|
const
|
||||||
|
DEFAULT_DETACHSTATE = PTHREAD_CREATE_JOINABLE;
|
||||||
|
{$endif}
|
||||||
|
(*
|
||||||
|
{$ifdef __64BIT__}
|
||||||
|
{ was #define dname(params) para_def_expr }
|
||||||
|
{ argument types are unknown }
|
||||||
|
{ return type might be wrong }
|
||||||
|
|
||||||
|
function pthread_mutex_getowner_np(mutex : longint) : longint;
|
||||||
|
|
||||||
|
{$else}
|
||||||
|
{ was #define dname(params) para_def_expr }
|
||||||
|
{ argument types are unknown }
|
||||||
|
{ return type might be wrong }
|
||||||
|
|
||||||
|
function pthread_mutex_getowner_np(mutex : longint) : longint;
|
||||||
|
|
||||||
|
{$endif}
|
||||||
|
*)
|
||||||
|
|
||||||
|
const
|
||||||
|
PAGESIZE = 4096;
|
||||||
|
{$ifdef cpu64}
|
||||||
|
PTHREAD_SPECIFIC_DATA = 2 * PAGESIZE; { per-thread data }
|
||||||
|
APTHREAD_DATAKEYS_MAX = (PTHREAD_SPECIFIC_DATA / 16);
|
||||||
|
{$else cpu64}
|
||||||
|
PTHREAD_SPECIFIC_DATA = PAGESIZE; { per-thread data }
|
||||||
|
APTHREAD_DATAKEYS_MAX : (PTHREAD_SPECIFIC_DATA / 8);
|
||||||
|
{$endif cpu64}
|
||||||
|
PTHREAD_DATAKEYS_MAX = 450;
|
||||||
|
PTHREAD_STACK_MIN_NP = (PAGESIZE * 2);
|
||||||
|
|
||||||
|
|
||||||
|
{$ifdef _AIX_PTHREADS_D7}
|
||||||
|
PTHREAD_STACK_MIN = (PAGESIZE * 24);
|
||||||
|
{$else _AIX_PTHREADS_D7}
|
||||||
|
{$ifdef cpu64}
|
||||||
|
PTHREAD_STACK_MIN = (2 * PAGESIZE * 2);
|
||||||
|
{$else cpu64}
|
||||||
|
PTHREAD_STACK_MIN = (PAGESIZE * 2);
|
||||||
|
{$endif cpu64}
|
||||||
|
{$endif _AIX_PTHREADS_D7}
|
||||||
|
|
||||||
|
/* PTHREAD_THREADS_MAX has the same value as PTHREAD_THREADS_MAX in limits.h */
|
||||||
|
{$ifdef _LARGE_THREADS}
|
||||||
|
PTHREAD_THREADS_MAX = 32767;
|
||||||
|
{$else _LARGE_THREADS}
|
||||||
|
PTHREAD_THREADS_MAX = 512;
|
||||||
|
{$endif _LARGE_THREADS}
|
||||||
|
|
||||||
|
const
|
||||||
|
__pi_suspended = __pi_suspendstate;
|
||||||
|
__pi_returned = __pi_exit;
|
||||||
|
|
||||||
|
PTHRDSINFO_STATE_NOTSUP = $00000100;
|
||||||
|
PTHRDSINFO_STATE_IDLE = $00000004;
|
||||||
|
PTHRDSINFO_STATE_RUN = $00000001;
|
||||||
|
PTHRDSINFO_STATE_SLEEP = $00000008;
|
||||||
|
PTHRDSINFO_STATE_READY = $00000002;
|
||||||
|
PTHRDSINFO_STATE_TERM = $00000010;
|
||||||
|
|
||||||
|
PTHRDSINFO_SUSPENDSTATE_NOTSUP = $00000100;
|
||||||
|
PTHRDSINFO_SUSPENDSTATE_SUSPENDED = $00000001;
|
||||||
|
PTHRDSINFO_SUSPENDSTATE_UNSUSPENDED = $00000000;
|
||||||
|
|
||||||
|
|
||||||
|
const
|
||||||
|
PTHRDSINFO_SIGCTX_BASE = cuint(-1);
|
||||||
|
|
||||||
|
PTHRDSINFO_SIGCTX_INVALID = cuint(-1);
|
||||||
|
|
||||||
|
PTHRDSINFO_QUERY_GPRS = $00000001;
|
||||||
|
|
||||||
|
PTHRDSINFO_QUERY_SPRS = $00000002;
|
||||||
|
|
||||||
|
PTHRDSINFO_QUERY_FPRS = $00000004;
|
||||||
|
|
||||||
|
PTHRDSINFO_QUERY_REGS = $0000000F;
|
||||||
|
|
||||||
|
PTHRDSINFO_QUERY_TID = $00000010;
|
||||||
|
|
||||||
|
PTHRDSINFO_QUERY_ALL = $0000001F;
|
||||||
|
|
||||||
|
|
||||||
|
PTHRDSINFO_QUERY_SIGCTX = $00000100;
|
||||||
|
|
||||||
|
PTHRDSINFO_QUERY_EXTCTX = $00000200;
|
||||||
|
|
||||||
|
PTHRDSINFO_QUERY_TLS = $00000400;
|
||||||
|
|
||||||
|
PTHRDSINFO_RUSAGE_START = $00000001;
|
||||||
|
PTHRDSINFO_RUSAGE_STOP = $00000002;
|
||||||
|
PTHRDSINFO_RUSAGE_COLLECT = $00000004;
|
||||||
|
|
||||||
|
|
||||||
|
PTHRDSCREDS_INHERIT_UIDS = $00000001;
|
||||||
|
|
||||||
|
PTHRDSCREDS_INHERIT_GIDS = $00000010;
|
||||||
|
|
||||||
|
PTHRDSCREDS_INHERIT_GSETS = $00000100;
|
||||||
|
|
||||||
|
PTHRDSCREDS_INHERIT_CAPS = $00001000;
|
||||||
|
|
||||||
|
PTHRDSCREDS_INHERIT_PRIVS = $00010000;
|
||||||
|
|
||||||
|
PTHRDSCREDS_INHERIT_ALL = $00011111;
|
||||||
|
|
||||||
|
{$ifdef _AIX_PTHREADS_D7}
|
||||||
|
var
|
||||||
|
pthread_attr_default : pthread_attr_t;cvar;external;
|
||||||
|
pthread_mutexattr_default : pthread_mutexattr_t;cvar;external;
|
||||||
|
pthread_condattr_default : pthread_condattr_t;cvar;external;
|
||||||
|
__pthread_cleanup_handlerqueue : pthread_key_t;cvar;external;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
|
|
||||||
|
procedure __funcblock_np;cdecl;external;
|
||||||
|
|
||||||
|
{$ifndef _AIX32_THREADS}
|
||||||
|
|
||||||
|
function pthread_getunique_np(_para1:Ppthread_t; _para2:Pcint):cint;cdecl;external;
|
||||||
|
function pthread_mutexattr_getkind_np(_para1:Ppthread_mutexattr_t; _para2:Pcint):cint;cdecl;external;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function pthread_geteffectiveprio_np(_para1:pthread_t; _para2:Pcint):cint;cdecl;external;
|
||||||
|
function pthread_mutexattr_setkind_np(_para1:Ppthread_mutexattr_t; _para2:cint):cint;cdecl;external;
|
||||||
|
function pthread_set_mutexattr_default_np(_para1:cint):cint;cdecl;external;
|
||||||
|
function pthread_signal_to_cancel_np(_para1:Psigset_t; _para2:Ppthread_t):cint;cdecl;external;
|
||||||
|
function pthread_delay_np(_para1:Ptimespec):cint;cdecl;external;
|
||||||
|
function pthread_get_expiration_np(_para1:Ptimespec; _para2:Ptimespec):cint;cdecl;external;
|
||||||
|
procedure pthread_lock_global_np;cdecl;external;
|
||||||
|
procedure pthread_unlock_global_np;cdecl;external;
|
||||||
|
function pthread_atfork_np(_para1:pointer; _para2:procedure (_para1:pointer); _para3:procedure (_para1:pointer); _para4:procedure (_para1:pointer)):cint;cdecl;external;
|
||||||
|
|
||||||
|
const
|
||||||
|
PTHREAD_ATFORK_ARGUMENT = $00000001;
|
||||||
|
PTHREAD_ATFORK_ALL = $00000002;
|
||||||
|
|
||||||
|
function pthread_atfork_unregister_np(_para1:pointer; _para2:procedure ; _para3:procedure ; _para4:procedure ; _para5:cint):cint;cdecl;external;
|
||||||
|
function pthread_test_exit_np(_para1:Pcint):cint;cdecl;external;
|
||||||
|
procedure pthread_clear_exit_np(_para1:pthread_t);cdecl;external;
|
||||||
|
function pthread_setcancelstate_np(_para1:cint; _para2:Pcint):cint;cdecl;external;
|
||||||
|
function pthread_join_np(_para1:pthread_t; _para2:Ppointer):cint;cdecl;external;
|
||||||
|
procedure pthread_cleanup_push_np(_para1:procedure (_para1:pointer); _para2:pointer; _para3:Ppthread_t);cdecl;external;
|
||||||
|
procedure pthread_cleanup_pop_np(_para1:cint; _para2:pthread_t);cdecl;external;
|
||||||
|
function pthread_cleanup_information_np(_para1:pthread_t; _para2:pointer; _para3:Ptid_t; _para4:pointer; _para5:Ppthread_t):cint;cdecl;external;
|
||||||
|
|
||||||
|
(* Const before type ignored *)
|
||||||
|
|
||||||
|
function pthread_create_withcred_np(_para1:Ppthread_t; _para2:Ppthread_attr_t; _para3:Pprocedure (_para1:pointer); _para4:pointer; _para5:P__pthrdscreds):cint;cdecl;external;
|
||||||
|
{$ifdef _AIX_PTHREADS_D7}
|
||||||
|
function forkall(_para1:Ppid_t):cint;cdecl;external;
|
||||||
|
{$endif}
|
||||||
|
(* Const before type ignored *)
|
||||||
|
|
||||||
|
function sigthreadmask(_para1:cint; _para2:Psigset_t; _para3:Psigset_t):cint;cdecl;external;
|
||||||
|
function pthread_attr_setsuspendstate_np(_para1:Ppthread_attr_t; _para2:cint):cint;cdecl;external;
|
||||||
|
(* Const before type ignored *)
|
||||||
|
function pthread_attr_getsuspendstate_np(_para1:Ppthread_attr_t; _para2:Pcint):cint;cdecl;external;
|
||||||
|
function pthread_suspend_np(_para1:pthread_t):cint;cdecl;external;
|
||||||
|
function pthread_suspend_others_np:cint;cdecl;external;
|
||||||
|
function pthread_suspend(_para1:pthread_t):cint;cdecl;external;
|
||||||
|
function pthread_continue_np(_para1:pthread_t):cint;cdecl;external;
|
||||||
|
function pthread_unsuspend_np(_para1:pthread_t):cint;cdecl;external;
|
||||||
|
function pthread_continue_others_np:cint;cdecl;external;
|
||||||
|
function pthread_unsuspend_others_np:cint;cdecl;external;
|
||||||
|
function pthread_continue(_para1:pthread_t):cint;cdecl;external;
|
||||||
|
function pthread_attr_setstacksize_np(_para1:Ppthread_attr_t; _para2:size_t):cint;cdecl;external;
|
||||||
|
function pthread_attr_setukeyset_np(_para1:Ppthread_attr_t; _para2:Pculonglong):cint;cdecl;external;
|
||||||
|
(* Const before type ignored *)
|
||||||
|
function pthread_attr_getukeyset_np(_para1:Ppthread_attr_t; _para2:Pculonglong):cint;cdecl;external;
|
||||||
|
function pthread_getthrds_np(_para1:Ppthread_t; _para2:cint; _para3:P__pthrdsinfo; _para4:cint; _para5:pointer;
|
||||||
|
_para6:Pcint):cint;cdecl;external;
|
||||||
|
function pthread_getrusage_np(_para1:pthread_t; _para2:Prusage; _para3:cint):cint;cdecl;external;
|
||||||
|
|
||||||
|
{$endif _ALL_SOURCE or _AIX_PTHREADS_D7}
|
@ -20,31 +20,27 @@ interface
|
|||||||
{$mode objfpc}
|
{$mode objfpc}
|
||||||
{$PACKRECORDS C}
|
{$PACKRECORDS C}
|
||||||
|
|
||||||
{$ifdef BSD}
|
{$if defined(BSD)}
|
||||||
uses initc,BaseUnix, unixtype;
|
uses initc,BaseUnix, unixtype;
|
||||||
{$i pthrbsd.inc}
|
{$i pthrbsd.inc}
|
||||||
{$else}
|
{$elseif defined(linux)}
|
||||||
{$ifdef linux}
|
uses initc, ctypes, unixtype;
|
||||||
uses initc, ctypes, unixtype;
|
{$i pthrlinux.inc}
|
||||||
{$i pthrlinux.inc}
|
{$elseif defined(sunos)}
|
||||||
{$else}
|
|
||||||
|
|
||||||
{$ifdef sunos}
|
|
||||||
uses initc, ctypes, unixtype;
|
uses initc, ctypes, unixtype;
|
||||||
{$i pthrsnos.inc}
|
{$i pthrsnos.inc}
|
||||||
|
{$elseif defined(beos)}
|
||||||
|
uses initc, ctypes, baseunix, unixtype;
|
||||||
|
{$ifdef haiku}
|
||||||
|
{$i pthrhaiku.inc}
|
||||||
{$else}
|
{$else}
|
||||||
{$ifdef beos}
|
{$i pthrbeos.inc}
|
||||||
uses initc, ctypes, baseunix, unixtype;
|
|
||||||
{$ifdef haiku}
|
|
||||||
{$i pthrhaiku.inc}
|
|
||||||
{$else}
|
|
||||||
{$i pthrbeos.inc}
|
|
||||||
{$endif}
|
|
||||||
{$else}
|
|
||||||
{$error operating system not detected}
|
|
||||||
{$endif}
|
|
||||||
{$endif}
|
{$endif}
|
||||||
{$endif}
|
{$elseif defined(aix)}
|
||||||
|
uses initc, ctypes, baseunix, unixtype;
|
||||||
|
{$i pthraix.inc}
|
||||||
|
{$else}
|
||||||
|
{$error operating system not detected}
|
||||||
{$endif}
|
{$endif}
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
Loading…
Reference in New Issue
Block a user