changeset 803:2746a16a86f5

merge
author yutaka@localhost.localdomain
date Wed, 19 May 2010 21:24:54 +0900
parents 496a8159e840 (current diff) 30f84915713b (diff)
children 7ac03079a2b2
files TaskManager/kernel/schedule/SchedTask.h
diffstat 12 files changed, 62 insertions(+), 64 deletions(-) [+]
line wrap: on
line diff
--- a/TaskManager/ChangeLog	Wed May 19 14:59:41 2010 +0900
+++ b/TaskManager/ChangeLog	Wed May 19 21:24:54 2010 +0900
@@ -1,3 +1,22 @@
+2010-5-11 Shinji KONO <kono@ie.u-ryukyu.ac.jp>
+
+    speTaskList_bg は追放するべきだと思われる。
+
+    PPE task はTaskList をすべて実行するまで戻って来ない。
+    なので、spe のmail checkが疎かになっている。
+    PPE task の実行途中で SPEのmail checkを行なうべき。
+
+    Fifo/Cell TaskManagerImpl は統一できるのではないか?
+
+    SchedTask は今は各Taskのselfを返しているがTaskListにするべき
+    spe からのメールはTaskListが空になった時で良い。早めに、
+
+    PPE Taskを早めに起動する義理はある? あるかも知れない。Quick Reply Property。
+
+    TaskList もDataSegement化するべきだと思われる。
+
+    Scheduler::task_list もDataSegment化して、メインメモリ上に置く。
+
 2010-4-28 Shinji KONO <kono@ie.u-ryukyu.ac.jp>
 
     SchedTaskBase のみにインスタンス変数を書かせて、
--- a/TaskManager/kernel/schedule/SchedMail.h	Wed May 19 14:59:41 2010 +0900
+++ b/TaskManager/kernel/schedule/SchedMail.h	Wed May 19 21:24:54 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	Wed May 19 14:59:41 2010 +0900
+++ b/TaskManager/kernel/schedule/SchedTask.h	Wed May 19 21:24:54 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,8 @@
 
     BASE_NEW_DELETE(SchedTask);
 
-    // Task Array しか使わないが、たいした大きさではないのでいいか...
-    ListData inListData;
-    ListData outListData;
-
     /* variables */
 
-private:
-
-    /**
-     * read データ、write 用のバッファ
-     * readbuf には タスク登録時に設定した入力データが入っている。
-     * writebuf にデータを描き込んでおくと、
-     * タスク登録時に設定した出力先に書き込む
-     */
-    void *readbuf;
-    void *writebuf;
-
-
     /* functions */
 
     // override
@@ -47,10 +29,6 @@
 
     // タスクの処理は、task_list に登録された C の関数によっておこなう
 
-    //---  System API ---
-    SchedTask* get_nextTask(TaskListPtr list);
-
-
 public:
     /* functions */
 
@@ -62,9 +40,9 @@
     int write_size() { return task->w_size; }
     void set_write_size(int w) { task->w_size = w; }
 
-    virtual void* get_input(void *buff, int index);
-    virtual void* get_output(void *buff, int index);
-    virtual memaddr get_param(int index);
+    void* get_input(void *buff, int index);
+    void* get_output(void *buff, int index);
+    memaddr get_param(int index);
     memaddr get_inputAddr(int index);
     memaddr get_outputAddr(int index);
     // 書き出しを追加する API がない... 
@@ -125,13 +103,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	Wed May 19 14:59:41 2010 +0900
+++ b/TaskManager/kernel/schedule/SchedTaskArray.h	Wed May 19 21:24:54 2010 +0900
@@ -24,10 +24,6 @@
 private:
     /* variables */
 
-    TaskPtr atask;
-    void *readbuf;
-    void *writebuf;
-
     /* functions */
     Task *last();
 
--- a/TaskManager/kernel/schedule/SchedTaskArrayLoad.h	Wed May 19 14:59:41 2010 +0900
+++ b/TaskManager/kernel/schedule/SchedTaskArrayLoad.h	Wed May 19 21:24:54 2010 +0900
@@ -18,9 +18,6 @@
 private:
     /* variables */
 
-    void *readbuf;
-    SimpleTask *task;
-
     /* functions */
 
     // override
--- a/TaskManager/kernel/schedule/SchedTaskArrayNop.cc	Wed May 19 14:59:41 2010 +0900
+++ b/TaskManager/kernel/schedule/SchedTaskArrayNop.cc	Wed May 19 21:24:54 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	Wed May 19 14:59:41 2010 +0900
+++ b/TaskManager/kernel/schedule/SchedTaskArrayNop.h	Wed May 19 21:24:54 2010 +0900
@@ -15,15 +15,9 @@
 
     virtual ~SchedTaskArrayNop();
 
-
-    SchedTaskBase *savedTask;
-    Task *array;
-
 private:
     /* variables */
 
-    memaddr atask;
-
     /* functions */
 
     // override
--- a/TaskManager/kernel/schedule/SchedTaskBase.h	Wed May 19 14:59:41 2010 +0900
+++ b/TaskManager/kernel/schedule/SchedTaskBase.h	Wed May 19 21:24:54 2010 +0900
@@ -3,6 +3,9 @@
 
 #include "base.h"
 #include "Scheduler.h"
+#include <stdio.h>
+#include <stdlib.h>
+
 
 class Scheduler;
 
@@ -18,7 +21,7 @@
     BASE_NEW_DELETE(SchedTaskBase);
 
     // noaction in default
-    virtual void load()  {}
+    // virtual void load()  {}
     virtual void read()  {}
     virtual void exec()  {}
     virtual void write() {}
@@ -26,18 +29,46 @@
     /* functions */
     virtual SchedTaskBase* next(Scheduler *, SchedTaskBase*) {return 0;}
 
+    virtual void* get_input(void *buff, int index) { return 0;}
+    virtual memaddr get_param(int index) { return 0;}
+
     /* variables */
 
+    // SchedTask は、すべて同じ大きさであるべきなので、継承するクラスには、
+    // 変数を置かない。ここに、すべて置く。virtual も含めて。
+
     // 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	Wed May 19 14:59:41 2010 +0900
+++ b/TaskManager/kernel/schedule/SchedTaskList.h	Wed May 19 21:24:54 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	Wed May 19 14:59:41 2010 +0900
+++ b/example/post_function/Makefile.macosx	Wed May 19 21:24:54 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	Wed May 19 14:59:41 2010 +0900
+++ b/example/share_task/Makefile.macosx	Wed May 19 21:24:54 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	Wed May 19 14:59:41 2010 +0900
+++ b/example/word_count/main.cc	Wed May 19 21:24:54 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);