Mercurial > hg > Members > kono > Cerium
comparison example/README @ 109:5c194c71eca8
Cerium cvs version
author | gongo@gendarme.local |
---|---|
date | Wed, 12 Nov 2008 17:39:33 +0900 |
parents | |
children | 44e3bf914155 |
comparison
equal
deleted
inserted
replaced
108:6f3b3dd3c095 | 109:5c194c71eca8 |
---|---|
1 /** | |
2 * 現在開発中なので、仕様やここに書いてる事も | |
3 * すごい頻度で変わる可能性があります。 | |
4 * なので、定期的に cvs update をしたり | |
5 * Game_project/Cerium/TaskManager/Changelog を見たり | |
6 * http://www.cr.ie.u-ryukyu.ac.jp/~game/pukiwiki/ を見てください。 | |
7 */ | |
8 | |
9 Cerium の例題っぽいのを置いてあります。 | |
10 ここにある書き方を参考に他にいろいろ作ってみてください。 | |
11 | |
12 例題の概要は、各ディレクトリの README に書いてあります。 | |
13 使用方法や実行例も同じです。 | |
14 | |
15 ----------------- | |
16 最近の更新 | |
17 ----------------- | |
18 | |
19 2008/11/01 | |
20 | |
21 main 関数はライブラリに閉じました。 | |
22 というわけで、ユーザ側の main() は | |
23 | |
24 int cerium_main(int argc, char *argv[]); | |
25 | |
26 となります。引数は通常の main と同じものが渡されます | |
27 cerium_main で ( < 0 ) を返す (例えば -1) と | |
28 プログラムが終了するようにしています。 | |
29 cerium_main を正常に抜けると、ライブラリ側で | |
30 main loop が回り、全タスク終了と共にプログラムが終了します。 | |
31 | |
32 あと、Cerium の標準オプションとして | |
33 | |
34 -chelp Print this message | |
35 -cpu Number of CPU (default 1) | |
36 | |
37 を実装しました。近々増やしていく予定です。 | |
38 | |
39 TaskManager へのアクセスですが、今までは | |
40 | |
41 TaskManager *manager = new TaskManager(CPU_NUM); | |
42 | |
43 とかやってたはずですが、現在はライブラリ側で生成しているので、 | |
44 TaskManager.h を include すると、中で | |
45 | |
46 extern TaskManager *manager; | |
47 | |
48 とかしてるので、そのまま manager->create_task とかして使えます。 | |
49 | |
50 | |
51 | |
52 ----------------- | |
53 修正場所 | |
54 ----------------- | |
55 | |
56 今のところ、configure とかそういうのは無いので、 | |
57 ライブラリのパスは手動で書き直さないといけないです。 | |
58 各例題の Makefile.def ってところに、 | |
59 | |
60 TARGET = 例題の実行ファイル名 | |
61 CERIUM = Cerium のパス | |
62 | |
63 を書くところがあるので、自分の環境にあう感じで書いてください。 | |
64 | |
65 ----------------- | |
66 コンパイル方法 | |
67 ----------------- | |
68 MacOSX | |
69 % make macosx | |
70 | |
71 Linux | |
72 % make linux | |
73 | |
74 PS3 (spe/ 以下もコンパイルされます) | |
75 % make ps3 | |
76 | |
77 | |
78 clean するときは普通に | |
79 | |
80 % make clean でいいです。 | |
81 | |
82 | |
83 | |
84 -------------------- | |
85 プログラムの書き方 | |
86 -------------------- | |
87 | |
88 まだちゃんと仕様書みたいなものをは書いてないので、 | |
89 ここで記述必須の所を書いておきます。 | |
90 | |
91 1. タスクの作り方 | |
92 2. タスクの登録 (ID との対応付け) | |
93 3. 最後に | |
94 | |
95 ------------------- | |
96 1. タスクの作り方 | |
97 ------------------- | |
98 | |
99 タスクは、一つのクラスとして扱います。 | |
100 クラスの宣言 (.h) はこんな感じです。 | |
101 | |
102 ++++++++++++++++++++++++++++++++++ | |
103 #ifndef INCLUDED_SCHED_TASK | |
104 # include "SchedTask.h" | |
105 #endif | |
106 | |
107 class Hello : public SchedTask { | |
108 public: | |
109 SchedConstructor(Hello); | |
110 | |
111 int run(void *r, void *w); | |
112 }; | |
113 ++++++++++++++++++++++++++++++++++ | |
114 | |
115 以上の記述は必須です。 | |
116 クラス名と、SchedConstructor() の中身は一緒にしてください。 | |
117 run() がこのクラスの Task としての実装となります。 | |
118 クラス変数、関数を加えるのはOKです。 | |
119 | |
120 | |
121 次に実装 (.cc) です。 | |
122 | |
123 ++++++++++++++++++++++++++++++++++ | |
124 #include "Hello.h" | |
125 | |
126 /* これは必須 */ | |
127 SchedDefineTask(Hello); | |
128 | |
129 int | |
130 Hello::run(void *rbuf, void *wbuf) | |
131 { | |
132 printf("Hello, World!!\n"); | |
133 | |
134 return 0; | |
135 } | |
136 ++++++++++++++++++++++++++++++++++ | |
137 | |
138 SchedDefineTask にもクラス名を入れてください。 | |
139 rbuf, wbuf とかの使い方は 各例題を見ればわかります(basic とか)。 | |
140 | |
141 | |
142 | |
143 ------------------- | |
144 2 タスクの登録 | |
145 ------------------- | |
146 | |
147 タスクは ID で管理するようにしています。 | |
148 ppe で動くタスクは ppe/ 以下の task_init.cc で書きます。 | |
149 | |
150 ++++++++++++++++++++++++ | |
151 #include "Func.h" | |
152 #include "Scheduler.h" | |
153 | |
154 /* 必ずこの位置に書いて */ | |
155 SchedExternTask(Hello); | |
156 | |
157 void | |
158 task_init(void) | |
159 { | |
160 SchedRegisterTask(HELLO_TASK, Hello); | |
161 } | |
162 ++++++++++++++++++++++++ | |
163 | |
164 SchedExternTask と SchedRegisterTask は必須です。 | |
165 RegisterTask では、クラス名の他に、対応する ID を入れてください。 | |
166 ID は 整数で、現在は 0〜31 まで設定できます。 | |
167 上の場合は、Func.h で HELLO_TASK を enum でやってます。 | |
168 | |
169 SPE で動かすタスクも、spe/spe-main.cc に書いてください。 | |
170 書き方は ppe と同じです。 | |
171 | |
172 | |
173 ------------------- | |
174 3. 最後に | |
175 ------------------- | |
176 「もう書く事ねーのかよ」って意見もあるかもしれない。すまん。 | |
177 一番上にあるように、まだまだ開発の初期っつーかなんつーか、なので | |
178 これからどんどん追加していきますので。 |