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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
492
9522c376a9fe memcpy for param
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 #include <stdio.h>
9522c376a9fe memcpy for param
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 #include "Hello.h"
9522c376a9fe memcpy for param
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
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
9522c376a9fe memcpy for param
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5
9522c376a9fe memcpy for param
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 /* これは必須 */
9522c376a9fe memcpy for param
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 SchedDefineTask(Hello);
9522c376a9fe memcpy for param
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8
9522c376a9fe memcpy for param
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 static int
9522c376a9fe memcpy for param
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 run(SchedTask *smanager, void *rbuf, void *wbuf)
9522c376a9fe memcpy for param
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
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
9522c376a9fe memcpy for param
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13
9522c376a9fe memcpy for param
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 smanager->printf("[%d] Hello, World!!\n", task_id);
9522c376a9fe memcpy for param
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
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
9522c376a9fe memcpy for param
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 return 0;
9522c376a9fe memcpy for param
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 }