pthraix.inc 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733
  1. {$IFDEF FPC}
  2. {$PACKRECORDS C}
  3. {$ENDIF}
  4. Type
  5. tid_t = {$ifdef cpu64}clong{$else}cint{$endif};
  6. P__pthrdscreds = ^__pthrdscreds;
  7. P__pthrdsinfo = ^__pthrdsinfo;
  8. Pclockid_t = ^clockid_t;
  9. Ppid_t = ^pid_t;
  10. Ppthread_attr_t = ^pthread_attr_t;
  11. Ppthread_barrier_t = ^pthread_barrier_t;
  12. Ppthread_barrierattr_t = ^pthread_barrierattr_t;
  13. Ppthread_cond_t = ^pthread_cond_t;
  14. Ppthread_condattr_t = ^pthread_condattr_t;
  15. Ppthread_key_t = ^pthread_key_t;
  16. Ppthread_mutex_t = ^pthread_mutex_t;
  17. Ppthread_mutexattr_t = ^pthread_mutexattr_t;
  18. Ppthread_once_t = ^pthread_once_t;
  19. Ppthread_rwlock_t = ^pthread_rwlock_t;
  20. Ppthread_rwlockattr_t = ^pthread_rwlockattr_t;
  21. Ppthread_spinlock_t = ^pthread_spinlock_t;
  22. Ppthread_t = ^pthread_t;
  23. Prusage = ^rusage;
  24. Psched_param = ^sched_param;
  25. Psigset_t = ^sigset_t;
  26. Psize_t = ^size_t;
  27. Ptid_t = ^tid_t;
  28. Ptimespec = ^timespec;
  29. pthread_barrier_t = record
  30. {$ifdef cpu64}
  31. __br_word: array[0..4] of clong;
  32. {$else}
  33. __br_word: array[0..7] of cint;
  34. {$endif}
  35. end;
  36. pthread_barrierattr_t = pointer;
  37. _once = record
  38. {$ifdef cpu64}
  39. __on_word: array[0..8] of clong;
  40. {$else}
  41. __on_word: array[0..27] of cint;
  42. {$endif}
  43. end;
  44. pthread_once_t = _once;
  45. pthread_rwlockattr_t = pointer;
  46. pthread_spinlock_t = record
  47. {$ifdef cpu64}
  48. __sp_word: array[0..2] of clong;
  49. {$else}
  50. __sp_word: array[0..5] of cint;
  51. {$endif}
  52. end;
  53. rusage = record
  54. ru_utime,
  55. ru_stime: timeval;
  56. ru_maxrss,
  57. ru_ixrss,
  58. ru_idrss,
  59. ru_isrss,
  60. ru_minflt,
  61. ru_majflt,
  62. ru_nswap,
  63. ru_inblock,
  64. ru_oublock,
  65. ru_msgsnd,
  66. ru_msgrcv,
  67. ru_nsignals,
  68. ru_nvcsw,
  69. ru_nivcsw: clong;
  70. end;
  71. sched_param = record
  72. sched_priority,
  73. sched_policy : cint;
  74. sched_reserved: array[0..5] of cint;
  75. end;
  76. plabel_t = ^label_t;
  77. label_t = record
  78. prev: plabel_t;
  79. iar: culong;
  80. stack: culong;
  81. toc: culong;
  82. cr: culong;
  83. intpri: culong;
  84. reg: array[0..18] of culong; // non-volatile regs (13..31)
  85. end;
  86. padspace_t = ^adspace_t;
  87. adspace_t = record
  88. alloc: culong;
  89. srval: array[0..15] of cuint64;
  90. end;
  91. pmstsave = ^mstsave;
  92. mstsave = record
  93. prev: pmstsave;
  94. kjmpbuf: plabel_t;
  95. stackfix: pchar;
  96. intpri: byte;
  97. backt: byte;
  98. rsvd: array[0..1] of byte;
  99. curid: pid_t;
  100. excp_type: cint;
  101. iar: culong; // instruction address register
  102. msr: culong;
  103. cr: culong;
  104. lr: culong;
  105. ctr: culong;
  106. xer: culong;
  107. mq: culong;
  108. tid: culong;
  109. fpscr: culong;
  110. fpeu: bytebool;
  111. fpinfo: byte;
  112. pad: array[0..1] of byte;
  113. except_: array[0..4] of culong;
  114. pad1: array[0..3] of byte;
  115. o_iar: culong;
  116. o_toc: culong;
  117. o_arg1: culong;
  118. excbranch: culong;
  119. fpscrx: culong;
  120. o_vaddr: culong;
  121. cachealign: array[0..6] of culong;
  122. as_: adspace_t;
  123. gpr: array[0..31] of culong;
  124. fpr: array[0..31] of double;
  125. end;
  126. pstack_t = ^stack_t;
  127. stack_t = record
  128. ss_sp: pointer;
  129. ss_size: size_t;
  130. ss_flags: cint;
  131. __pad: array[0..3] of cint;
  132. end;
  133. __vmxreg_t = record
  134. __v: array[0..3] of cint;
  135. end;
  136. __vmx_context = record
  137. __vr: array[0..31] of __vmxreg_t;
  138. __pad1: array[0..2] of cuint;
  139. __vscr: cuint;
  140. __vrsave: cuint;
  141. __pad2: array[0..1] of cuint;
  142. end;
  143. p__extctx_t = ^__extctx_t;
  144. __extctx_t = record
  145. __flags: cuint;
  146. __rsvd1: array[0..2] of cuint;
  147. __u1: record
  148. __vmx: __vmx_context
  149. end;
  150. __ukeys: cuint;
  151. __reserved: array[0..4096-sizeof(__vmx_context)-7*sizeof(cint)-1] of byte;
  152. __extctx_magic: cint;
  153. end;
  154. __pthrdscontext = record
  155. __pc_gpr : array[0..(32)-1] of culonglong;
  156. __pc_msr : culonglong;
  157. __pc_iar : culonglong;
  158. __pc_lr : culonglong;
  159. __pc_ctr : culonglong;
  160. __pc_cr : cuint;
  161. __pc_xer : cuint;
  162. __pc_fpscr : cuint;
  163. __pc_fpscrx : cuint;
  164. __pc_except : array[0..0] of culonglong;
  165. __pc_fpr : array[0..(32)-1] of double;
  166. __pc_fpeu : cchar;
  167. __pc_fpinfo : cchar;
  168. __pc_mq : cuint;
  169. __pc_excp_type : cint;
  170. end;
  171. __pthrdsinfo = record
  172. __pi_handle : culonglong;
  173. __pi_ptid : pthread_t;
  174. __pi_tid : tid_t;
  175. __pi_state : cint;
  176. __pi_suspendstate : cint;
  177. __pi_exit : pointer;
  178. __pi_ustk : culong;
  179. __pi_func : pointer;
  180. __pi_arg : pointer;
  181. __pi_siglevel : cuint;
  182. __pi_frame_count : cuint;
  183. __pi_stackaddr : ^cchar;
  184. __pi_stackend : ^cchar;
  185. __pi_stacksize : size_t;
  186. {$ifdef cpu64}
  187. __pi_pad : array[0..13] of culong;
  188. {$else}
  189. __pi_pad : array[0..12] of culong;
  190. {$endif}
  191. __pi_context : __pthrdscontext;
  192. end;
  193. __pthrdsinfox = record
  194. __pi : __pthrdsinfo;
  195. __pi_ec : __extctx_t;
  196. end;
  197. __pthrdstlsinfo = record
  198. pti_vaddr : pointer;
  199. pti_region : cint;
  200. end;
  201. PTHRDS_TLS_INFO = __pthrdstlsinfo;
  202. p__cap_t = ^__cap_t;
  203. __cap_t = record
  204. cap_effective,
  205. cap_inheritable,
  206. cap_permitted : cuint64;
  207. end;
  208. pcap_t = ^cap_t;
  209. cap_t = __cap_t;
  210. ppriv_t = ^priv_t;
  211. priv_t = record
  212. pv_priv: array[0..1] of cuint;
  213. end;
  214. pcred_ext_t = ^cred_ext_t;
  215. cred_ext_t = record
  216. crx_ruid,
  217. crx_uid,
  218. crx_suid,
  219. crx_luid,
  220. crx_acctid : uid_t;
  221. crx_gid,
  222. crx_rgid,
  223. crx_sgid : gid_t;
  224. crx_ngrps: cint;
  225. crx_groups: array[0..128-1] of gid_t;
  226. crx_reserved_1: cint;
  227. crx_caps: __cap_t;
  228. crx_mpriv,
  229. crx_ipriv,
  230. crx_epriv,
  231. crx_bpriv: priv_t;
  232. crx_npags: cint;
  233. crx_pagids: array[0..15] of byte;
  234. crx_pags: array[0..15] of cint;
  235. crx_pad: array[0..256-173-1] of cint;
  236. end;
  237. __pthrdscreds = record
  238. __pc_flags : cuint;
  239. __pc_cred : cred_ext_t;
  240. __pc_reserved : array[0..8] of cint;
  241. end;
  242. const
  243. PTHREAD_PROCESS_SHARED = 0;
  244. PTHREAD_PROCESS_PRIVATE = 1;
  245. {$ifndef _AIX_PTHREADS_D7}
  246. const
  247. PTHREAD_MUTEX_ERRORCHECK = 3;
  248. PTHREAD_MUTEX_NORMAL = 5;
  249. PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL;
  250. {$endif}
  251. const
  252. PTHREAD_MUTEX_RECURSIVE = 4;
  253. PTHREAD_PRIO_DEFAULT = 0;
  254. PTHREAD_PRIO_NONE = 1;
  255. PTHREAD_PRIO_PROTECT = 2;
  256. PTHREAD_PRIO_INHERIT = 3;
  257. PTHREAD_INHERIT_SCHED = 0;
  258. PTHREAD_EXPLICIT_SCHED = 1;
  259. PTHREAD_SCOPE_SYSTEM = 0;
  260. PTHREAD_SCOPE_PROCESS = 1;
  261. PTHREAD_CREATE_DETACHED = 1;
  262. PTHREAD_CREATE_JOINABLE = 0;
  263. const
  264. PTHREAD_CANCELED = pointer(-1);
  265. PTHREAD_CANCEL_DISABLE = 0;
  266. PTHREAD_CANCEL_ENABLE = 1;
  267. PTHREAD_CANCEL_DEFERRED = 0;
  268. PTHREAD_CANCEL_ASYNCHRONOUS = 1;
  269. PTHREAD_BARRIER_SERIAL_THREAD = 2;
  270. _PTH_FLAGS_INIT64 = 2;
  271. function pthread_attr_init(_para1:Ppthread_attr_t):cint;cdecl;external;
  272. function pthread_attr_destroy(_para1:Ppthread_attr_t):cint;cdecl;external;
  273. {$ifndef _AIX_PTHREADS_D7}
  274. function pthread_attr_setstack(_para1:Ppthread_attr_t; _para2:pointer; _para3:size_t):cint;cdecl;external;
  275. (* Const before type ignored *)
  276. function pthread_attr_getstack(_para1:Ppthread_attr_t; _para2:Ppointer; _para3:Psize_t):cint;cdecl;external;
  277. {$endif}
  278. function pthread_attr_setstacksize(_para1:Ppthread_attr_t; _para2:size_t):cint;cdecl;external;
  279. (* Const before type ignored *)
  280. function pthread_attr_getstacksize(_para1:Ppthread_attr_t; _para2:Psize_t):cint;cdecl;external;
  281. function pthread_attr_setstackaddr(_para1:Ppthread_attr_t; _para2:pointer):cint;cdecl;external;
  282. (* Const before type ignored *)
  283. function pthread_attr_getstackaddr(_para1:Ppthread_attr_t; _para2:Ppointer):cint;cdecl;external;
  284. function pthread_attr_setschedpolicy(_para1:Ppthread_attr_t; _para2:cint):cint;cdecl;external;
  285. (* Const before type ignored *)
  286. function pthread_attr_getschedpolicy(_para1:Ppthread_attr_t; _para2:Pcint):cint;cdecl;external;
  287. (* Const before type ignored *)
  288. function pthread_attr_setschedparam(_para1:Ppthread_attr_t; _para2:Psched_param):cint;cdecl;external;
  289. (* Const before type ignored *)
  290. function pthread_attr_getschedparam(_para1:Ppthread_attr_t; _para2:Psched_param):cint;cdecl;external;
  291. function pthread_attr_setinheritsched(_para1:Ppthread_attr_t; _para2:cint):cint;cdecl;external;
  292. (* Const before type ignored *)
  293. function pthread_attr_getinheritsched(_para1:Ppthread_attr_t; _para2:Pcint):cint;cdecl;external;
  294. function pthread_attr_setdetachstate(_para1:Ppthread_attr_t; _para2:cint):cint;cdecl;external;
  295. (* Const before type ignored *)
  296. function pthread_attr_getdetachstate(_para1:Ppthread_attr_t; _para2:Pcint):cint;cdecl;external;
  297. {$ifndef _AIX_PTHREADS_D7}
  298. function pthread_attr_setguardsize(_para1:Ppthread_attr_t; _para2:size_t):cint;cdecl;external;
  299. (* Const before type ignored *)
  300. function pthread_attr_getguardsize(_para1:Ppthread_attr_t; _para2:Psize_t):cint;cdecl;external;
  301. {$endif}
  302. (* Const before type ignored *)
  303. function pthread_setschedparam(_para1:pthread_t; _para2:cint; _para3:Psched_param):cint;cdecl;external;
  304. function pthread_getschedparam(_para1:pthread_t; _para2:Pcint; _para3:Psched_param):cint;cdecl;external;
  305. function pthread_setschedprio(_para1:pthread_t; _para2:cint):cint;cdecl;external;
  306. function pthread_self:pthread_t;cdecl;external;
  307. (* Const before type ignored *)
  308. type pthreadcreateroutine = function (p:pointer):pointer; cdecl;
  309. function pthread_create(_para1:Ppthread_t; _para2:Ppthread_attr_t; _para3:Pthreadcreateroutine; _para4:pointer):cint;cdecl;external;
  310. function pthread_detach(_para1:pthread_t):cint;cdecl;external;
  311. function pthread_join(_para1:pthread_t; _para2:Ppointer):cint;cdecl;external;
  312. procedure pthread_exit(_para1:pointer);cdecl;external;
  313. {$ifdef _AIX_PTHREADS_D7}
  314. procedure pthread_yield;cdecl;external;
  315. {$endif}
  316. type cleanuproutine= procedure (a:pointer);cdecl;
  317. procedure pthread_cleanup_push(_para1:cleanuproutine; _para2:pointer);cdecl;external;
  318. procedure pthread_cleanup_pop(_para1:cint);cdecl;external;
  319. function pthread_cancel(_para1:pthread_t):cint;cdecl;external;
  320. function pthread_attr_setscope(_para1:Ppthread_attr_t; _para2:cint):cint;cdecl;external;
  321. (* Const before type ignored *)
  322. function pthread_attr_getscope(_para1:Ppthread_attr_t; _para2:Pcint):cint;cdecl;external;
  323. function pthread_equal(_para1:pthread_t; _para2:pthread_t):cint;cdecl;external;
  324. function pthread_kill(_para1:pthread_t; _para2:cint):cint;cdecl;external;
  325. function pthread_checkpnt_pending:cint;cdecl;external;
  326. function pthread_getcpuclockid(_para1:pthread_t; _para2:Pclockid_t):cint;cdecl;external;
  327. function pthread_mutexattr_init(_para1:Ppthread_mutexattr_t):cint;cdecl;external;
  328. function pthread_mutexattr_destroy(_para1:Ppthread_mutexattr_t):cint;cdecl;external;
  329. function pthread_mutexattr_setprotocol(_para1:Ppthread_mutexattr_t; _para2:cint):cint;cdecl;external;
  330. (* Const before type ignored *)
  331. function pthread_mutexattr_getprotocol(_para1:Ppthread_mutexattr_t; _para2:Pcint):cint;cdecl;external;
  332. function pthread_mutexattr_setprioceiling(_para1:Ppthread_mutexattr_t; _para2:cint):cint;cdecl;external;
  333. (* Const before type ignored *)
  334. function pthread_mutexattr_getprioceiling(_para1:Ppthread_mutexattr_t; _para2:Pcint):cint;cdecl;external;
  335. (* Const before type ignored *)
  336. function pthread_mutexattr_getpshared(_para1:Ppthread_mutexattr_t; _para2:Pcint):cint;cdecl;external;
  337. {$ifdef _AIX_PTHREADS_D7}
  338. (* Const before type ignored *)
  339. function pthread_mutexattr_setpshared(_para1:Ppthread_mutexattr_t; _para2:cint):cint;cdecl;external;
  340. {$else}
  341. function pthread_mutexattr_setpshared(_para1:Ppthread_mutexattr_t; _para2:cint):cint;cdecl;external;
  342. {$endif}
  343. {$ifndef _AIX_PTHREADS_D7}
  344. (* Const before type ignored *)
  345. function pthread_mutexattr_gettype(_para1:Ppthread_mutexattr_t; _para2:Pcint):cint;cdecl;external;
  346. function pthread_mutexattr_settype(_para1:Ppthread_mutexattr_t; _para2:cint):cint;cdecl;external;
  347. {$endif}
  348. function pthread_mutex_init(_para1:Ppthread_mutex_t; _para2:Ppthread_mutexattr_t):cint;cdecl;external;
  349. function pthread_mutex_destroy(_para1:Ppthread_mutex_t):cint;cdecl;external;
  350. function pthread_mutex_lock(_para1:Ppthread_mutex_t):cint;cdecl;external;
  351. (* Const before type ignored *)
  352. function pthread_mutex_timedlock(_para1:Ppthread_mutex_t; _para2:Ptimespec):cint;cdecl;external;
  353. function pthread_mutex_trylock(_para1:Ppthread_mutex_t):cint;cdecl;external;
  354. function pthread_mutex_unlock(_para1:Ppthread_mutex_t):cint;cdecl;external;
  355. function pthread_mutex_setprioceiling(_para1:Ppthread_mutex_t; _para2:cint; _para3:Pcint):cint;cdecl;external;
  356. function pthread_mutex_getprioceiling(_para1:Ppthread_mutex_t; _para2:Pcint):cint;cdecl;external;
  357. function pthread_condattr_init(_para1:Ppthread_condattr_t):cint;cdecl;external;
  358. function pthread_condattr_destroy(_para1:Ppthread_condattr_t):cint;cdecl;external;
  359. (* Const before type ignored *)
  360. function pthread_condattr_getpshared(_para1:Ppthread_condattr_t; _para2:Pcint):cint;cdecl;external;
  361. function pthread_condattr_setpshared(_para1:Ppthread_condattr_t; _para2:cint):cint;cdecl;external;
  362. (* Const before type ignored *)
  363. function pthread_condattr_getclock(_para1:Ppthread_condattr_t; _para2:Pclockid_t):cint;cdecl;external;
  364. function pthread_condattr_setclock(_para1:Ppthread_condattr_t; _para2:clockid_t):cint;cdecl;external;
  365. (* Const before type ignored *)
  366. function pthread_cond_init(_para1:Ppthread_cond_t; _para2:Ppthread_condattr_t):cint;cdecl;external;
  367. function pthread_cond_destroy(_para1:Ppthread_cond_t):cint;cdecl;external;
  368. function pthread_cond_wait(_para1:Ppthread_cond_t; _para2:Ppthread_mutex_t):cint;cdecl;external;
  369. (* Const before type ignored *)
  370. function pthread_cond_timedwait(_para1:Ppthread_cond_t; _para2:Ppthread_mutex_t; _para3:Ptimespec):cint;cdecl;external;
  371. function pthread_cond_signal(_para1:Ppthread_cond_t):cint;cdecl;external;
  372. function pthread_cond_broadcast(_para1:Ppthread_cond_t):cint;cdecl;external;
  373. type keycreateroutine = procedure(p: pointer); cdecl;
  374. function pthread_key_create(_para1:Ppthread_key_t; _para2:keycreateroutine):cint;cdecl;external;
  375. function pthread_key_delete(_para1:pthread_key_t):cint;cdecl;external;
  376. function pthread_getspecific(_para1:pthread_key_t):pointer;cdecl;external;
  377. (* Const before type ignored *)
  378. function pthread_setspecific(_para1:pthread_key_t; _para2:pointer):cint;cdecl;external;
  379. procedure pthread_testcancel;cdecl;external;
  380. function pthread_setcancelstate(_para1:cint; _para2:Pcint):cint;cdecl;external;
  381. function pthread_setcanceltype(_para1:cint; _para2:Pcint):cint;cdecl;external;
  382. type pthreadonceroutine = procedure;cdecl;
  383. function pthread_once(_para1:Ppthread_once_t; _para2:pthreadonceroutine ):cint;cdecl;external;
  384. {$ifndef _AIX_PTHREADS_D7}
  385. function pthread_rwlock_destroy(_para1:Ppthread_rwlock_t):cint;cdecl;external;
  386. (* Const before type ignored *)
  387. function pthread_rwlock_init(_para1:Ppthread_rwlock_t; _para2:Ppthread_rwlockattr_t):cint;cdecl;external;
  388. function pthread_rwlock_rdlock(_para1:Ppthread_rwlock_t):cint;cdecl;external;
  389. function pthread_rwlock_tryrdlock(_para1:Ppthread_rwlock_t):cint;cdecl;external;
  390. function pthread_rwlock_trywrlock(_para1:Ppthread_rwlock_t):cint;cdecl;external;
  391. function pthread_rwlock_unlock(_para1:Ppthread_rwlock_t):cint;cdecl;external;
  392. function pthread_rwlock_wrlock(_para1:Ppthread_rwlock_t):cint;cdecl;external;
  393. function pthread_rwlockattr_destroy(_para1:Ppthread_rwlockattr_t):cint;cdecl;external;
  394. (* Const before type ignored *)
  395. function pthread_rwlockattr_getpshared(_para1:Ppthread_rwlockattr_t; _para2:Pcint):cint;cdecl;external;
  396. function pthread_rwlockattr_init(_para1:Ppthread_rwlockattr_t):cint;cdecl;external;
  397. function pthread_rwlockattr_setpshared(_para1:Ppthread_rwlockattr_t; _para2:cint):cint;cdecl;external;
  398. type pthreadatforkroutine = procedure;cdecl;
  399. function pthread_atfork(_para1:pthreadatforkroutine ; _para2:pthreadatforkroutine ; _para3:pthreadatforkroutine ):cint;cdecl;external;
  400. (* Const before type ignored *)
  401. function pthread_rwlock_timedwrlock(_para1:Ppthread_rwlock_t; _para2:Ptimespec):cint;cdecl;external;
  402. (* Const before type ignored *)
  403. function pthread_rwlock_timedrdlock(_para1:Ppthread_rwlock_t; _para2:Ptimespec):cint;cdecl;external;
  404. function pthread_getconcurrency:cint;cdecl;external;
  405. function pthread_setconcurrency(_para1:cint):cint;cdecl;external;
  406. {$endif}
  407. function pthread_spin_init(_para1:Ppthread_spinlock_t; _para2:cint):cint;cdecl;external;
  408. function pthread_spin_destroy(_para1:Ppthread_spinlock_t):cint;cdecl;external;
  409. function pthread_spin_lock(_para1:Ppthread_spinlock_t):cint;cdecl;external;
  410. function pthread_spin_unlock(_para1:Ppthread_spinlock_t):cint;cdecl;external;
  411. function pthread_spin_trylock(_para1:Ppthread_spinlock_t):cint;cdecl;external;
  412. function pthread_barrierattr_init(_para1:Ppthread_barrierattr_t):cint;cdecl;external;
  413. function pthread_barrierattr_destroy(_para1:Ppthread_barrierattr_t):cint;cdecl;external;
  414. (* Const before type ignored *)
  415. function pthread_barrierattr_getpshared(_para1:Ppthread_barrierattr_t; _para2:Pcint):cint;cdecl;external;
  416. function pthread_barrierattr_setpshared(_para1:Ppthread_barrierattr_t; _para2:cint):cint;cdecl;external;
  417. (* Const before type ignored *)
  418. function pthread_barrier_init(_para1:Ppthread_barrier_t; _para2:Ppthread_barrierattr_t; _para3:cunsigned):cint;cdecl;external;
  419. function pthread_barrier_destroy(_para1:Ppthread_barrier_t):cint;cdecl;external;
  420. function pthread_barrier_wait(_para1:Ppthread_barrier_t):cint;cdecl;external;
  421. {$ifdef _AIX_PTHREADS_D7}
  422. function pthread_atfork(_para1:procedure ; _para2:procedure ; _para3:procedure ):cint;cdecl;external;
  423. {$endif}
  424. var
  425. __pthread_trace : cint;cvar;external;
  426. __n_pthreads : cint;cvar;external;
  427. {$if defined(_ALL_SOURCE) or defined(_AIX_PTHREADS_D7)}
  428. const
  429. LOG_GENERAL = 1;
  430. LOG_LOCKS = 2;
  431. LOG_DATA = 4;
  432. LOG_CREATE = 8;
  433. LOG_USCHED = 16;
  434. LOG_CANCEL = 32;
  435. LOG_SIGNAL = 64;
  436. LOG_SUSPEND = 128;
  437. LOG_MRQ = 256;
  438. LOG_MRQ1 = 512;
  439. LOG_HANG = 1024;
  440. LOG_LOCKBOOST = 2048;
  441. MUTEX_FAST_NP = 2;
  442. MUTEX_RECURSIVE_NP = 1;
  443. MUTEX_NONRECURSIVE_NP = 0;
  444. DEFAULT_SCHED = SCHED_OTHER;
  445. DEFAULT_PRIO = PTHREAD_PRIO_MIN;
  446. DEFAULT_INHERIT = PTHREAD_INHERIT_SCHED;
  447. PTHREAD_SCOPE_GLOBAL = PTHREAD_SCOPE_SYSTEM;
  448. PTHREAD_SCOPE_LOCAL = PTHREAD_SCOPE_PROCESS;
  449. DEFAULT_SCOPE = PTHREAD_SCOPE_LOCAL;
  450. PTHREAD_CREATE_UNDETACHED = 0;
  451. PTHREAD_CREATE_SUSPENDED_NP = 1;
  452. PTHREAD_CREATE_UNSUSPENDED_NP = 0;
  453. {$ifdef _AIX_PTHREADS_D7}
  454. DEFAULT_DETACHSTATE = PTHREAD_CREATE_DETACHED;
  455. {$else}
  456. const
  457. DEFAULT_DETACHSTATE = PTHREAD_CREATE_JOINABLE;
  458. {$endif}
  459. (*
  460. {$ifdef __64BIT__}
  461. { was #define dname(params) para_def_expr }
  462. { argument types are unknown }
  463. { return type might be wrong }
  464. function pthread_mutex_getowner_np(mutex : longint) : longint;
  465. {$else}
  466. { was #define dname(params) para_def_expr }
  467. { argument types are unknown }
  468. { return type might be wrong }
  469. function pthread_mutex_getowner_np(mutex : longint) : longint;
  470. {$endif}
  471. *)
  472. const
  473. PAGESIZE = 4096;
  474. {$ifdef cpu64}
  475. PTHREAD_SPECIFIC_DATA = 2 * PAGESIZE; { per-thread data }
  476. APTHREAD_DATAKEYS_MAX = (PTHREAD_SPECIFIC_DATA / 16);
  477. {$else cpu64}
  478. PTHREAD_SPECIFIC_DATA = PAGESIZE; { per-thread data }
  479. APTHREAD_DATAKEYS_MAX : (PTHREAD_SPECIFIC_DATA / 8);
  480. {$endif cpu64}
  481. PTHREAD_DATAKEYS_MAX = 450;
  482. PTHREAD_STACK_MIN_NP = (PAGESIZE * 2);
  483. {$ifdef _AIX_PTHREADS_D7}
  484. PTHREAD_STACK_MIN = (PAGESIZE * 24);
  485. {$else _AIX_PTHREADS_D7}
  486. {$ifdef cpu64}
  487. PTHREAD_STACK_MIN = (2 * PAGESIZE * 2);
  488. {$else cpu64}
  489. PTHREAD_STACK_MIN = (PAGESIZE * 2);
  490. {$endif cpu64}
  491. {$endif _AIX_PTHREADS_D7}
  492. /* PTHREAD_THREADS_MAX has the same value as PTHREAD_THREADS_MAX in limits.h */
  493. {$ifdef _LARGE_THREADS}
  494. PTHREAD_THREADS_MAX = 32767;
  495. {$else _LARGE_THREADS}
  496. PTHREAD_THREADS_MAX = 512;
  497. {$endif _LARGE_THREADS}
  498. const
  499. __pi_suspended = __pi_suspendstate;
  500. __pi_returned = __pi_exit;
  501. PTHRDSINFO_STATE_NOTSUP = $00000100;
  502. PTHRDSINFO_STATE_IDLE = $00000004;
  503. PTHRDSINFO_STATE_RUN = $00000001;
  504. PTHRDSINFO_STATE_SLEEP = $00000008;
  505. PTHRDSINFO_STATE_READY = $00000002;
  506. PTHRDSINFO_STATE_TERM = $00000010;
  507. PTHRDSINFO_SUSPENDSTATE_NOTSUP = $00000100;
  508. PTHRDSINFO_SUSPENDSTATE_SUSPENDED = $00000001;
  509. PTHRDSINFO_SUSPENDSTATE_UNSUSPENDED = $00000000;
  510. const
  511. PTHRDSINFO_SIGCTX_BASE = cuint(-1);
  512. PTHRDSINFO_SIGCTX_INVALID = cuint(-1);
  513. PTHRDSINFO_QUERY_GPRS = $00000001;
  514. PTHRDSINFO_QUERY_SPRS = $00000002;
  515. PTHRDSINFO_QUERY_FPRS = $00000004;
  516. PTHRDSINFO_QUERY_REGS = $0000000F;
  517. PTHRDSINFO_QUERY_TID = $00000010;
  518. PTHRDSINFO_QUERY_ALL = $0000001F;
  519. PTHRDSINFO_QUERY_SIGCTX = $00000100;
  520. PTHRDSINFO_QUERY_EXTCTX = $00000200;
  521. PTHRDSINFO_QUERY_TLS = $00000400;
  522. PTHRDSINFO_RUSAGE_START = $00000001;
  523. PTHRDSINFO_RUSAGE_STOP = $00000002;
  524. PTHRDSINFO_RUSAGE_COLLECT = $00000004;
  525. PTHRDSCREDS_INHERIT_UIDS = $00000001;
  526. PTHRDSCREDS_INHERIT_GIDS = $00000010;
  527. PTHRDSCREDS_INHERIT_GSETS = $00000100;
  528. PTHRDSCREDS_INHERIT_CAPS = $00001000;
  529. PTHRDSCREDS_INHERIT_PRIVS = $00010000;
  530. PTHRDSCREDS_INHERIT_ALL = $00011111;
  531. {$ifdef _AIX_PTHREADS_D7}
  532. var
  533. pthread_attr_default : pthread_attr_t;cvar;external;
  534. pthread_mutexattr_default : pthread_mutexattr_t;cvar;external;
  535. pthread_condattr_default : pthread_condattr_t;cvar;external;
  536. __pthread_cleanup_handlerqueue : pthread_key_t;cvar;external;
  537. {$endif}
  538. procedure __funcblock_np;cdecl;external;
  539. {$ifndef _AIX32_THREADS}
  540. function pthread_getunique_np(_para1:Ppthread_t; _para2:Pcint):cint;cdecl;external;
  541. function pthread_mutexattr_getkind_np(_para1:Ppthread_mutexattr_t; _para2:Pcint):cint;cdecl;external;
  542. {$endif}
  543. function pthread_geteffectiveprio_np(_para1:pthread_t; _para2:Pcint):cint;cdecl;external;
  544. function pthread_mutexattr_setkind_np(_para1:Ppthread_mutexattr_t; _para2:cint):cint;cdecl;external;
  545. function pthread_set_mutexattr_default_np(_para1:cint):cint;cdecl;external;
  546. function pthread_signal_to_cancel_np(_para1:Psigset_t; _para2:Ppthread_t):cint;cdecl;external;
  547. function pthread_delay_np(_para1:Ptimespec):cint;cdecl;external;
  548. function pthread_get_expiration_np(_para1:Ptimespec; _para2:Ptimespec):cint;cdecl;external;
  549. procedure pthread_lock_global_np;cdecl;external;
  550. procedure pthread_unlock_global_np;cdecl;external;
  551. function pthread_atfork_np(_para1:pointer; _para2:procedure (_para1:pointer); _para3:procedure (_para1:pointer); _para4:procedure (_para1:pointer)):cint;cdecl;external;
  552. const
  553. PTHREAD_ATFORK_ARGUMENT = $00000001;
  554. PTHREAD_ATFORK_ALL = $00000002;
  555. function pthread_atfork_unregister_np(_para1:pointer; _para2:procedure ; _para3:procedure ; _para4:procedure ; _para5:cint):cint;cdecl;external;
  556. function pthread_test_exit_np(_para1:Pcint):cint;cdecl;external;
  557. procedure pthread_clear_exit_np(_para1:pthread_t);cdecl;external;
  558. function pthread_setcancelstate_np(_para1:cint; _para2:Pcint):cint;cdecl;external;
  559. function pthread_join_np(_para1:pthread_t; _para2:Ppointer):cint;cdecl;external;
  560. procedure pthread_cleanup_push_np(_para1:procedure (_para1:pointer); _para2:pointer; _para3:Ppthread_t);cdecl;external;
  561. procedure pthread_cleanup_pop_np(_para1:cint; _para2:pthread_t);cdecl;external;
  562. function pthread_cleanup_information_np(_para1:pthread_t; _para2:pointer; _para3:Ptid_t; _para4:pointer; _para5:Ppthread_t):cint;cdecl;external;
  563. (* Const before type ignored *)
  564. function pthread_create_withcred_np(_para1:Ppthread_t; _para2:Ppthread_attr_t; _para3:Pprocedure (_para1:pointer); _para4:pointer; _para5:P__pthrdscreds):cint;cdecl;external;
  565. {$ifdef _AIX_PTHREADS_D7}
  566. function forkall(_para1:Ppid_t):cint;cdecl;external;
  567. {$endif}
  568. (* Const before type ignored *)
  569. function sigthreadmask(_para1:cint; _para2:Psigset_t; _para3:Psigset_t):cint;cdecl;external;
  570. function pthread_attr_setsuspendstate_np(_para1:Ppthread_attr_t; _para2:cint):cint;cdecl;external;
  571. (* Const before type ignored *)
  572. function pthread_attr_getsuspendstate_np(_para1:Ppthread_attr_t; _para2:Pcint):cint;cdecl;external;
  573. function pthread_suspend_np(_para1:pthread_t):cint;cdecl;external;
  574. function pthread_suspend_others_np:cint;cdecl;external;
  575. function pthread_suspend(_para1:pthread_t):cint;cdecl;external;
  576. function pthread_continue_np(_para1:pthread_t):cint;cdecl;external;
  577. function pthread_unsuspend_np(_para1:pthread_t):cint;cdecl;external;
  578. function pthread_continue_others_np:cint;cdecl;external;
  579. function pthread_unsuspend_others_np:cint;cdecl;external;
  580. function pthread_continue(_para1:pthread_t):cint;cdecl;external;
  581. function pthread_attr_setstacksize_np(_para1:Ppthread_attr_t; _para2:size_t):cint;cdecl;external;
  582. function pthread_attr_setukeyset_np(_para1:Ppthread_attr_t; _para2:Pculonglong):cint;cdecl;external;
  583. (* Const before type ignored *)
  584. function pthread_attr_getukeyset_np(_para1:Ppthread_attr_t; _para2:Pculonglong):cint;cdecl;external;
  585. function pthread_getthrds_np(_para1:Ppthread_t; _para2:cint; _para3:P__pthrdsinfo; _para4:cint; _para5:pointer;
  586. _para6:Pcint):cint;cdecl;external;
  587. function pthread_getrusage_np(_para1:pthread_t; _para2:Prusage; _para3:cint):cint;cdecl;external;
  588. {$endif _ALL_SOURCE or _AIX_PTHREADS_D7}