Mercurial > hg > Members > kono > Cerium
diff TaskManager/kernel/schedule/Scheduler.h @ 403:8611780d479f
clean up and add more info on task_list
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 23 Sep 2009 12:04:29 +0900 |
parents | 016d45583994 |
children | cd77224d4224 |
line wrap: on
line diff
--- a/TaskManager/kernel/schedule/Scheduler.h Mon Sep 21 20:00:12 2009 +0900 +++ b/TaskManager/kernel/schedule/Scheduler.h Wed Sep 23 12:04:29 2009 +0900 @@ -21,9 +21,11 @@ class SchedTask; class SchedTaskList; +typedef SchedTask* (*TaskObjectCreator)(Scheduler *); + class Scheduler { public: - virtual ~Scheduler(void); + virtual ~Scheduler(); BASE_NEW_DELETE(Scheduler); @@ -91,7 +93,11 @@ // Task Object Table // this is named TaskObject but it is not an object. // It is a pointer to an object creation function - typedef SchedTask* (*TaskObject)(void); + typedef struct { + TaskObjectCreator creator; + uint64 location; // location address in a.out + uint32 entry_offset; // offset for create(); + } TaskObject, *TaskObjectPtr; DmaManager* connector; @@ -101,28 +107,28 @@ SchedTaskBase* task3; /* functions */ - void init(void); - void run(void); - virtual void init_impl(void) {}; - void finish(void); + void init(); + void run(); + virtual void init_impl() {}; + void finish(); - TaskListPtr get_curListBuf(void); - ListDataPtr get_curReadBuf(void); - ListDataPtr get_curWriteBuf(void); - TaskListPtr get_renewListBuf(void); + TaskListPtr get_curListBuf(); + ListDataPtr get_curReadBuf(); + ListDataPtr get_curWriteBuf(); + TaskListPtr get_renewListBuf(); void set_backupTaskList(TaskListPtr cur_taskList); void set_backupTaskListIndex(int cur_index); - SchedTaskList* get_nextRenewTaskList(void); - TaskListPtr get_backupTaskList(void); - int get_backupTaskListIndex(void); + SchedTaskList* get_nextRenewTaskList(); + TaskListPtr get_backupTaskList(); + int get_backupTaskListIndex(); // なんか名前が変だが。。。 /* TaskGroup */ TaskGroupPtr set_groupTask(uint32 command); void add_groupTask(TaskGroupPtr group, TaskPtr task); void remove_groupTask(TaskGroupPtr group, TaskPtr task); - void reload_groupTask(void); + void reload_groupTask(); uint32 status_groupTask(TaskGroupPtr group); /* GlobalMemory */ @@ -134,7 +140,7 @@ virtual void *allocate(int size) { return NULL; }; virtual void mainMem_alloc(int id, int size) {}; - virtual void mainMem_wait(void) {}; + virtual void mainMem_wait() {}; void *mainMem_get(int id); MemorySegment * get_segment(memaddr addr, MemList *m); @@ -149,28 +155,32 @@ void show_dma_wait() { connector->show_dma_wait(id); }; void show_dma_wait(int id) { connector->show_dma_wait(id); }; void mail_write(uint32 data); - uint32 mail_read(void); + uint32 mail_read(); void dma_loadList(ListDataPtr list, void *, uint32 mask); void dma_storeList(ListDataPtr list, void *, uint32 mask); }; -extern void register_task(int cmd, Scheduler::TaskObject task); +extern void register_task(int cmd, TaskObjectCreator creator); + #endif #define SchedConstructor(str) \ - str(void) {} \ + str() {} \ BASE_NEW_DELETE(str) \ #define SchedDefineTask(str) \ - SchedTask* createTask_##str(void) \ + SchedTask* createTask_##str(Scheduler *manager) \ { \ return new str(); \ } #define SchedExternTask(str) \ extern \ - SchedTask* createTask_##str(void); + SchedTask* createTask_##str(Scheduler *manager); #define SchedRegisterTask(cmd, str) \ register_task(cmd, createTask_##str); + + +/* end */