dol: initial dol commit
[jump.git] / dol / src / dol / visitor / protothread / lib / dolSupport.cpp
1 #include "dolSupport.h"\r
2 \r
3 /**\r
4  *\r
5  */\r
6 unsigned read(void* fifo, void* buf, unsigned len, DOLProcess* p) {\r
7     return ((Fifo*)fifo)->read(buf, len);\r
8 }\r
9 \r
10 /**\r
11  *\r
12  */\r
13 unsigned write(void* fifo, void* buf, unsigned len, DOLProcess* p) {\r
14     return ((Fifo*)fifo)->write(buf, len);\r
15 }\r
16 \r
17 /**\r
18  *\r
19  */\r
20 unsigned reserve(void* fifo, void** destination, unsigned len, DOLProcess* p) {\r
21     return ((WindowedFifo*)fifo)->reserve(destination, len);\r
22 }\r
23 \r
24 /**\r
25  *\r
26  */\r
27 void release(void* fifo, DOLProcess* p) {\r
28     ((WindowedFifo*)fifo)->release();\r
29 }\r
30 \r
31 /**\r
32  *\r
33  */\r
34 unsigned capture(void* fifo, void** destination, unsigned len, DOLProcess* p) {\r
35     return ((WindowedFifo*)fifo)->capture(destination, len);\r
36 }\r
37 \r
38 /**\r
39  *\r
40  */\r
41 void consume(void* fifo, DOLProcess* p) {\r
42     ((WindowedFifo*)fifo)->consume();\r
43 }\r
44 \r
45 /**\r
46  *\r
47  */\r
48 void DOL_detach(DOLProcess* p) {\r
49     static_cast<ProcessWrapper *>((static_cast<process_data *>(p->wptr))->wrapper)->detach();\r
50 }\r
51 \r
52 \r
53 void createPort(void** port,\r
54                 void* base,\r
55                 int number_of_indices,\r
56                 int index0, int range0) {\r
57     *port = (void**)((void**)base)[index0];\r
58 }\r
59 \r
60 void createPort(void** port,\r
61                 void* base,\r
62                 int number_of_indices,\r
63                 int index0, int range0,\r
64                 int index1, int range1) {\r
65     *port = (void**)((void**)base)[index0 * range1 + index1];\r
66 }\r
67 \r
68 void createPort(void** port,\r
69                 void* base,\r
70                 int number_of_indices,\r
71                 int index0, int range0,\r
72                 int index1, int range1,\r
73                 int index2, int range2) {\r
74     *port = (void**)((void**)base)[index0 * range1 * range2\r
75                        + index1 * range2 + index2];\r
76 }\r
77 \r
78 void createPort(void** port,\r
79                 void* base,\r
80                 int number_of_indices,\r
81                 int index0, int range0,\r
82                 int index1, int range1,\r
83                 int index2, int range2,\r
84                 int index3, int range3) {\r
85     *port = (void**)((void**)base)[index0 * range1 * range2 * range3\r
86                        + index1 * range2 * range3\r
87                        + index2 * range3\r
88                        + index3];\r
89 }\r