Mercurial > hg > Game > Cerium
annotate example/post_function/main.cc @ 1264:5153ce1b2001 draft
change option
author | Daichi Toma <toma@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 19 Nov 2011 14:35:03 +0900 |
parents | 94d82f2c842f |
children |
rev | line source |
---|---|
109 | 1 #include <stdio.h> |
2 #include <stdlib.h> | |
3 #include <string.h> | |
4 #include "TaskManager.h" | |
5 #include "Func.h" | |
6 | |
7 extern void task_init(void); | |
8 | |
400 | 9 static TaskManager *manager; |
10 | |
109 | 11 static int count = 1; |
12 | |
260 | 13 const char *usr_help_str = "Usage: ./post [-cpu spe_num] [-count N]\n\ |
109 | 14 -count Number of print \"Hello, World!!\""; |
15 | |
567 | 16 void |
619 | 17 func1(SchedTask *m, void *p, void *q) |
109 | 18 { |
625
94d82f2c842f
64bit mode worked on Mac OS X.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
619
diff
changeset
|
19 long i = (long)p; |
109 | 20 |
625
94d82f2c842f
64bit mode worked on Mac OS X.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
619
diff
changeset
|
21 printf("post function : %ld\n", i--); |
109 | 22 |
23 if (i > 0) { | |
24 HTaskPtr next = manager->create_task(HELLO_TASK); | |
625
94d82f2c842f
64bit mode worked on Mac OS X.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
619
diff
changeset
|
25 next->set_param(0,(memaddr)i); |
619 | 26 next->set_post(func1, (void*)i, 0); |
109 | 27 next->set_cpu(SPE_ANY); |
28 next->spawn(); | |
29 } | |
30 } | |
31 | |
32 | |
33 int | |
34 init(int argc, char **argv) | |
35 { | |
36 for (int i = 1; argv[i]; ++i) { | |
37 if (strcmp(argv[i], "-count") == 0) { | |
38 count = atoi(argv[++i]); | |
39 } | |
40 } | |
41 | |
42 return 0; | |
43 } | |
44 | |
45 void | |
400 | 46 run_init(TaskManager *manager) |
109 | 47 { |
48 HTaskPtr task; | |
49 | |
50 task = manager->create_task(HELLO_TASK); | |
625
94d82f2c842f
64bit mode worked on Mac OS X.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
619
diff
changeset
|
51 task->set_param(0,(memaddr)count); |
619 | 52 task->set_post(func1, (void*)count, 0); |
109 | 53 task->set_cpu(SPE_ANY); |
54 task->spawn(); | |
55 } | |
56 | |
57 int | |
400 | 58 TMmain(TaskManager *manager_, int argc, char *argv[]) |
109 | 59 { |
400 | 60 manager = manager_; |
61 | |
109 | 62 if (init(argc, argv) < 0) { |
63 return -1; | |
64 } | |
65 | |
66 task_init(); | |
400 | 67 run_init(manager); |
109 | 68 |
69 return 0; | |
70 } | |
400 | 71 |