annotate TaskManager/Cell/spe/CellScheduler.cc @ 1001:61f33945f85d

error fix.
author root@henri.cr.ie.u-ryukyu.ac.jp
date Thu, 21 Oct 2010 21:39:47 +0900
parents 451ddde9a16d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
1 #include <stdio.h>
59
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
2 #include "CellScheduler.h"
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
3 #include "CellDmaManager.h"
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
4 #include "error.h"
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
5
321
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
6 // ユーザプログラムで定義
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
7 // なんだけど、それは微妙じゃね?
430
fb62b7acc92b code loading (on going...)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 388
diff changeset
8 extern void task_init(Scheduler *scheduler);
1001
61f33945f85d error fix.
root@henri.cr.ie.u-ryukyu.ac.jp
parents: 999
diff changeset
9 extern unsigned long long alloc_flag;
88
504899860e66 *** empty log message ***
gongo
parents: 70
diff changeset
10
59
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
11 void
388
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
12 CellScheduler::init_impl()
59
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
13 {
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
14 connector = new CellDmaManager;
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
15
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
16 mainMemNum = 0;
88
504899860e66 *** empty log message ***
gongo
parents: 70
diff changeset
17
430
fb62b7acc92b code loading (on going...)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 388
diff changeset
18 task_init(this); // PPE側ではUser 側で既に呼んでいる...
321
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
19 // SPE側はここで呼び出す必要がある
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
20 // Fifo ではSPEは無いので呼び出されない
59
16f9f6251f49 *** empty log message ***
gongo
parents:
diff changeset
21 }
98
f320d1039d51 *** empty log message ***
akira
parents: 94
diff changeset
22
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
23 /**
321
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
24 * メインメモリ領域を allocate する。
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
25 * allocate した領域のアドレスは mainMem_get で取得するが、
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
26 * mainMem_get を実行できるのは
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
27 * Renew Task (タスク内で create した Task) から。
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
28 * alloc してすぐ get しても、アドレス何も入ってないです。
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
29 */
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
30 void
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
31 CellScheduler::mainMem_alloc(int id, int size)
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
32 {
629
8843edf37c0e Cell 64 bit tried, but not yet worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 626
diff changeset
33 mainMemList[id] = (memaddr)NULL;
999
451ddde9a16d Measurement of mainMem_alloc at waiting time. not done.
tkaito
parents: 871
diff changeset
34
451ddde9a16d Measurement of mainMem_alloc at waiting time. not done.
tkaito
parents: 871
diff changeset
35 // flag on. (unsigned long long)
451ddde9a16d Measurement of mainMem_alloc at waiting time. not done.
tkaito
parents: 871
diff changeset
36 alloc_flag = 1;
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
37
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
38 mainMemNum++;
626
ab866bc8a624 64bit mode compatibility on Cell
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 496
diff changeset
39 mail_write((memaddr)MY_SPE_COMMAND_MALLOC);
ab866bc8a624 64bit mode compatibility on Cell
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 496
diff changeset
40 mail_write((memaddr)id);
ab866bc8a624 64bit mode compatibility on Cell
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 496
diff changeset
41 mail_write((memaddr)size);
98
f320d1039d51 *** empty log message ***
akira
parents: 94
diff changeset
42 }
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
43
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
44 void
388
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
45 CellScheduler::mainMem_wait()
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
46 {
626
ab866bc8a624 64bit mode compatibility on Cell
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 496
diff changeset
47 unsigned long id;
ab866bc8a624 64bit mode compatibility on Cell
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 496
diff changeset
48 memaddr addr;
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
49
141
fc314f28b66e TileList を作ろうとしたがに動かない。
gongo@charles.cr.ie.u-ryukyu.ac.jp
parents: 109
diff changeset
50 while (mainMemNum > 0) {
626
ab866bc8a624 64bit mode compatibility on Cell
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 496
diff changeset
51 id = (unsigned long)mail_read();
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
52 addr = mail_read();
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
53
629
8843edf37c0e Cell 64 bit tried, but not yet worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 626
diff changeset
54 mainMemList[id] = (memaddr)addr;
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
55 mainMemNum--;
141
fc314f28b66e TileList を作ろうとしたがに動かない。
gongo@charles.cr.ie.u-ryukyu.ac.jp
parents: 109
diff changeset
56 }
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 98
diff changeset
57 }
388
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
58
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
59 /*
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
60 dma channel を返す
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
61 本来、SPU用に閉じているはず。ユーザが明示的に使うことはない。
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
62 良くわからないが、ある分だけcounterで廻せば良い。しかし、
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
63 そのためには、全部で、get_tag()する必要があるはず。
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
64
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
65 */
451
95dbf6bd8cd9 tag fixed... test_nogl move
kazz@henri.cr.ie.u-ryukyu.ac.jp
parents: 442
diff changeset
66
871
ab3cd3aeacff fix get segment dma tag zero problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 666
diff changeset
67 // #define TEX_LOAD1 0
491
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 451
diff changeset
68 // #define TEX_LOAD2 1
388
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
69
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
70 uint32
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
71 CellScheduler::get_tag()
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
72 {
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
73 static int count = 0;
871
ab3cd3aeacff fix get segment dma tag zero problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 666
diff changeset
74 return (count++ % 8)+16;
388
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
75 }
451
95dbf6bd8cd9 tag fixed... test_nogl move
kazz@henri.cr.ie.u-ryukyu.ac.jp
parents: 442
diff changeset
76
388
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
77
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
78
82cb9368e3ff MemHash (OS X version)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 356
diff changeset
79 /* end */