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 */