Mercurial > hg > Members > kono > Cerium
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 |
rev | line source |
---|---|
42 | 1 #ifndef INCLUDED_SCHED_TASK_BASE |
2 #define INCLUDED_SCHED_TASK_BASE | |
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 | 9 class Scheduler; |
10 | |
11 class SchedTaskBase { | |
12 public: | |
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 | 19 |
109 | 20 BASE_NEW_DELETE(SchedTaskBase); |
21 | |
42 | 22 // noaction in default |
798 | 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 | 27 virtual SchedTaskBase* next(Scheduler *, SchedTaskBase*) {return 0;} |
42 | 28 |
29 /* functions */ | |
799 | 30 virtual void* get_output(void *buff, int index) { return 0; } |
798 | 31 virtual void* get_input(void *buff, int index) { return 0;} |
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 | 34 |
708 | 35 /* variables */ |
36 | |
797
45c141669de7
SchedTask instance variable clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
776
diff
changeset
|
37 // SchedTask は、すべて同じ大きさであるべきなので、継承するクラスには、 |
798 | 38 // 変数を置かない。ここに、すべて置く。virtual も含めて。 |
797
45c141669de7
SchedTask instance variable clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
776
diff
changeset
|
39 |
708 | 40 // Task を実行するスケジューラ自身 |
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 | 44 |
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 | 48 |
49 // 現在スケジューラが実行している TaskList と、このタスクに対応する Task | |
50 TaskListPtr list; | |
51 // Task の、Tasklist での位置。(task = &list[cur_index-1]) | |
52 int cur_index; | |
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 | 74 |
42 | 75 }; |
76 | |
77 #endif |