summaryrefslogtreecommitdiff
path: root/fpcsrc/packages/libogcfpc/src/ogc/lwp_sema.inc
blob: 3dafa0fdeda124917f30224782160c39a3b5423a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

{$IFDEF OGC_INTERFACE}
const
  LWP_SEMA_MODEFIFO = 0;
  LWP_SEMA_MODEPRIORITY = 1;
  LWP_SEMA_SUCCESSFUL = 0;
  LWP_SEMA_UNSATISFIED_NOWAIT = 1;
  LWP_SEMA_DELETED = 2;
  LWP_SEMA_TIMEOUT = 3;
  LWP_SEMA_MAXCNT_EXCEEDED = 4;

type
  _lwpsemattr = record
    max_cnt : cuint32;
    mode : cuint32;
  end;
  lwp_semattr = _lwpsemattr;
  Plwp_semattr = ^lwp_semattr;


  _lwpsema = record
    wait_queue : lwp_thrqueue;
    attrs : lwp_semattr;
    count : cuint32;
  end;
  lwp_sema = _lwpsema;
  Plwp_sema = ^lwp_sema;


procedure __lwp_sema_initialize(sema: Plwp_sema; attrs: Plwp_semattr;
  init_count: cuint32); cdecl; external;

function __lwp_sema_surrender(sema: Plwp_sema; id: cuint32): cuint32; cdecl; external;

function __lwp_sema_seize(sema: Plwp_sema; id, wait: cuint32; timeout: cuint64)
  : cuint32; cdecl; external;

procedure __lwp_sema_flush(sema: Plwp_sema; status: cuint32); cdecl; external;


//#ifdef LIBOGC_INTERNAL
//#include <libogc/lwp_sema.inl>
//#endif
{$ENDIF}