Mercurial > hg > Members > kono > Cerium
annotate example/get_segment/ppe/Hello1.cc @ 466:4fa8760e18c2
prohibit global variable in Task....
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 01 Oct 2009 17:33:58 +0900 |
parents | 01b321c86747 |
children | 60aa3f241b10 |
rev | line source |
---|---|
440
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
1 #include "Hello1.h" |
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
2 #include "Func.h" |
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
3 |
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
4 /* これは必須 */ |
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
5 SchedDefineTask(Hello1); |
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
6 |
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
7 #define PP_STORE 3 |
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
8 #define SIZE (4096*sizeof(int)) |
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
9 |
464
01b321c86747
task run is mere C function now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
440
diff
changeset
|
10 static int |
01b321c86747
task run is mere C function now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
440
diff
changeset
|
11 run(SchedTask *smanager, void *rbuf, void *wbuf) |
440
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
12 { |
464
01b321c86747
task run is mere C function now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
440
diff
changeset
|
13 int task_id = smanager->get_param(0); |
440
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
14 int *ptr = 0; |
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
15 #if 1 |
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
16 ptr = (int*)smanager->allocate(SIZE); |
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
17 |
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
18 smanager->mainMem_alloc(0, SIZE); |
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
19 |
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
20 int i; |
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
21 for(i=0;i<4096;i++) { |
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
22 ptr[i] = i; |
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
23 } |
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
24 #endif |
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
25 |
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
26 void *next = 0; |
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
27 #if 1 |
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
28 smanager->mainMem_wait(); |
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
29 next = (void *)smanager->mainMem_get(0); |
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
30 |
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
31 smanager->dma_wait(PP_STORE); |
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
32 smanager->dma_store(ptr, (uint32)next, |
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
33 SIZE, PP_STORE); |
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
34 #endif |
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
35 |
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
36 |
466
4fa8760e18c2
prohibit global variable in Task....
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
464
diff
changeset
|
37 smanager->fprintf(smanager->stderr_,"Hello1 sizeof(int) = [%d] sizeof(void*)=[%d]\n", (int)sizeof(int),(int)sizeof(void*)); |
4fa8760e18c2
prohibit global variable in Task....
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
464
diff
changeset
|
38 smanager->fprintf(smanager->stderr_,"[%d] Main Mem %0x len %d\n", task_id, (unsigned int)next,(int)SIZE); |
440
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
39 |
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
40 return 0; |
0f3605d1ee73
fix get_segment exaple PPE task
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
41 } |