Mercurial > hg > Members > kono > Cerium
annotate example/task_queue/spe/Hello.cc @ 639:70c5c2d2eb24
fix
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 19 Nov 2009 18:45:24 +0900 |
parents | ab866bc8a624 |
children |
rev | line source |
---|---|
492 | 1 #include <stdio.h> |
2 #include "Hello.h" | |
3 #include "Func.h" | |
496
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
4 #include "main.h" |
492 | 5 |
6 /* これは必須 */ | |
7 SchedDefineTask(Hello); | |
8 | |
9 static int | |
10 run(SchedTask *smanager, void *rbuf, void *wbuf) | |
11 { | |
626
ab866bc8a624
64bit mode compatibility on Cell
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
502
diff
changeset
|
12 int task_id = (long)smanager->get_param(0); |
492 | 13 |
14 smanager->printf("[%d] Hello, World!!\n", task_id); | |
15 | |
502
36b323130b1b
Renew Task addInData (not yet worked).
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
496
diff
changeset
|
16 #if 0 |
36b323130b1b
Renew Task addInData (not yet worked).
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
496
diff
changeset
|
17 we don't have TaskQueue in spu |
496
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
18 QueuePtr q = (QueuePtr )smanager->global_get(0); |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
19 |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
20 for(int i=0;i<100;i++) { |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
21 TaskQueueInfo *i0 = q->q[i%MAX_QUEUE]; |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
22 TaskQueueInfo *i1 = q->q[(i+1)%MAX_QUEUE]; |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
23 TaskQueue *q0; |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
24 TaskQueue *q1; |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
25 |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
26 // switch(smanager->get_random() % 4) { |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
27 switch(q->j++ % 4 ) { |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
28 case 0: |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
29 q0 = i0->create(0); |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
30 q1 = i1->create(0); |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
31 i1->addLast(q0); |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
32 i0->addLast(q1); |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
33 break; |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
34 case 1: |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
35 if (TaskQueue *p = i0->poll()) { |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
36 i1->addLast(p); |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
37 } |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
38 break; |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
39 case 2: |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
40 if (TaskQueue *p = i1->poll()) { |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
41 i0->addLast(p); |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
42 } |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
43 break; |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
44 case 3: |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
45 if (TaskQueue *p = i0->poll()) { |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
46 i0->free_(p); |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
47 } |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
48 if (TaskQueue *p = i1->poll()) { |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
49 i1->free_(p); |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
50 } |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
51 break; |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
52 } |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
53 } |
502
36b323130b1b
Renew Task addInData (not yet worked).
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
496
diff
changeset
|
54 #endif |
496
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
55 |
58240647b23b
PS3 double linked TaskQueue worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
492
diff
changeset
|
56 |
492 | 57 return 0; |
58 } |