dol: initial dol commit
[jump.git] / dol / src / dol / visitor / protothread / lib / dolSupport.cpp
diff --git a/dol/src/dol/visitor/protothread/lib/dolSupport.cpp b/dol/src/dol/visitor/protothread/lib/dolSupport.cpp
new file mode 100644 (file)
index 0000000..0c73f6d
--- /dev/null
@@ -0,0 +1,89 @@
+#include "dolSupport.h"\r
+\r
+/**\r
+ *\r
+ */\r
+unsigned read(void* fifo, void* buf, unsigned len, DOLProcess* p) {\r
+    return ((Fifo*)fifo)->read(buf, len);\r
+}\r
+\r
+/**\r
+ *\r
+ */\r
+unsigned write(void* fifo, void* buf, unsigned len, DOLProcess* p) {\r
+    return ((Fifo*)fifo)->write(buf, len);\r
+}\r
+\r
+/**\r
+ *\r
+ */\r
+unsigned reserve(void* fifo, void** destination, unsigned len, DOLProcess* p) {\r
+    return ((WindowedFifo*)fifo)->reserve(destination, len);\r
+}\r
+\r
+/**\r
+ *\r
+ */\r
+void release(void* fifo, DOLProcess* p) {\r
+    ((WindowedFifo*)fifo)->release();\r
+}\r
+\r
+/**\r
+ *\r
+ */\r
+unsigned capture(void* fifo, void** destination, unsigned len, DOLProcess* p) {\r
+    return ((WindowedFifo*)fifo)->capture(destination, len);\r
+}\r
+\r
+/**\r
+ *\r
+ */\r
+void consume(void* fifo, DOLProcess* p) {\r
+    ((WindowedFifo*)fifo)->consume();\r
+}\r
+\r
+/**\r
+ *\r
+ */\r
+void DOL_detach(DOLProcess* p) {\r
+    static_cast<ProcessWrapper *>((static_cast<process_data *>(p->wptr))->wrapper)->detach();\r
+}\r
+\r
+\r
+void createPort(void** port,\r
+                void* base,\r
+                int number_of_indices,\r
+                int index0, int range0) {\r
+    *port = (void**)((void**)base)[index0];\r
+}\r
+\r
+void createPort(void** port,\r
+                void* base,\r
+                int number_of_indices,\r
+                int index0, int range0,\r
+                int index1, int range1) {\r
+    *port = (void**)((void**)base)[index0 * range1 + index1];\r
+}\r
+\r
+void createPort(void** port,\r
+                void* base,\r
+                int number_of_indices,\r
+                int index0, int range0,\r
+                int index1, int range1,\r
+                int index2, int range2) {\r
+    *port = (void**)((void**)base)[index0 * range1 * range2\r
+                       + index1 * range2 + index2];\r
+}\r
+\r
+void createPort(void** port,\r
+                void* base,\r
+                int number_of_indices,\r
+                int index0, int range0,\r
+                int index1, int range1,\r
+                int index2, int range2,\r
+                int index3, int range3) {\r
+    *port = (void**)((void**)base)[index0 * range1 * range2 * range3\r
+                       + index1 * range2 * range3\r
+                       + index2 * range3\r
+                       + index3];\r
+}\r