Mercurial > hg > Game > Cerium
annotate TaskManager/kernel/main.cc @ 1142:801d57ae1e29 draft
cut compile CreatePolygonTask on spe side because not enough spe memory. We have to use code loading.
And I found light error. see you tomorrow. (This version can work Mac OSX and Cell arch.)
author | yutaka@localhost.localdomain |
---|---|
date | Thu, 17 Feb 2011 05:23:34 +0900 |
parents | 2a63ba2c9506 |
children | 279b41354753 |
rev | line source |
---|---|
109 | 1 #include <stdlib.h> |
275 | 2 #include <string.h> |
109 | 3 #include <SDL.h> |
4 #include "TaskManager.h" | |
5 | |
321 | 6 /*! |
7 User が書いた TMmain() (*名前は固定) を実行する | |
8 */ | |
9 | |
216
e9a52d68db42
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
109
diff
changeset
|
10 /* User main function */ |
397
ce86b0186a4a
delete manager (in kernel/ppe/TaskManager.h)
game@henri.cr.ie.u-ryukyu.ac.jp
parents:
321
diff
changeset
|
11 extern int TMmain(TaskManager* manager, int argc, char *argv[]); |
216
e9a52d68db42
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
109
diff
changeset
|
12 |
674
07351a5a51c9
fix many task example (sort).
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
673
diff
changeset
|
13 static int profile = 0; |
07351a5a51c9
fix many task example (sort).
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
673
diff
changeset
|
14 |
216
e9a52d68db42
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
109
diff
changeset
|
15 /* Default TMend function */ |
e9a52d68db42
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
109
diff
changeset
|
16 static void |
674
07351a5a51c9
fix many task example (sort).
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
673
diff
changeset
|
17 defaultTMend(TaskManager *manager) { |
07351a5a51c9
fix many task example (sort).
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
673
diff
changeset
|
18 } |
109 | 19 |
397
ce86b0186a4a
delete manager (in kernel/ppe/TaskManager.h)
game@henri.cr.ie.u-ryukyu.ac.jp
parents:
321
diff
changeset
|
20 //TaskManager *manager; |
321 | 21 |
22 /*! | |
23 const char *usr_help_str を User 側で指定する必要がある | |
24 -help で出力される文字列 | |
25 */ | |
253
0c9c9906d777
usr_help_str is nessesary for example
tkaito@localhost.localdomain
parents:
242
diff
changeset
|
26 const char *help_str = "\n\ |
109 | 27 * Cerium program option *\n\ |
253
0c9c9906d777
usr_help_str is nessesary for example
tkaito@localhost.localdomain
parents:
242
diff
changeset
|
28 -help Print this message \n\ |
109 | 29 -cpu Number of CPU (default 1) \n"; |
30 | |
253
0c9c9906d777
usr_help_str is nessesary for example
tkaito@localhost.localdomain
parents:
242
diff
changeset
|
31 extern const char *usr_help_str; |
0c9c9906d777
usr_help_str is nessesary for example
tkaito@localhost.localdomain
parents:
242
diff
changeset
|
32 |
109 | 33 int |
34 main(int argc, char *argv[]) | |
35 { | |
253
0c9c9906d777
usr_help_str is nessesary for example
tkaito@localhost.localdomain
parents:
242
diff
changeset
|
36 int machineNum = 1; |
1066 | 37 int speIdle = 0; |
1123 | 38 int poll_pattern = 0; |
1105 | 39 |
109 | 40 for (int i = 1; argv[i]; ++i) { |
41 if (strcmp(argv[i], "-cpu") == 0) { | |
253
0c9c9906d777
usr_help_str is nessesary for example
tkaito@localhost.localdomain
parents:
242
diff
changeset
|
42 machineNum = atoi(argv[++i]); |
674
07351a5a51c9
fix many task example (sort).
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
673
diff
changeset
|
43 } else if (strcmp(argv[i], "-p") == 0) { |
07351a5a51c9
fix many task example (sort).
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
673
diff
changeset
|
44 profile = 1; |
1061
ca73615ab585
command option name changed (spuidle -> speidle)
tkaito@henri
parents:
1060
diff
changeset
|
45 } else if (strcmp(argv[i], "-speidle") == 0) { |
ca73615ab585
command option name changed (spuidle -> speidle)
tkaito@henri
parents:
1060
diff
changeset
|
46 speIdle = atoi(argv[++i]); |
1123 | 47 } else if (strcmp(argv[i], "-poll") == 0) { |
48 poll_pattern = 1; | |
1105 | 49 } |
1104 | 50 |
109 | 51 } |
52 | |
1113
d2d44bc55fa1
changeset 1105 fix.changeset 1105 fix.changeset 1105 fix.changeset 1105 fix.changeset 1105 fix.changeset 1105 fix.changeset 1105 fix.changeset 1105 fix.changeset 1105 fix.changeset 1105 fix.changeset 1105 fix.
tkaito
parents:
1105
diff
changeset
|
53 TaskManager *manager = new TaskManager(machineNum); |
1061
ca73615ab585
command option name changed (spuidle -> speidle)
tkaito@henri
parents:
1060
diff
changeset
|
54 manager->init(speIdle); |
109 | 55 |
1113
d2d44bc55fa1
changeset 1105 fix.changeset 1105 fix.changeset 1105 fix.changeset 1105 fix.changeset 1105 fix.changeset 1105 fix.changeset 1105 fix.changeset 1105 fix.changeset 1105 fix.changeset 1105 fix.changeset 1105 fix.
tkaito
parents:
1105
diff
changeset
|
56 manager->set_TMend(defaultTMend); |
d2d44bc55fa1
changeset 1105 fix.changeset 1105 fix.changeset 1105 fix.changeset 1105 fix.changeset 1105 fix.changeset 1105 fix.changeset 1105 fix.changeset 1105 fix.changeset 1105 fix.changeset 1105 fix.changeset 1105 fix.
tkaito
parents:
1105
diff
changeset
|
57 |
1105 | 58 for (int i = 1; argv[i]; ++i) { |
59 if (strcmp(argv[i], "-help") == 0) { | |
60 if (usr_help_str) { | |
61 manager->get_scheduler()->printf("%s", usr_help_str); | |
62 } | |
63 manager->get_scheduler()->printf("%s", help_str); | |
64 return EXIT_SUCCESS; | |
65 } | |
66 } | |
67 | |
674
07351a5a51c9
fix many task example (sort).
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
673
diff
changeset
|
68 if (profile) |
07351a5a51c9
fix many task example (sort).
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
673
diff
changeset
|
69 manager->start_profile(); |
397
ce86b0186a4a
delete manager (in kernel/ppe/TaskManager.h)
game@henri.cr.ie.u-ryukyu.ac.jp
parents:
321
diff
changeset
|
70 if (TMmain(manager, argc, argv) < 0) { |
109 | 71 goto FINISH; |
72 } | |
73 | |
74 manager->run(); | |
75 | |
397
ce86b0186a4a
delete manager (in kernel/ppe/TaskManager.h)
game@henri.cr.ie.u-ryukyu.ac.jp
parents:
321
diff
changeset
|
76 (manager->tm_end)(manager); |
674
07351a5a51c9
fix many task example (sort).
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
673
diff
changeset
|
77 if (profile) |
07351a5a51c9
fix many task example (sort).
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
673
diff
changeset
|
78 manager->show_profile(); |
07351a5a51c9
fix many task example (sort).
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
673
diff
changeset
|
79 manager->run(); // tm_end/show_profile may create a Task.. |
216
e9a52d68db42
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
109
diff
changeset
|
80 |
109 | 81 FINISH: |
82 delete manager; | |
83 | |
84 return EXIT_SUCCESS; | |
85 } | |
674
07351a5a51c9
fix many task example (sort).
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
673
diff
changeset
|
86 |
07351a5a51c9
fix many task example (sort).
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
673
diff
changeset
|
87 /* end */ |