Mercurial > hg > Game > Cerium
view TaskManager/kernel/schedule/SchedTaskBase.h @ 899:1b9418af3127 draft
minor fix..
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 16 Jul 2010 22:20:02 +0900 |
parents | b662e9dd26b0 |
children | deed1449a5f4 |
line wrap: on
line source
#ifndef INCLUDED_SCHED_TASK_BASE #define INCLUDED_SCHED_TASK_BASE #include "base.h" #include <stdio.h> #include <stdlib.h> class TaskManagerImpl; class Scheduler; class SchedTaskBase { public: /* constructor */ // void *called ; // for debug SchedTaskBase() { // called = __builtin_return_address(1); } virtual ~SchedTaskBase() {} BASE_NEW_DELETE(SchedTaskBase); // noaction in default // virtual void load() {} virtual void read() {} virtual void exec() {} virtual void write() {} virtual SchedTaskBase* next(Scheduler *, SchedTaskBase*) {return 0;} /* functions */ virtual void* get_output(void *buff, int index) { return 0; } virtual void* get_input(void *buff, int index) { return 0;} virtual memaddr get_param(int index) { return 0;} virtual int read_size() { return 0;} /* variables */ // SchedTask は、すべて同じ大きさであるべきなので、継承するクラスには、 // 変数を置かない。ここに、すべて置く。virtual も含めて。 // Task を実行するスケジューラ自身 Scheduler *scheduler; // Task を作成管理するマネージャー TaskManagerImpl *manager; SimpleTaskPtr task; TaskPtr atask; SchedTaskBase *savedTask; // 現在スケジューラが実行している TaskList と、このタスクに対応する Task TaskListPtr list; // Task の、Tasklist での位置。(task = &list[cur_index-1]) int cur_index; memaddr params_addr; memaddr waiter; Task *array; /** * read データ、write 用のバッファ * readbuf には タスク登録時に設定した入力データが入っている。 * writebuf にデータを描き込んでおくと、 * タスク登録時に設定した出力先に書き込む */ void *readbuf; void *writebuf; /* system call */ FILE *stdout_; FILE *stderr_; FILE *stdin_; // Task Array しか使わないが、たいした大きさではないのでいいか... ListData inListData; ListData outListData; } ; #endif