summaryrefslogtreecommitdiff
path: root/fpcsrc/packages/libogcfpc/src/ogc/arqueue.inc
blob: a9b337b97b28010f4060db98db04891c5b9bd835 (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
46
47
48
49
50
51
52
53
54
55
56
57

{$IFDEF OGC_INTERFACE}
const
  ARQ_MRAMTOARAM = AR_MRAMTOARAM;
  ARQ_ARAMTOMRAM = AR_ARAMTOMRAM;
  ARQ_DEF_CHUNK_SIZE = 4096;
  ARQ_PRIO_LO = 0;
  ARQ_PRIO_HI = 1;

  ARQ_TASK_READY = 0;
  ARQ_TASK_RUNNING = 1;
  ARQ_TASK_FINISHED = 2;


type
  ARQCallback = procedure(par0: pointer); cdecl;


type
  _arq_request = record
    node : lwp_node;
    owner : cuint32;
    dir : cuint32;
    prio : cuint32;
    state : cuint32;
    aram_addr : cuint32;
    mram_addr : cuint32;
    len : cuint32;
    callback : ARQCallback;
  end;
  ARQRequest = _arq_request;
  PARQRequest = ^ARQRequest;


procedure ARQ_Init; cdecl; external;

procedure ARQ_Reset; cdecl; external;


procedure ARQ_PostRequest(req: PARQRequest;
  owner, dir, prio, aram_addr, mram_addr, len: cuint32); cdecl; external;

procedure ARQ_PostRequestAsync(req: PARQRequest;
  owner, dir, prio, aram_addr, mram_addr, len: cuint32; cb: ARQCallback); cdecl; external;

procedure ARQ_RemoveRequest(req: PARQRequest); cdecl; external;

procedure ARQ_SetChunkSize(size: cuint32); cdecl; external;

function ARQ_GetChunkSize: cuint32; cdecl; external;

procedure ARQ_FlushQueue; cdecl; external;

function ARQ_RemoveOwnerRequest(owner: cuint32): cuint32; cdecl; external;


{$ENDIF OGC_INTERFACE}