minidol: initial commit
[jump.git] / minidol / lib / Gen_Wrapper.c
1 /* Gen_Wrapper
2  * ===================================================================== */
3 #include <e_lib.h>
4 #include <string.h>
5 #include "../esrc/Gen.h"
6 #include "../shared.h"
7 #include "ports.h"
8 #include "index.h"
9
10 shm_t shm SECTION(".shared_dram");
11
12 /* DOL structures
13  * ===================================================================== */
14 struct _DOL_wptr Gen_wptr = {
15         1,              /* active   */
16         {0,0,0,0}       /* instance */
17 };
18
19 Gen_State Gen_local;
20 DOLProcess Gen_process = {
21         &Gen_local,
22         &Gen_init,
23         &Gen_fire,
24         &Gen_wptr,
25 };
26
27 /* Port Read/Write Functions
28  * ===================================================================== */
29 int size_0 (void)               { return(size_shm (&shm.buf0)); }
30 int level_0(void)               { return(level_shm(&shm.buf0)); }
31 int read_0 (void *buf, int len) { return(read_shm (&shm.buf0, buf, len)); }
32 int write_0(void *buf, int len) { return(write_shm(&shm.buf0, buf, len)); }
33
34 /* Port Mapping
35  * ===================================================================== */
36 #define NUM_PORTS 1
37 port_t ports[NUM_PORTS] = {
38         { "0", size_0, level_0, NULL, write_0},
39 };
40
41 port_t *get_port(void *port)
42 {
43         for(int i = 0; i < NUM_PORTS; i++) {
44                 if(!strncmp(ports[i].name, port, PORTNAME_MAXLEN)) {
45                         /* found the port */
46                         return(&ports[i]);
47                 }
48         }
49         return(NULL);
50 }
51
52 /* eCore entry point
53  * ===================================================================== */
54 int main(void)
55 {
56         int index = core_id2lin(e_get_coreid());
57         int state = 0;
58
59         Gen_process.init((struct _DOLProcess_struct*)&Gen_process);
60         while(Gen_process.wptr->active) {
61                 shm.states[index] = ++state;
62                 Gen_process.fire((struct _DOLProcess_struct*)&Gen_process);
63         }
64
65         shm.states[index] = -1;
66         while(1);
67 }
68