dol: initial dol commit
[jump.git] / dol / src / dol / visitor / cbe / template / ppu_process_wrapper_template.c
diff --git a/dol/src/dol/visitor/cbe/template/ppu_process_wrapper_template.c b/dol/src/dol/visitor/cbe/template/ppu_process_wrapper_template.c
new file mode 100644 (file)
index 0000000..a47b3db
--- /dev/null
@@ -0,0 +1,68 @@
+/**************************************************************** \r
+ *     Process Wrapper file for a PPE process\r
+ *     Creator: lschor, 2008-11-21\r
+ *     Description: Wrapper for a specific PPE process\r
+ *     \r
+ *     Revision: \r
+ *     - 2008-11-21: Created\r
+ */\r
+\r
+// Include the standard thread functions\r
+#include <pthread.h>\r
+#include <stdio.h>\r
+#include <stddef.h>\r
+#include <stdint.h>\r
+#include <string.h>\r
+#include <ctype.h>\r
+#include <stdlib.h>\r
+\r
+#include "common_ppu.h"\r
+\r
+// Include of the process --> Because all is mapped to one file, each source file is only allow to appear once\r
+//#include "@PROCESSNAME@.c"\r
+\r
+/*\r
+ * The wrapper process\r
+ */\r
+void *@PROCESSNAME@_wrapper( void *ptr )\r
+{\r
+       // Create the wrapper process\r
+       ProcessWrapper *wrapper = (ProcessWrapper *)ptr;\r
+\r
+       //initialize the index array\r
+       int i;\r
+       wrapper->index = (uint32_t *)malloc(4 * sizeof(int));\r
+       for (i = 0; i < 4; i++) \r
+       {\r
+               wrapper->index[i] = getIndex(wrapper->name, "_", i);\r
+       }\r
+\r
+       // DOL process\r
+       DOLProcess* process;\r
+       struct _local_states *state;\r
+\r
+       process = (DOLProcess *)malloc(sizeof(DOLProcess));\r
+       state = (struct _local_states *)malloc(sizeof(struct _local_states));\r
+\r
+       memcpy(process, &@PROCESSNAME@, sizeof(DOLProcess));\r
+       memcpy(state, @PROCESSNAME@.local, sizeof(struct _local_states));\r
+       process->local = state;\r
+       process->wptr = wrapper;\r
+\r
+       // Init the process\r
+       process->init(process);\r
+\r
+       // Run the process\r
+       while (!wrapper->is_detached) \r
+       {\r
+               process->fire(process);\r
+       }\r
+\r
+       // Delete all malloc memory\r
+       free(state); \r
+       free(process); \r
+       free(wrapper->name); \r
+       free(wrapper); \r
+}\r
+\r
+\r