Mercurial > hg > Game > Cerium
view include/TaskManager/SchedTask.h @ 135:ac436cebae2a draft
remove xml file
author | gongo@charles.cr.ie.u-ryukyu.ac.jp |
---|---|
date | Thu, 27 Nov 2008 16:19:50 +0900 |
parents | 028ffc9c0375 |
children | e3b7776b1420 |
line wrap: on
line source
#ifndef INCLUDED_SCHED_TASK #define INCLUDED_SCHED_TASK #ifndef INCLUDED_BASE_H_ # include "base.h" #endif #ifndef INCLUDED_SCHEDULER # include "Scheduler.h" #endif #ifndef INCLUDED_SCHED_TASK_BASE # include "SchedTaskBase.h" #endif #ifndef INCLUDED_LIST_DATA # include "ListData.h" #endif #ifndef INCLUDED_TASK_GROUP # include "TaskGroup.h" #endif class SchedTask : public SchedTaskBase { public: /* constructor */ SchedTask(TaskListPtr, TaskPtr, ListDataPtr, ListDataPtr, Scheduler*); ~SchedTask(void); BASE_NEW_DELETE(SchedTask); /* variables */ // 現在スケジューラが持つ TaskList と、このタスクに対応する Task TaskListPtr __list; TaskPtr __task; // read/write 用の ListData ListDataPtr __inListData; ListDataPtr __outListData; // read データ、write 用のバッファ // readbuf には タスク登録時に設定した入力データが入っている。 // writebuf にデータを描き込んでおくと、 // タスク登録時に設定した出力先に書き込む void *__readbuf; void *__writebuf; Scheduler *__scheduler; TaskGroup *__taskGroup; int __renew_flag; // タスクが生成されたフラグ int __flag_renewTask; /* functions */ SchedTaskBase* next(Scheduler *, SchedTaskBase *); void __init__(void); // override void read(void); void exec(void); void write(void); // ここをユーザが継承して // それぞれのタスクに対応した処理を記述する virtual int run(void* r, void *w) { return 0; } void* get_input(void *buff, int index); void* get_output(void *buff, int index); int get_param(int index); TaskPtr create_task(int cmd); void wait_task(TaskPtr waitTask); void* global_alloc(int id, int size); void* global_get(int id); void global_free(int id); void mainMem_alloc(int id, int size); void mainMem_wait(void); void* mainMem_get(int id); void *allocate(int size); void dma_load(void *buf, uint32 addr, uint32 size, uint32 mask); void dma_store(void *buf,uint32 addr, uint32 size, uint32 mask); void dma_wait(uint32 mask); class STaskManager { public: STaskManager(SchedTask *_t) { outer = _t; } BASE_NEW_DELETE(STaskManager); SchedTask *outer; void* get_input(int index) { return outer->get_input(outer->__readbuf, index); } void* get_output(int index) { return outer->get_output(outer->__writebuf, index); } int get_param(int index) { return outer->get_param(index); } TaskPtr create_task(int cmd) { return outer->create_task(cmd); } void wait_task(TaskPtr waitTask) { outer->wait_task(waitTask); } void* global_alloc(int id, int size) { return outer->global_alloc(id, size); } void* global_get(int id) { return outer->global_get(id); } void global_free(int id) { outer->global_free(id); } void mainMem_alloc(int id, int size) { outer->mainMem_alloc(id, size); } void mainMem_wait(void) { outer->mainMem_wait(); } void* mainMem_get(int id) { return outer->mainMem_get(id); } void *allocate(int size) { return outer->allocate(size); } void dma_load(void *buf, uint32 addr, uint32 size, uint32 mask) { outer->dma_load(buf, addr, size, mask); } void dma_store(void *buf,uint32 addr, uint32 size, uint32 mask) { outer->dma_store(buf, addr, size, mask); } void dma_wait(uint32 mask) { outer->dma_wait(mask); } }; STaskManager *smanager; }; #endif extern SchedTask* CreateSchedTask(TaskListPtr, Scheduler *);