X-Git-Url: http://sraa.de/git/?a=blobdiff_plain;f=dol%2Fsrc%2Fdol%2Fvisitor%2Fcbe%2Ftemplate%2Fppu_process_wrapper_template.c;fp=dol%2Fsrc%2Fdol%2Fvisitor%2Fcbe%2Ftemplate%2Fppu_process_wrapper_template.c;h=a47b3db84ea88c0d722362490c523262dde23a52;hb=8c411cf24ed0eb889191aaeafd8fa1e69081df42;hp=0000000000000000000000000000000000000000;hpb=dea7a4fb1ed110d3ce6e6d9255103d724bd66c0e;p=jump.git 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 index 0000000..a47b3db --- /dev/null +++ b/dol/src/dol/visitor/cbe/template/ppu_process_wrapper_template.c @@ -0,0 +1,68 @@ +/**************************************************************** + * Process Wrapper file for a PPE process + * Creator: lschor, 2008-11-21 + * Description: Wrapper for a specific PPE process + * + * Revision: + * - 2008-11-21: Created + */ + +// Include the standard thread functions +#include +#include +#include +#include +#include +#include +#include + +#include "common_ppu.h" + +// Include of the process --> Because all is mapped to one file, each source file is only allow to appear once +//#include "@PROCESSNAME@.c" + +/* + * The wrapper process + */ +void *@PROCESSNAME@_wrapper( void *ptr ) +{ + // Create the wrapper process + ProcessWrapper *wrapper = (ProcessWrapper *)ptr; + + //initialize the index array + int i; + wrapper->index = (uint32_t *)malloc(4 * sizeof(int)); + for (i = 0; i < 4; i++) + { + wrapper->index[i] = getIndex(wrapper->name, "_", i); + } + + // DOL process + DOLProcess* process; + struct _local_states *state; + + process = (DOLProcess *)malloc(sizeof(DOLProcess)); + state = (struct _local_states *)malloc(sizeof(struct _local_states)); + + memcpy(process, &@PROCESSNAME@, sizeof(DOLProcess)); + memcpy(state, @PROCESSNAME@.local, sizeof(struct _local_states)); + process->local = state; + process->wptr = wrapper; + + // Init the process + process->init(process); + + // Run the process + while (!wrapper->is_detached) + { + process->fire(process); + } + + // Delete all malloc memory + free(state); + free(process); + free(wrapper->name); + free(wrapper); +} + +