changeset 797:45c141669de7

SchedTask instance variable clean up
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 18 May 2010 17:57:19 +0900
parents 67443b781404
children 30f84915713b
files TaskManager/kernel/schedule/SchedMail.h TaskManager/kernel/schedule/SchedTask.h TaskManager/kernel/schedule/SchedTaskArray.h TaskManager/kernel/schedule/SchedTaskArrayLoad.h TaskManager/kernel/schedule/SchedTaskArrayNop.cc TaskManager/kernel/schedule/SchedTaskArrayNop.h TaskManager/kernel/schedule/SchedTaskBase.h TaskManager/kernel/schedule/SchedTaskList.h example/post_function/Makefile.macosx example/share_task/Makefile.macosx example/word_count/main.cc
diffstat 11 files changed, 36 insertions(+), 54 deletions(-) [+]
line wrap: on
line diff
--- a/TaskManager/kernel/schedule/SchedMail.h	Tue May 11 17:23:37 2010 +0900
+++ b/TaskManager/kernel/schedule/SchedMail.h	Tue May 18 17:57:19 2010 +0900
@@ -12,17 +12,9 @@
     /* constructor */
     BASE_NEW_DELETE(SchedMail);
 
-    /* variables */
-    memaddr params_addr;
-
     /* functions */
     SchedTaskBase* next(Scheduler *, SchedTaskBase *);
 
-#if DEBUG
-    void read(void)  { __debug("[SchedMail:%s]\n", __FUNCTION__); }
-    void exec(void)  { __debug("[SchedMail:%s]\n", __FUNCTION__); }
-    void write(void) { __debug("[SchedMail:%s]\n", __FUNCTION__); }
-#endif
 };
 
 #endif
--- a/TaskManager/kernel/schedule/SchedTask.h	Tue May 11 17:23:37 2010 +0900
+++ b/TaskManager/kernel/schedule/SchedTask.h	Tue May 18 17:57:19 2010 +0900
@@ -1,8 +1,6 @@
 #ifndef INCLUDED_SCHED_TASK
 #define INCLUDED_SCHED_TASK
 
-#include <stdio.h>
-#include <stdlib.h>
 #include "base.h"
 #include "Scheduler.h"
 #include "SchedTaskBase.h"
@@ -19,24 +17,10 @@
 
     BASE_NEW_DELETE(SchedTask);
 
-    // Task Array しか使わないが、たいした大きさではないのでいいか...
-    ListData inListData;
-    ListData outListData;
-
     /* variables */
 
 private:
 
-    /**
-     * read データ、write 用のバッファ
-     * readbuf には タスク登録時に設定した入力データが入っている。
-     * writebuf にデータを描き込んでおくと、
-     * タスク登録時に設定した出力先に書き込む
-     */
-    void *readbuf;
-    void *writebuf;
-
-
     /* functions */
 
     // override
@@ -124,13 +108,6 @@
     Scheduler* get_scheduler();
     long get_random();
 
-
-    /* system call */
-
-    FILE *stdout_;
-    FILE *stderr_;
-    FILE *stdin_;
-    
     int printf(const char * format, ...);
 
 };
--- a/TaskManager/kernel/schedule/SchedTaskArray.h	Tue May 11 17:23:37 2010 +0900
+++ b/TaskManager/kernel/schedule/SchedTaskArray.h	Tue May 18 17:57:19 2010 +0900
@@ -24,10 +24,6 @@
 private:
     /* variables */
 
-    TaskPtr atask;
-    void *readbuf;
-    void *writebuf;
-
     /* functions */
     Task *last();
 
--- a/TaskManager/kernel/schedule/SchedTaskArrayLoad.h	Tue May 11 17:23:37 2010 +0900
+++ b/TaskManager/kernel/schedule/SchedTaskArrayLoad.h	Tue May 18 17:57:19 2010 +0900
@@ -18,9 +18,6 @@
 private:
     /* variables */
 
-    void *readbuf;
-    SimpleTask *task;
-
     /* functions */
 
     // override
