Mercurial > hg > Members > kono > Cerium
comparison TaskManager/kernel/main.cc @ 674:bde5f13adf10
fix many task example (sort).
Dummy task is now system supported.
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 06 Dec 2009 00:54:10 +0900 |
parents | d9111086b2c4 |
children | 31d0a5baafdf |
comparison
equal
deleted
inserted
replaced
673:d9111086b2c4 | 674:bde5f13adf10 |
---|---|
8 */ | 8 */ |
9 | 9 |
10 /* User main function */ | 10 /* User main function */ |
11 extern int TMmain(TaskManager* manager, int argc, char *argv[]); | 11 extern int TMmain(TaskManager* manager, int argc, char *argv[]); |
12 | 12 |
13 static int profile = 0; | |
14 | |
13 /* Default TMend function */ | 15 /* Default TMend function */ |
14 static void | 16 static void |
15 defaultTMend(TaskManager *manager) {} | 17 defaultTMend(TaskManager *manager) { |
18 } | |
16 | 19 |
17 //TaskManager *manager; | 20 //TaskManager *manager; |
18 | 21 |
19 /*! | 22 /*! |
20 const char *usr_help_str を User 側で指定する必要がある | 23 const char *usr_help_str を User 側で指定する必要がある |
33 int machineNum = 1; | 36 int machineNum = 1; |
34 | 37 |
35 for (int i = 1; argv[i]; ++i) { | 38 for (int i = 1; argv[i]; ++i) { |
36 if (strcmp(argv[i], "-cpu") == 0) { | 39 if (strcmp(argv[i], "-cpu") == 0) { |
37 machineNum = atoi(argv[++i]); | 40 machineNum = atoi(argv[++i]); |
38 } | 41 } else if (strcmp(argv[i], "-p") == 0) { |
39 if (strcmp(argv[i], "-help") == 0) { | 42 profile = 1; |
43 } else if (strcmp(argv[i], "-help") == 0) { | |
40 if (usr_help_str) { | 44 if (usr_help_str) { |
41 printf("%s", usr_help_str); | 45 printf("%s", usr_help_str); |
42 } | 46 } |
43 printf("%s", help_str); | 47 printf("%s", help_str); |
44 return EXIT_SUCCESS; | 48 return EXIT_SUCCESS; |
48 TaskManager *manager = new TaskManager(machineNum); | 52 TaskManager *manager = new TaskManager(machineNum); |
49 manager->init(); | 53 manager->init(); |
50 | 54 |
51 manager->set_TMend(defaultTMend); | 55 manager->set_TMend(defaultTMend); |
52 | 56 |
57 if (profile) | |
58 manager->start_profile(); | |
53 if (TMmain(manager, argc, argv) < 0) { | 59 if (TMmain(manager, argc, argv) < 0) { |
54 goto FINISH; | 60 goto FINISH; |
55 } | 61 } |
56 | 62 |
57 manager->run(); | 63 manager->run(); |
58 | 64 |
59 (manager->tm_end)(manager); | 65 (manager->tm_end)(manager); |
60 manager->run(); // tm_end may create a Task.. | 66 if (profile) |
67 manager->show_profile(); | |
68 manager->run(); // tm_end/show_profile may create a Task.. | |
61 | 69 |
62 FINISH: | 70 FINISH: |
63 delete manager; | 71 delete manager; |
64 | 72 |
65 return EXIT_SUCCESS; | 73 return EXIT_SUCCESS; |
66 } | 74 } |
75 | |
76 /* end */ |