a47b3db84ea88c0d722362490c523262dde23a52
[jump.git] / dol / src / dol / visitor / cbe / template / ppu_process_wrapper_template.c
1 /**************************************************************** \r
2  *      Process Wrapper file for a PPE process\r
3  *      Creator: lschor, 2008-11-21\r
4  *      Description: Wrapper for a specific PPE process\r
5  *      \r
6  *      Revision: \r
7  *      - 2008-11-21: Created\r
8  */\r
9 \r
10 // Include the standard thread functions\r
11 #include <pthread.h>\r
12 #include <stdio.h>\r
13 #include <stddef.h>\r
14 #include <stdint.h>\r
15 #include <string.h>\r
16 #include <ctype.h>\r
17 #include <stdlib.h>\r
18 \r
19 #include "common_ppu.h"\r
20 \r
21 // Include of the process --> Because all is mapped to one file, each source file is only allow to appear once\r
22 //#include "@PROCESSNAME@.c"\r
23 \r
24 /*\r
25  * The wrapper process\r
26  */\r
27 void *@PROCESSNAME@_wrapper( void *ptr )\r
28 {\r
29         // Create the wrapper process\r
30         ProcessWrapper *wrapper = (ProcessWrapper *)ptr;\r
31 \r
32         //initialize the index array\r
33         int i;\r
34         wrapper->index = (uint32_t *)malloc(4 * sizeof(int));\r
35         for (i = 0; i < 4; i++) \r
36         {\r
37                 wrapper->index[i] = getIndex(wrapper->name, "_", i);\r
38         }\r
39 \r
40         // DOL process\r
41         DOLProcess* process;\r
42         struct _local_states *state;\r
43 \r
44         process = (DOLProcess *)malloc(sizeof(DOLProcess));\r
45         state = (struct _local_states *)malloc(sizeof(struct _local_states));\r
46 \r
47         memcpy(process, &@PROCESSNAME@, sizeof(DOLProcess));\r
48         memcpy(state, @PROCESSNAME@.local, sizeof(struct _local_states));\r
49         process->local = state;\r
50         process->wptr = wrapper;\r
51 \r
52         // Init the process\r
53         process->init(process);\r
54 \r
55         // Run the process\r
56         while (!wrapper->is_detached) \r
57         {\r
58                 process->fire(process);\r
59         }\r
60 \r
61         // Delete all malloc memory\r
62         free(state); \r
63         free(process); \r
64         free(wrapper->name); \r
65         free(wrapper); \r
66 }\r
67 \r
68 \r