--- a/TaskManager/kernel/schedule/SchedTaskArrayNop.cc	Tue May 11 17:23:37 2010 +0900
+++ b/TaskManager/kernel/schedule/SchedTaskArrayNop.cc	Tue May 18 17:57:19 2010 +0900
@@ -5,8 +5,8 @@
 SchedTaskArrayNop::SchedTaskArrayNop(Scheduler *s, SchedTaskBase *savedTask_, Task *curTask_, Task *_array)
 {
     savedTask = savedTask_;
-    atask = (memaddr)savedTask->task->self;
-    array = _array;
+    params_addr = (memaddr)savedTask->task->self;
+    atask = _array;
     scheduler = s;
 
     inListData.bound = 0;
@@ -55,8 +55,8 @@
 SchedTaskArrayNop::write()
 {
 
-    scheduler->mail_write((memaddr)atask);
-    free(array);
+    scheduler->mail_write((memaddr)params_addr);
+    free(atask);
 
 }
 
--- a/TaskManager/kernel/schedule/SchedTaskArrayNop.h	Tue May 11 17:23:37 2010 +0900
+++ b/TaskManager/kernel/schedule/SchedTaskArrayNop.h	Tue May 18 17:57:19 2010 +0900
@@ -15,15 +15,9 @@
 
     virtual ~SchedTaskArrayNop();
 
-
-    SchedTaskBase *savedTask;
-    Task *array;
-
 private:
     /* variables */
 
-    memaddr atask;
-
     /* functions */
 
     // override
--- a/TaskManager/kernel/schedule/SchedTaskBase.h	Tue May 11 17:23:37 2010 +0900
+++ b/TaskManager/kernel/schedule/SchedTaskBase.h	Tue May 18 17:57:19 2010 +0900
@@ -3,6 +3,9 @@
 
 #include "base.h"
 #include "Scheduler.h"
+#include <stdio.h>
+#include <stdlib.h>
+
 
 class Scheduler;
 
@@ -28,16 +31,41 @@
 
     /* variables */
 
+    // SchedTask は、すべて同じ大きさであるべきなので、継承するクラスには、
+    // 変数を置かない。ここに、すべて置く。
+
     // Task を実行するスケジューラ自身
     Scheduler *scheduler;
 
     SimpleTaskPtr task;
+    TaskPtr atask;
+    SchedTaskBase *savedTask;
 
     // 現在スケジューラが実行している TaskList と、このタスクに対応する Task
     TaskListPtr list;
     // Task の、Tasklist での位置。(task = &list[cur_index-1])
     int cur_index;
 
+    memaddr params_addr;
+
+    /**
+     * read データ、write 用のバッファ
+     * readbuf には タスク登録時に設定した入力データが入っている。
+     * writebuf にデータを描き込んでおくと、
+     * タスク登録時に設定した出力先に書き込む
+     */
+    void *readbuf;
+    void *writebuf;
+
+    /* system call */
+
+    FILE *stdout_;
+    FILE *stderr_;
+    FILE *stdin_;
+
+    // Task Array しか使わないが、たいした大きさではないのでいいか...
+    ListData inListData;
+    ListData outListData;
 
 };
 
--- a/TaskManager/kernel/schedule/SchedTaskList.h	Tue May 11 17:23:37 2010 +0900
+++ b/TaskManager/kernel/schedule/SchedTaskList.h	Tue May 18 17:57:19 2010 +0900
@@ -15,9 +15,6 @@
 
     BASE_NEW_DELETE(SchedTaskList);
 
-    /* variables */
-    memaddr params_addr;
-
     /* override functions */
     void read();
     void exec();
--- a/example/post_function/Makefile.macosx	Tue May 11 17:23:37 2010 +0900
+++ b/example/post_function/Makefile.macosx	Tue May 18 17:57:19 2010 +0900
@@ -12,7 +12,7 @@
 TASK_OBJS = $(TASK_SRCS:.cc=.o)
 
 LIBS += -lFifoManager `sdl-config --libs`
-CC += -m64
+CC += -m32
 
 .SUFFIXES: .cc .o
 
--- a/example/share_task/Makefile.macosx	Tue May 11 17:23:37 2010 +0900
+++ b/example/share_task/Makefile.macosx	Tue May 18 17:57:19 2010 +0900
@@ -12,7 +12,7 @@
 TASK_OBJS = $(TASK_SRCS:.cc=.o)
 
 LIBS += -lFifoManager `sdl-config --libs`
-CC += -m64
+CC += -m32
 
 .SUFFIXES: .cc .o
 
--- a/example/word_count/main.cc	Tue May 11 17:23:37 2010 +0900
+++ b/example/word_count/main.cc	Tue May 18 17:57:19 2010 +0900
@@ -122,11 +122,12 @@
     int index = 0;
     int array_task_num = 32;
     for (int i = 0; i < task_num; i += array_task_num) {
+	if (task_num-i < array_task_num) array_task_num = task_num-i;
 	HTask *task_main = manager->create_task_array(TASK_EXEC,array_task_num,2,1,1);
 	t_print->wait_for(task_main);
 	int j ;
 	Task *t_exec = 0;
-	for(j = 0; j < array_task_num; j++) {
+	for(j = 0; j < array_task_num ; j++) {
 	    t_exec = task_main->next_task_array(TASK_EXEC,t_exec);
 
 	    // t_exec = manager->create_task(TASK_EXEC);