annotate TaskManager/kernel/schedule/SchedTaskBase.h @ 818:19c6cdeb23d6

too few template-parameter-lists
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 23 May 2010 10:55:25 +0900
parents 2708c4a7bade
children 586ed400413a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
1 #ifndef INCLUDED_SCHED_TASK_BASE
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
2 #define INCLUDED_SCHED_TASK_BASE
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
3
301
bcb81858aa62 remove deprecated source. not work.
tkaito@localhost.localdomain
parents: 109
diff changeset
4 #include "base.h"
797
45c141669de7 SchedTask instance variable clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 776
diff changeset
5 #include <stdio.h>
45c141669de7 SchedTask instance variable clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 776
diff changeset
6 #include <stdlib.h>
45c141669de7 SchedTask instance variable clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 776
diff changeset
7
800
2708c4a7bade run16 word count ( not yet worked. )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 799
diff changeset
8 class TaskManagerImpl;
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
9 class Scheduler;
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
10
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
11 class SchedTaskBase {
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
12 public:
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
13 /* constructor */
776
5088d70e66c5 heap corruption in TaskArray1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 713
diff changeset
14 // void *called ; // for debug
5088d70e66c5 heap corruption in TaskArray1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 713
diff changeset
15 SchedTaskBase() {
5088d70e66c5 heap corruption in TaskArray1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 713
diff changeset
16 // called = __builtin_return_address(1);
5088d70e66c5 heap corruption in TaskArray1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 713
diff changeset
17 }
5088d70e66c5 heap corruption in TaskArray1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 713
diff changeset
18 virtual ~SchedTaskBase() {}
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
19
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 42
diff changeset
20 BASE_NEW_DELETE(SchedTaskBase);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 42
diff changeset
21
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
22 // noaction in default
798
30f84915713b virtual clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 797
diff changeset
23 // virtual void load() {}
776
5088d70e66c5 heap corruption in TaskArray1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 713
diff changeset
24 virtual void read() {}
5088d70e66c5 heap corruption in TaskArray1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 713
diff changeset
25 virtual void exec() {}
5088d70e66c5 heap corruption in TaskArray1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 713
diff changeset
26 virtual void write() {}
799
bf4ee251767e add forgotten virutal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 798
diff changeset
27 virtual SchedTaskBase* next(Scheduler *, SchedTaskBase*) {return 0;}
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
28
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
29 /* functions */
799
bf4ee251767e add forgotten virutal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 798
diff changeset
30 virtual void* get_output(void *buff, int index) { return 0; }
798
30f84915713b virtual clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 797
diff changeset
31 virtual void* get_input(void *buff, int index) { return 0;}
30f84915713b virtual clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 797
diff changeset
32 virtual memaddr get_param(int index) { return 0;}
800
2708c4a7bade run16 word count ( not yet worked. )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 799
diff changeset
33 virtual int read_size() { return 0;}
798
30f84915713b virtual clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 797
diff changeset
34
708
56487849ea2d cleean up SchedTasks.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
35 /* variables */
56487849ea2d cleean up SchedTasks.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
36
797
45c141669de7 SchedTask instance variable clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 776
diff changeset
37 // SchedTask は、すべて同じ大きさであるべきなので、継承するクラスには、
798
30f84915713b virtual clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 797
diff changeset
38 // 変数を置かない。ここに、すべて置く。virtual も含めて。
797
45c141669de7 SchedTask instance variable clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 776
diff changeset
39
708
56487849ea2d cleean up SchedTasks.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
40 // Task を実行するスケジューラ自身
56487849ea2d cleean up SchedTasks.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
41 Scheduler *scheduler;
800
2708c4a7bade run16 word count ( not yet worked. )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 799
diff changeset
42 // Task を作成管理するマネージャー
2708c4a7bade run16 word count ( not yet worked. )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 799
diff changeset
43 TaskManagerImpl *manager;
708
56487849ea2d cleean up SchedTasks.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
44
56487849ea2d cleean up SchedTasks.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
45 SimpleTaskPtr task;
797
45c141669de7 SchedTask instance variable clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 776
diff changeset
46 TaskPtr atask;
45c141669de7 SchedTask instance variable clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 776
diff changeset
47 SchedTaskBase *savedTask;
708
56487849ea2d cleean up SchedTasks.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
48
56487849ea2d cleean up SchedTasks.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
49 // 現在スケジューラが実行している TaskList と、このタスクに対応する Task
56487849ea2d cleean up SchedTasks.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
50 TaskListPtr list;
56487849ea2d cleean up SchedTasks.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
51 // Task の、Tasklist での位置。(task = &list[cur_index-1])
56487849ea2d cleean up SchedTasks.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
52 int cur_index;
56487849ea2d cleean up SchedTasks.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
53
797
45c141669de7 SchedTask instance variable clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 776
diff changeset
54 memaddr params_addr;
45c141669de7 SchedTask instance variable clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 776
diff changeset
55
45c141669de7 SchedTask instance variable clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 776
diff changeset
56 /**
45c141669de7 SchedTask instance variable clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 776
diff changeset
57 * read データ、write 用のバッファ
45c141669de7 SchedTask instance variable clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 776
diff changeset
58 * readbuf には タスク登録時に設定した入力データが入っている。
45c141669de7 SchedTask instance variable clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 776
diff changeset
59 * writebuf にデータを描き込んでおくと、
45c141669de7 SchedTask instance variable clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 776
diff changeset
60 * タスク登録時に設定した出力先に書き込む
45c141669de7 SchedTask instance variable clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 776
diff changeset
61 */
45c141669de7 SchedTask instance variable clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 776
diff changeset
62 void *readbuf;
45c141669de7 SchedTask instance variable clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 776
diff changeset
63 void *writebuf;
45c141669de7 SchedTask instance variable clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 776
diff changeset
64
45c141669de7 SchedTask instance variable clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 776
diff changeset
65 /* system call */
45c141669de7 SchedTask instance variable clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 776
diff changeset
66
45c141669de7 SchedTask instance variable clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 776
diff changeset
67 FILE *stdout_;
45c141669de7 SchedTask instance variable clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 776
diff changeset
68 FILE *stderr_;
45c141669de7 SchedTask instance variable clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 776
diff changeset
69 FILE *stdin_;
45c141669de7 SchedTask instance variable clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 776
diff changeset
70
45c141669de7 SchedTask instance variable clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 776
diff changeset
71 // Task Array しか使わないが、たいした大きさではないのでいいか...
45c141669de7 SchedTask instance variable clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 776
diff changeset
72 ListData inListData;
45c141669de7 SchedTask instance variable clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 776
diff changeset
73 ListData outListData;
708
56487849ea2d cleean up SchedTasks.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
74
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
75 };
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
76
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
77 #endif