semaphoreh.inc 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. type
  2. Psem_t = ^sem_t;
  3. sem_t = record
  4. __sem_lock : _pthread_fastlock;
  5. __sem_value : longint;
  6. __sem_waiting : _pthread_descr;
  7. end;
  8. Const
  9. SEM_FAILED = Psem_t(nil);
  10. SEM_VALUE_MAX = ((not 0) shr 1);
  11. function sem_init(__sem:Psem_t; __pshared:longint; __value:dword):longint;cdecl;external threadslib name 'sem_init';
  12. function sem_destroy(__sem:Psem_t):longint;cdecl;external threadslib name 'sem_destroy';
  13. function sem_open(__name:Pchar; __oflag:longint; args:array of const):Psem_t;cdecl;external threadslib name 'sem_open';
  14. function sem_open(__name:Pchar; __oflag:longint):Psem_t;cdecl;varargs;external threadslib name 'sem_open';
  15. function sem_close(__sem:Psem_t):longint;cdecl;external threadslib name 'sem_close';
  16. function sem_unlink(__name:Pchar):longint;cdecl;external threadslib name 'sem_unlink';
  17. function sem_wait(__sem:Psem_t):longint;cdecl;external threadslib name 'sem_wait';
  18. function sem_timedwait(__sem:Psem_t; __abstime:Ptimespec):longint;cdecl;external threadslib name 'sem_timedwait';
  19. function sem_trywait(__sem:Psem_t):longint;cdecl;external threadslib name 'sem_trywait';
  20. function sem_post(__sem:Psem_t):longint;cdecl;external threadslib name 'sem_post';
  21. function sem_getvalue(__sem:Psem_t; __sval:Plongint):longint;cdecl;external threadslib name 'sem_getvalue';
  22. { ---------------------------------------------------------------------
  23. Borland compatibility types
  24. ---------------------------------------------------------------------}
  25. Type
  26. TSemaphore = sem_t;
  27. PSemaphore = ^TSemaphore;
  28. __sem_lock_t = record { Not in header file - anonymous , should equal _pthread_fastlock}
  29. status: Longint;
  30. spinlock: Integer;
  31. end;
  32. TPCharArray = System.TPCharArray;
  33. PPCharArray = System.PPCharArray;
  34. function sem_init(var __sem: sem_t; __pshared:longint; __value:dword):longint;cdecl;external threadslib name 'sem_init';
  35. function sem_destroy(var __sem: sem_t):longint;cdecl;external threadslib name 'sem_destroy';
  36. function sem_close(var __sem: sem_t):longint;cdecl;external threadslib name 'sem_close';
  37. function sem_wait(var __sem: sem_t):longint;cdecl;external threadslib name 'sem_wait';
  38. function sem_timedwait(var __sem: sem_t; __abstime:Ptimespec):longint;cdecl;external threadslib name 'sem_timedwait';
  39. function sem_trywait(var __sem: sem_t):longint;cdecl;external threadslib name 'sem_trywait';
  40. function sem_post(var __sem: sem_t):longint;cdecl;external threadslib name 'sem_post';
  41. function sem_getvalue(var __sem: sem_t; __sval:Plongint):longint;cdecl;external threadslib name 'sem_getvalue';