changeset 625:60aa3f241b10

64bit mode worked on Mac OS X.
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 16 Nov 2009 10:59:55 +0900
parents c7b5c99252ad
children ab866bc8a624
files Renderer/Engine/Makefile.def Renderer/Engine/task/CreateSpan.cc Renderer/Engine/task/DrawBack.cc Renderer/Engine/task/DrawSpan.cc Renderer/Engine/viewer.cc Renderer/Test/Makefile.def TaskManager/ChangeLog TaskManager/Fifo/FifoDmaManager.cc TaskManager/Fifo/FifoTaskManagerImpl.cc TaskManager/Makefile.def TaskManager/include/base.h TaskManager/include/types.h TaskManager/kernel/memory/MemHash.cc TaskManager/kernel/ppe/DmaBuffer.cc TaskManager/kernel/ppe/Task.cc TaskManager/kernel/ppe/Task.h TaskManager/kernel/ppe/TaskManager.cc TaskManager/kernel/ppe/TaskManager.h TaskManager/kernel/ppe/TaskQueue.cc TaskManager/kernel/ppe/TaskQueue.h TaskManager/kernel/schedule/SchedMail.cc TaskManager/kernel/schedule/SchedMail.h TaskManager/kernel/schedule/SchedNop2Ready.cc TaskManager/kernel/schedule/SchedTask.cc TaskManager/kernel/schedule/SchedTask.h TaskManager/kernel/schedule/SchedTaskList.cc TaskManager/kernel/schedule/SchedTaskList.h TaskManager/kernel/schedule/Scheduler.cc TaskManager/kernel/schedule/Scheduler.h TaskManager/kernel/schedule/TaskGroup.cc TaskManager/kernel/schedule/TaskGroup.h example/HelloWorld/Makefile.def example/HelloWorld/main.cc example/HelloWorld/ppe/Hello.cc example/MemList/Makefile.macosx example/basic/Makefile.macosx example/basic/main.cc example/basic/ppe/Twice.cc example/dependency_task/Makefile.macosx example/dependency_task/main.cc example/dependency_task/ppe/Exec.cc example/dependency_task/ppe/Print.cc example/get_segment/Makefile.macosx example/get_segment/main.cc example/get_segment/ppe/Hello.cc example/get_segment/ppe/Hello1.cc example/mainMem/Makefile.macosx example/mainMem/main.cc example/mainMem/ppe/Hello.cc example/many_task/Makefile.macosx example/many_task/ppe/QuickSort.cc example/many_task/sort.cc example/post_function/Makefile.macosx example/post_function/main.cc example/post_function/ppe/Hello.cc example/renew_task/Makefile.macosx example/renew_task/main.cc example/renew_task/ppe/RenewStart.cc example/share_task/Makefile.macosx example/share_task/main.cc example/share_task/ppe/Exec.cc example/share_task/ppe/Load.cc example/task_queue/Makefile.macosx example/task_queue/main.cc example/task_queue/ppe/Hello.cc example/word_count/Makefile.macosx example/word_count/main.cc example/word_count/ppe/Exec.cc example/word_count/ppe/Print.cc example/word_count3/Makefile.macosx example/word_count3/main.cc example/word_count3/ppe/Exec.cc example/word_count3/ppe/Print.cc
diffstat 73 files changed, 164 insertions(+), 347 deletions(-) [+]
line wrap: on
line diff
--- a/Renderer/Engine/Makefile.def	Sun Nov 15 04:56:09 2009 +0900
+++ b/Renderer/Engine/Makefile.def	Mon Nov 16 10:59:55 2009 +0900
@@ -2,7 +2,7 @@
 
 CERIUM = ../..
 
-ABI = -m32
+ABI = -m64
 CC      = g++
 CFLAGS  = -g -Wall $(ABI) # -O9 -DDEBUG
 
--- a/Renderer/Engine/task/CreateSpan.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/Renderer/Engine/task/CreateSpan.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -435,14 +435,14 @@
     SpanPackPtr *spackList = (SpanPackPtr*)smanager->get_input(1);
     spack = (SpanPackPtr)smanager->get_input(2);
     send_spack = (SpanPackPtr)smanager->allocate(sizeof(SpanPack));
-    prev_index = smanager->get_param(0);
+    prev_index = (long)smanager->get_param(0);
 
     // spack と send_spack は swap しながら DMA を繰り返すので
     // 自分で allocate した send_spack を覚えてないといけない
     SpanPackPtr free_spack = send_spack;
 
-    int charge_y_top = smanager->get_param(1);
-    int charge_y_end = smanager->get_param(2);
+    int charge_y_top = (long)smanager->get_param(1);
+    int charge_y_end = (long)smanager->get_param(2);
 
     do {
 	if (pp->next != NULL) {
--- a/Renderer/Engine/task/DrawBack.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/Renderer/Engine/task/DrawBack.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -16,10 +16,10 @@
 static int
 run(SchedTask *smanager, void *rbuf, void *wbuf)
 {
-    int rgb          = smanager->get_param(0);
-    int rangex_start = smanager->get_param(1);
-    int rangex_end   = smanager->get_param(2);
-    int rangey       = smanager->get_param(3);
+    int rgb          = (long)smanager->get_param(0);
+    int rangex_start = (long)smanager->get_param(1);
+    int rangex_end   = (long)smanager->get_param(2);
+    int rangey       = (long)smanager->get_param(3);
     int rangex       = rangex_end - rangex_start + 1;
     int *linebuf;
 
--- a/Renderer/Engine/task/DrawSpan.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/Renderer/Engine/task/DrawSpan.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -425,14 +425,14 @@
 
     // uint32 display   = smanager->get_param(0);
     // int screen_width = smanager->get_param(1);
-    int rangex_start = smanager->get_param(2);
-    int rangex_end   = smanager->get_param(3);
+    int rangex_start = (long)smanager->get_param(2);
+    int rangex_end   = (long)smanager->get_param(3);
 
     // このタスクが担当する x の範囲
     int rangex = rangex_end - rangex_start + 1;
 
     // y の範囲
-    int rangey = smanager->get_param(4);
+    int rangey = (long)smanager->get_param(4);
     g->tileList = (TileListPtr)smanager->global_get(GLOBAL_TILE_LIST);
 
     g->zRow = zRow_init(smanager, rangex, rangey);
--- a/Renderer/Engine/viewer.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/Renderer/Engine/viewer.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -238,9 +238,9 @@
 {
     Viewer *viewer = (Viewer*)viewer_;
     
-    // 同じ PPE 上なので sgroot(ポインタ) を add_param で送る。 
+    // 同じ PPE 上なので sgroot(ポインタ) を set_param で送る。 
     //HTaskPtr send_key_task = viewer->manager->create_task(SendKey);
-    //send_key_task->add_param((int)sgroot);
+    //send_key_task->set_param((int)sgroot);
     // set input data -> viewer keyPtr
     viewer->getKey();
     HTaskPtr update_key = viewer->manager->create_task(UpdateKey);
@@ -251,7 +251,7 @@
     /* TASK_MOVE は外から引数で取ってくるべき */
     //HTaskPtr move_task = viewer->manager->create_task(viewer->app->move_taskid);    
     HTaskPtr move_task = viewer->manager->create_task(Move);
-    //move_task->add_param(sgroot);
+    //move_task->set_param(sgroot);
 
     //HTaskPtr draw_task = viewer->manager->create_task(Draw);
 
@@ -452,8 +452,8 @@
     
     // SceneGraph(木構造) -> PolygonPack
 
-    task_create_pp->add_param((memaddr)sgroot->getDrawSceneGraph());
-    task_create_pp->add_param((memaddr)ppack);
+    task_create_pp->set_param(0,(memaddr)sgroot->getDrawSceneGraph());
+    task_create_pp->set_param(1,(memaddr)ppack);
 
     task_next->wait_for(task_create_pp);
     
@@ -472,7 +472,7 @@
                                    sizeof(SpanPack*)*spackList_length_align);
         task_create_sp->add_inData(&spackList[index_start], sizeof(SpanPack));
 
-        task_create_sp->add_param(index_start);
+        task_create_sp->set_param(0,index_start);
 
         /**
          * ex. screen_height が 480, spenum が 6 の場合、各SPEのy担当範囲
@@ -483,8 +483,8 @@
          *   [  1..216] [217..432] [433..648]
          *   [649..864] [865..1080]
          */
-        task_create_sp->add_param(index_start*split_screen_h + 1);
-        task_create_sp->add_param(index_end*split_screen_h);
+        task_create_sp->set_param(1,index_start*split_screen_h + 1);
+        task_create_sp->set_param(2,index_end*split_screen_h);
 
         task_next->wait_for(task_create_sp);
         task_create_sp->wait_for(task_create_pp);
@@ -521,9 +521,9 @@
                 task_draw = manager->create_task(DrawSpan);
                 task_draw->add_inData(spack, sizeof(SpanPack));
 
-                task_draw->add_param(0,
+                task_draw->set_param(0,
                     (memaddr)&pixels[(startx-1) + this->width*(starty-1)]);
-                task_draw->add_param(1,this->width);
+                task_draw->set_param(1,this->width);
 
 		for (int i = 0; i < rangey; i++) {
 		    task_draw->add_outData(
@@ -539,9 +539,9 @@
 				break;
             }
 
-            task_draw->add_param(2,startx);
-            task_draw->add_param(3,endx);
-            task_draw->add_param(4,rangey);
+            task_draw->set_param(2,startx);
+            task_draw->set_param(3,endx);
+            task_draw->set_param(4,rangey);
             task_draw->set_cpu(SPE_ANY);
             task_next->wait_for(task_draw);
             task_draw->spawn();
--- a/Renderer/Test/Makefile.def	Sun Nov 15 04:56:09 2009 +0900
+++ b/Renderer/Test/Makefile.def	Mon Nov 16 10:59:55 2009 +0900
@@ -1,7 +1,7 @@
 
 CERIUM = ../..
 
-ABI = -m32
+ABI = -m64
 CC      = g++
 CFLAGS  = -g -Wall $(ABI)  # -O -DDEBUG
 
--- a/TaskManager/ChangeLog	Sun Nov 15 04:56:09 2009 +0900
+++ b/TaskManager/ChangeLog	Mon Nov 16 10:59:55 2009 +0900
@@ -1,3 +1,8 @@
+2009-11-14 Shinji KONO <kono@ie.u-ryukyu.ac.jp>
+
+   やっぱり、TaskList の存在が許せない。あったとしても不定長でしょう。
+   無駄なコピーが多すぎる。
+
 2009-11-14 Shinji KONO <kono@ie.u-ryukyu.ac.jp>
 
     Scheduler / TaskManger / TaskManagerImpl の区別が不明
--- a/TaskManager/Fifo/FifoDmaManager.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/TaskManager/Fifo/FifoDmaManager.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -23,8 +23,6 @@
 void
 FifoDmaManager::dma_wait(uint32 mask)
 {
-    //spu_writech(MFC_WrTagMask, 1 << mask);
-    //spu_mfcstat(MFC_TAG_UPDATE_ALL);
 }
 
 void
--- a/TaskManager/Fifo/FifoTaskManagerImpl.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/TaskManager/Fifo/FifoTaskManagerImpl.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -67,11 +67,6 @@
     taskQueueImpl = tm-> taskQueueImpl ;
     htaskImpl     = tm-> htaskImpl     ;
     waitTaskQueue     = NULL;   // mail_check で外から設定される
-//    waitTaskQueue     = tm->waitTaskQueue; 
-//    activeTaskQueue     = NULL; // CellTaskManagerImple 側を使う
-
-    // waitTaskQueue     = tm->waitTaskQueue; 
-    // activeQueue は?
 
     mainTaskList = taskListImpl->create();
 
@@ -106,18 +101,10 @@
     // printf("active task queue length = %d\n",activeTaskQueue->length());
     while (HTaskPtr htask = activeTaskQueue->poll()) {
         task = &list->tasks[list->length++];
-#if 0
-        task->command  = htask->command;
-        task->inData   = htask->inData;
-        task->outData  = htask->outData;
-        task->self     = (unsigned int)htask;
-	// param は?
-#else
 	// inData, outData を内蔵にしたので実は、結構でかくない?
 	// 268 byte 程度だが... 不要な分(設定してない inData, outData, param 
         // とかもコピーしてるね。rbuf/wbuf の意味を変えてしまったわけか。
         memcpy(task, (Task*)htask, sizeof(Task));
-#endif
 
 
         if (list->length >= TASK_MAX_SIZE) {
@@ -176,7 +163,7 @@
     in_mail_list = MailManager::append_mailQueue(in_mail_list, list_mail);
 
     // EXIT_COMMAND (番兵的な意味で)
-    sentinel  = mailManager->create(MY_SPE_COMMAND_EXIT);
+    sentinel  = mailManager->create((memaddr)MY_SPE_COMMAND_EXIT);
     in_mail_list = MailManager::append_mailQueue(in_mail_list, sentinel);
 
     // scheduler は受け取ったメールを元に実行する
@@ -209,7 +196,7 @@
 {
     MailQueuePtr q = mail_list;
     MailQueuePtr d;
-    unsigned int data;
+    memaddr data;
 
     while (q) {
         data = q->data;
@@ -223,9 +210,9 @@
          * 下のように data > MY_SPE_NOP とかしています。
          * 一目でよくわからない書き方なんで、直したいところですが。。。
          */
-        if (data == MY_SPE_STATUS_READY) {
+        if (data == (memaddr)MY_SPE_STATUS_READY) {
             __debug_ppe("mail_check(): Task List finish\n");
-        } else if (data > MY_SPE_NOP) {
+        } else if (data != (memaddr)MY_SPE_NOP) {
             __debug_ppe("mail_check(): recv from 0x%x\n", data);
 	    // post_func を先に実行しないと、systask_finish が active_queue
 	    // 移されてから、wait_for されるという事態が起きることがある。
--- a/TaskManager/Makefile.def	Sun Nov 15 04:56:09 2009 +0900
+++ b/TaskManager/Makefile.def	Mon Nov 16 10:59:55 2009 +0900
@@ -27,10 +27,10 @@
 IMPL_CELL_SRCS = $(IMPL_FIFO_SRCS) $(wildcard $(IMPL_CELL_DIR)/*.cc)
 IMPL_CELL_OBJS = $(IMPL_CELL_SRCS:.cc=.o)
 
-ABI = -m32
+ABI = -m64
 
 CC     = g++   
-CFLAGS = -Wall `sdl-config --cflags` -g $(ABI)  -O9 
+CFLAGS = -Wall `sdl-config --cflags` -g $(ABI)  # -O9 
 LIBS   = 
 
 INCLUDE = -I../include/TaskManager
--- a/TaskManager/include/base.h	Sun Nov 15 04:56:09 2009 +0900
+++ b/TaskManager/include/base.h	Mon Nov 16 10:59:55 2009 +0900
@@ -6,7 +6,6 @@
 
 
 #ifdef __SPU__
-//#if 0
 #  define BASE_NEW_DELETE(T)						\
     /* override new/detele */                                           \
     static void* operator new(size_t size) {                            \
--- a/TaskManager/include/types.h	Sun Nov 15 04:56:09 2009 +0900
+++ b/TaskManager/include/types.h	Mon Nov 16 10:59:55 2009 +0900
@@ -14,7 +14,8 @@
 typedef uint64_t memaddr;
 #else
 //  In LP64, sizeof(unsigned long)==8
-typedef unsigned long memaddr;
+// typedef unsigned long memaddr;
+typedef char* memaddr;
 #endif
 #endif
 
--- a/TaskManager/kernel/memory/MemHash.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/TaskManager/kernel/memory/MemHash.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -8,11 +8,12 @@
 };
 
 int
-MemHash::hash(memaddr data)
+MemHash::hash(memaddr data0)
 {
+    long data = (long)data0;
     int value = 0;
     int n = 0;
-    int key;
+    long key;
 
     for (uint32 i = 0; i < sizeof(memaddr) * 2; i ++) {
         key = data & 0xf;
@@ -25,9 +26,6 @@
 
 MemHash::MemHash()
 {
-  //hashSize = 263;
-  //tableSize = sizeof(MemorySegmentPtr)*hashSize;
-
     table = (MemorySegmentPtr*)malloc(tableSize);
     clear();
 }
--- a/TaskManager/kernel/ppe/DmaBuffer.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/TaskManager/kernel/ppe/DmaBuffer.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -6,50 +6,23 @@
 #define ALIGN_DOWN(v, align) ((v)&(-align))
 #define ALIGN_UP(v, align)   ALIGN_DOWN((v)+((align)-1), align)
 
-void*
-new_align(int alignment, int size)
-{
-    char *nonalign;
-    char *align;
-
-    nonalign = new char[size + sizeof(void*) + alignment - 1];
-    align = (char*)(ALIGN_UP((memaddr)nonalign+sizeof(void*),alignment));
-    *((void**)align - 1) = (void*)nonalign;
-
-    return align;
-}
-
-void
-free_align(void *ptr)
-{
-    char *real;
-
-    if (ptr != NULL) {
-        real = (char*)(*((void**)(ptr)-1));
-        delete real;
-    }
-}
 
 DmaBuffer::DmaBuffer(int size)
 {
+#ifdef NO_POSIX_MEMALIGN
     buffer[0] = malloc(size);
     buffer[1] = malloc(size);
-
-    //posix_memalign(&buffer[0], DEFAULT_ALIGNMENT, size);
-    //posix_memalign(&buffer[1], DEFAULT_ALIGNMENT, size);
-
-    //buffer[0] = new_align(DEFAULT_ALIGNMENT, size);
-    //buffer[1] = new_align(DEFAULT_ALIGNMENT, size);
-
+#else
+    posix_memalign(&buffer[0],64,size);
+    posix_memalign(&buffer[1],64,size);
+#endif
     flag = 0;
 }
 
 DmaBuffer::~DmaBuffer(void)
 {
-    //free(buffer[0]);
-    //free(buffer[1]);
-    free_align(buffer[0]);
-    free_align(buffer[1]);
+    free(buffer[0]);
+    free(buffer[1]);
 }
 
 void
--- a/TaskManager/kernel/ppe/Task.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/TaskManager/kernel/ppe/Task.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -39,7 +39,7 @@
 
 // こちらのAPIは、受け側と出力側での対応を良く見れない。廃止の方向。
 int
-Task::add_param(memaddr _param)
+Task::add_param0(memaddr _param)
 {
     if (param_size >= MAX_PARAMS) return -1;
     
@@ -48,7 +48,7 @@
 }
 
 int
-Task::add_param(int index, memaddr _param)
+Task::set_param0(int index, memaddr _param)
 {
     if (index >= MAX_PARAMS) return -1;
     
--- a/TaskManager/kernel/ppe/Task.h	Sun Nov 15 04:56:09 2009 +0900
+++ b/TaskManager/kernel/ppe/Task.h	Mon Nov 16 10:59:55 2009 +0900
@@ -4,30 +4,27 @@
 #include "base.h"
 #include "types.h"
 #include "ListData.h"
+#include "SimpleTask.h"
 
 #define MAX_PARAMS 8
 
-class TaskQueue;
-
-class Task {
+class Task : public SimpleTask {
 public: // variables
 
     BASE_NEW_DELETE(Task);
 
-    int command;         // 4 byte
-    memaddr self;         // 4 byte (or 8byte on 64bit mode)
-
-    int param_size;        // 4 byte
-    memaddr param[MAX_PARAMS]; // 4*MAX_PARAMS byte
-    ListData inData  __attribute__ ((aligned (DEFAULT_ALIGNMENT)));  // 4 byte 64bit であるべき
-    ListData outData  __attribute__ ((aligned (DEFAULT_ALIGNMENT))); // 4 byte 64bit であるべき
+    ListData inData  __attribute__ ((aligned (DEFAULT_ALIGNMENT)));  
+    ListData outData  __attribute__ ((aligned (DEFAULT_ALIGNMENT))); 
 
 public: // functions
     int add_inData_t(memaddr addr, int size);  // unsigned int ではなく 64bit
     int add_outData_t(memaddr addr, int size); // unsigned int ではなく 64bit
     int add_data(ListData &list, memaddr addr, int size);
-    int add_param(memaddr param);  // obsolete. do not use.
-    int add_param(int index, memaddr param);
+    int add_param0(memaddr param);  // obsolete. do not use.
+    int set_param0(int index, memaddr param);
+
+#define add_param(param) add_param0((memaddr)(param))
+#define set_param(index,param) set_param0(index, (memaddr) (param))
 
 #define add_inData(addr, size)			\
     add_inData_t((memaddr)(addr), (size));
--- a/TaskManager/kernel/ppe/TaskManager.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/TaskManager/kernel/ppe/TaskManager.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -8,7 +8,6 @@
 TaskManager::~TaskManager()
 {
     delete m_impl;
-    delete gen_random;
 }
 
 /**
--- a/TaskManager/kernel/ppe/TaskManager.h	Sun Nov 15 04:56:09 2009 +0900
+++ b/TaskManager/kernel/ppe/TaskManager.h	Mon Nov 16 10:59:55 2009 +0900
@@ -18,7 +18,6 @@
     /* variables */
     TaskManagerImpl *m_impl;
     void (*tm_end)(TaskManager *manager);
-    RandomPtr gen_random;
 
     /* user function */
     HTaskPtr create_task(int cmd);
--- a/TaskManager/kernel/ppe/TaskQueue.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/TaskManager/kernel/ppe/TaskQueue.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -8,22 +8,3 @@
     waiter = NULL;
 }
 
-/*
- *  こんなものは使いたくないが、renew task/task group が
- *  が、あまりに ad-hoc で直し切れないので、とりあえず、
- *  存続。TaskQueueInfo は SchedTask で使うにはでかすぎる。
- */
-TaskQueuePtr
-TaskQueue::append(TaskQueuePtr list, TaskQueuePtr q)
-{
-    TaskQueuePtr p = list;
-
-    if (!p) {
-       return q;
-    } else {
-       while(p->next) p = p->next;
-       p->next = q;
-       return list;
-    }
-}
-
--- a/TaskManager/kernel/ppe/TaskQueue.h	Sun Nov 15 04:56:09 2009 +0900
+++ b/TaskManager/kernel/ppe/TaskQueue.h	Mon Nov 16 10:59:55 2009 +0900
@@ -14,8 +14,6 @@
     HTask *task;
     TaskQueue *waiter;
 
-    static TaskQueue* append(TaskQueue* list, TaskQueue* q);
-
     TaskQueue *next;
     TaskQueue *prev;
 
--- a/TaskManager/kernel/schedule/SchedMail.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/TaskManager/kernel/schedule/SchedMail.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -6,13 +6,12 @@
 SchedTaskBase*
 SchedMail::next(Scheduler *scheduler, SchedTaskBase *p)
 {
-    // delete p;
     
     params_addr = scheduler->mail_read();
 
     __debug("[SchedMail:%s]\n", __FUNCTION__);
-    // if 文なくすには・・・関数ポインタ?
-    if ((int)params_addr == MY_SPE_COMMAND_EXIT) {
+
+    if ((memaddr)params_addr == (memaddr)MY_SPE_COMMAND_EXIT) {
 	return new SchedExit();
     } else {
 	return new SchedTaskList(params_addr, scheduler);
--- a/TaskManager/kernel/schedule/SchedMail.h	Sun Nov 15 04:56:09 2009 +0900
+++ b/TaskManager/kernel/schedule/SchedMail.h	Mon Nov 16 10:59:55 2009 +0900
@@ -13,7 +13,7 @@
     BASE_NEW_DELETE(SchedMail);
 
     /* variables */
-    unsigned int params_addr;
+    memaddr params_addr;
 
     /* functions */
     SchedTaskBase* next(Scheduler *, SchedTaskBase *);
--- a/TaskManager/kernel/schedule/SchedNop2Ready.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/TaskManager/kernel/schedule/SchedNop2Ready.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -14,7 +14,6 @@
 {
     __debug("[SchedNop2Ready:%s]\n", __FUNCTION__);
 
-    //scheduler->mail_write(MY_SPE_STATUS_READY);
 }
 
 SchedTaskBase*
@@ -22,6 +21,6 @@
 {
     __debug("[SchedNop2Ready:%s]\n", __FUNCTION__);
     
-    scheduler->mail_write(MY_SPE_STATUS_READY);
+    scheduler->mail_write((memaddr)MY_SPE_STATUS_READY);
     return new SchedMail();
 }
--- a/TaskManager/kernel/schedule/SchedTask.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/TaskManager/kernel/schedule/SchedTask.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -126,7 +126,7 @@
     scheduler->dma_wait(DMA_WRITE);
     free(writebuf);
 
-    scheduler->mail_write((int)task->self);
+    scheduler->mail_write((memaddr)task->self);
 }
 
 
@@ -152,7 +152,7 @@
         } else {
 	    // 新しいリストに取り掛かる
             return createSchedTaskList(nextList, scheduler,
-                                       SCHED_TASKLIST_NORMAL);
+                                       0);
         }
     }
 }
@@ -181,7 +181,7 @@
 /**
  * get_input(index) のアドレスを返す
  */
-uint32
+memaddr
 SchedTask::get_inputAddr(int index)
 {
     return inListData->element[index].addr;
@@ -212,7 +212,7 @@
 /**
  * get_output(index) のアドレスを返す
  */
-uint32
+memaddr
 SchedTask::get_outputAddr(int index)
 {
     return outListData->element[index].addr;
@@ -227,7 +227,7 @@
     return outListData->element[index].size;
 }
 
-int
+memaddr
 SchedTask::get_param(int index)
 {
     return task->param[index];
@@ -276,12 +276,12 @@
 
 
 void
-SchedTask::dma_load(void *buf, uint32 addr, uint32 size, uint32 mask) {
+SchedTask::dma_load(void *buf, memaddr addr, uint32 size, uint32 mask) {
     scheduler->dma_load(buf, addr, size, mask);
 }
 
 void
-SchedTask::dma_store(void *buf,uint32 addr, uint32 size, uint32 mask) {
+SchedTask::dma_store(void *buf,memaddr addr, uint32 size, uint32 mask) {
     scheduler->dma_store(buf, addr, size, mask);
 }
 
--- a/TaskManager/kernel/schedule/SchedTask.h	Sun Nov 15 04:56:09 2009 +0900
+++ b/TaskManager/kernel/schedule/SchedTask.h	Mon Nov 16 10:59:55 2009 +0900
@@ -70,12 +70,12 @@
 
     void* get_input(void *buff, int index);
     void* get_output(void *buff, int index);
-    uint32 get_inputAddr(int index);
-    uint32 get_outputAddr(int index);
+    memaddr get_inputAddr(int index);
+    memaddr get_outputAddr(int index);
     // 書き出しを追加する API がない... 
     int get_inputSize(int index);
     int get_outputSize(int index);
-    int get_param(int index);
+    memaddr get_param(int index);
 
 
 
@@ -102,8 +102,8 @@
     }
 
     /* これは禁止するべき */
-    void dma_load(void *buf, uint32 addr, uint32 size, uint32 mask);
-    void dma_store(void *buf,uint32 addr, uint32 size, uint32 mask);
+    void dma_load(void *buf, memaddr addr, uint32 size, uint32 mask);
+    void dma_store(void *buf,memaddr addr, uint32 size, uint32 mask);
     void dma_wait(uint32 mask);
     void show_dma_wait();
 
--- a/TaskManager/kernel/schedule/SchedTaskList.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/TaskManager/kernel/schedule/SchedTaskList.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -19,17 +19,15 @@
 createSchedTaskList(memaddr next_list, Scheduler* scheduler, int renew_flag)
 {
     SchedTaskList* sched = new SchedTaskList(next_list, scheduler);
-    sched->flag_renewTaskList = renew_flag;
     return sched;
 }
 
-SchedTaskList::SchedTaskList(unsigned int addr, Scheduler *sched)
+SchedTaskList::SchedTaskList(memaddr addr, Scheduler *sched)
 {
     params_addr = addr;
     list = NULL;
     scheduler = sched;
 
-    flag_renewTaskList = 0;
 }
 
 
@@ -38,13 +36,9 @@
 {
     __debug("[SchedTaskList:%s]\n", __FUNCTION__);
 
-    if (flag_renewTaskList == SCHED_TASKLIST_NORMAL) {
 	list = scheduler->get_curListBuf();
 	scheduler->dma_load(list, params_addr,
 			    sizeof(TaskList), DMA_READ_TASKLIST);
-    } else {
-	list = (TaskListPtr)params_addr;
-    }
 }
 
 SchedTaskBase*
@@ -57,11 +51,6 @@
     scheduler->dma_wait(DMA_READ_TASKLIST);
     if (list->length < 1) {
 	nextSched = new SchedNop2Ready(scheduler);
-
-	if (flag_renewTaskList == SCHED_TASKLIST_RENEW) {
-	    free(list);
-	}
-
     } else {
 	TaskPtr nextTask = &list->tasks[0];
 	nextSched = createSchedTask(scheduler, nextTask);
--- a/TaskManager/kernel/schedule/SchedTaskList.h	Sun Nov 15 04:56:09 2009 +0900
+++ b/TaskManager/kernel/schedule/SchedTaskList.h	Mon Nov 16 10:59:55 2009 +0900
@@ -10,17 +10,15 @@
 class SchedTaskList : public SchedTaskBase {
 public:
     /* constructor */
-    SchedTaskList(unsigned int addr, Scheduler *sched);
+    SchedTaskList(memaddr addr, Scheduler *sched);
 
     BASE_NEW_DELETE(SchedTaskList);
 
     /* variables */
-    unsigned int params_addr;
+    memaddr params_addr;
     TaskListPtr list;
     Scheduler *scheduler;
 
-    int flag_renewTaskList;
-
     /* functions */
     SchedTaskBase* next(Scheduler *, SchedTaskBase *);
     
@@ -34,9 +32,6 @@
 
 };
 
-const int SCHED_TASKLIST_NORMAL = 0;
-const int SCHED_TASKLIST_RENEW  = 1;
-
 extern SchedTaskList* createSchedTaskList(memaddr, Scheduler*, int);
 
 #endif
--- a/TaskManager/kernel/schedule/Scheduler.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/TaskManager/kernel/schedule/Scheduler.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -91,13 +91,13 @@
 
 
 void
-Scheduler::dma_load(void *buf, uint32 addr, uint32 size, uint32 mask)
+Scheduler::dma_load(void *buf, memaddr addr, uint32 size, uint32 mask)
 {
     connector->dma_load(buf, addr, size, mask);
 }
 
 void
-Scheduler::dma_store(void *buf, uint32 addr, uint32 size, uint32 mask)
+Scheduler::dma_store(void *buf, memaddr addr, uint32 size, uint32 mask)
 {
     connector->dma_store(buf, addr, size, mask);
 }
@@ -122,12 +122,12 @@
 }
 
 void
-Scheduler::mail_write(uint32 data)
+Scheduler::mail_write(memaddr data)
 {
     connector->mail_write(data);
 }
 
-uint32
+memaddr
 Scheduler::mail_read()
 {
     return connector->mail_read();
--- a/TaskManager/kernel/schedule/Scheduler.h	Sun Nov 15 04:56:09 2009 +0900
+++ b/TaskManager/kernel/schedule/Scheduler.h	Mon Nov 16 10:59:55 2009 +0900
@@ -114,13 +114,13 @@
     void wait_segment(MemorySegment *s);
 
     /* DMA Transfer */
-    void dma_load(void *buf, uint32 addr, uint32 size, uint32 mask);
-    void dma_store(void *buf,uint32 addr, uint32 size, uint32 mask);
+    void dma_load(void *buf, memaddr addr, uint32 size, uint32 mask);
+    void dma_store(void *buf,memaddr addr, uint32 size, uint32 mask);
     void dma_wait(uint32 mask);
     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 mail_write(memaddr data);
+    memaddr mail_read();
     void dma_loadList(ListDataPtr list, void *, uint32 mask);
     void dma_storeList(ListDataPtr list, void *, uint32 mask);
 
--- a/TaskManager/kernel/schedule/TaskGroup.cc	Sun Nov 15 04:56:09 2009 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-#include "TaskGroup.h"
-#include <stdlib.h>
-
-void
-TaskGroup::add(TaskPtr add_task) {
-    struct groupQueue *q = (struct groupQueue *)malloc(sizeof(struct groupQueue));
-    q->next = group;
-    q->task = add_task;
-    group = q;
-}
-
-void
-TaskGroup::remove(TaskPtr delete_task) {
-    struct groupQueue * p = group;
-    struct groupQueue * p1;
-
-    if (p == NULL) return;
-
-    if (p->task == delete_task) {
-	group = group->next;
-	free( p);
-    } else {
-	p1 = p->next;
-	while (p1 && p1->task != delete_task) {
-	    p1 = p1->next;
-	    p = p->next;
-	}
-	if (p1) {
-	    p->next = p1->next;
-	    free( p1);
-	}
-    }
-}
-
-/**
- * 自分が持つ TaskGroup に Task が残っていれば NULL を返す。
- * もう全てのタスクが終了していれば、この TaskGroup を作った
- * (一番最初にタスク内タスク生成を行った)タスクが PPE に返すべきだった
- * command を返す。
- */
-unsigned int
-TaskGroup::status() {
-    /**                                                                     
-     * bool の                                                              
-     *  true == 1;                                                          
-     *  false == 0;                                                         
-     * って保証されてるんだっけ?                                           
-     */
-#if 1
-    return (group == NULL) * command;
-#else
-    if (group.empty()) {
-	return command;
-    } else {
-	return 0;
-    }
-#endif
-}
--- a/TaskManager/kernel/schedule/TaskGroup.h	Sun Nov 15 04:56:09 2009 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-#ifndef INCLUDED_TASK_GROUP
-#define INCLUDED_TASK_GROUP
-
-#include "base.h"
-#include "Task.h"
-
-class TaskGroup {
-public:
-
-    struct groupQueue {
-	struct groupQueue *next;
-	TaskPtr task;
-    } *group;
-
-    TaskGroup(): group(NULL) {}
-
-    BASE_NEW_DELETE(TaskGroup);
-
-    // この command を引き渡すだけのためのオブジェクトらしい
-
-    unsigned int command;
-
-    /**
-     * 待つ Task を追加
-     */
-    void add(TaskPtr add_task);
-
-    /**
-     * 終了した Task を group から削除
-     */
-    void remove(TaskPtr delete_task);
-
-    /**
-     * 空 (待つタスクが無い) の時が、この TaskGroup が持つ、
-     * PPE に送るべきコマンドを返す。
-     * まだ待つべきタスクがある場合は 0 を返す
-     */
-    unsigned int status();
-};
-
-typedef TaskGroup* TaskGroupPtr;
-
-#endif
--- a/example/HelloWorld/Makefile.def	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/HelloWorld/Makefile.def	Mon Nov 16 10:59:55 2009 +0900
@@ -7,7 +7,7 @@
 # ex  linux/ps3
 CERIUM = ../../../Cerium
 
-CC      = g++ -m32
+CC      = g++ -m64
 CFLAGS  = -g -Wall -O9
 
 INCLUDE = -I${CERIUM}/include/TaskManager -I. -I..
--- a/example/HelloWorld/main.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/HelloWorld/main.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -50,7 +50,7 @@
 	 * Set 32bits parameter
 	 *   add_param(32bit parameter);
 	 */
-	hello->add_param(i);
+	hello->add_param((memaddr)i);
 
 	hello->spawn();
     }
--- a/example/HelloWorld/ppe/Hello.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/HelloWorld/ppe/Hello.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -9,7 +9,7 @@
 static int
 run(SchedTask *smanager, void *rbuf, void *wbuf)
 {
-    int task_id = smanager->get_param(0);
+    int task_id = (long)smanager->get_param(0);
 
     smanager->printf("[%d] Hello, World!!\n", task_id);
 
--- a/example/MemList/Makefile.macosx	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/MemList/Makefile.macosx	Mon Nov 16 10:59:55 2009 +0900
@@ -1,6 +1,6 @@
 include ./Makefile.def
 
-CC += -m32
+CC += -m64
 SRCS_TMP = $(wildcard *.cc)
 SRCS_EXCLUDE = 
 SRCS = $(filter-out $(SRCS_EXCLUDE),$(SRCS_TMP))
--- a/example/basic/Makefile.macosx	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/basic/Makefile.macosx	Mon Nov 16 10:59:55 2009 +0900
@@ -12,7 +12,7 @@
 TASK_OBJS = $(TASK_SRCS:.cc=.o)
 
 LIBS += -lFifoManager `sdl-config --libs`
-CC += -m32
+CC += -m64
 
 .SUFFIXES: .cc .o
 
--- a/example/basic/main.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/basic/main.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -85,7 +85,7 @@
      * Set 32bits parameter
      *   add_param(32bit parameter);
      */
-    twice->add_param(length);
+    twice->add_param((memaddr)length);
 
     /*
      * set_post() で ppe task を渡せるようにしたい
--- a/example/basic/ppe/Twice.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/basic/ppe/Twice.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -11,11 +11,11 @@
 {
     int *i_data;
     int *o_data;
-    int length;
+    long length;
 
     i_data = (int*)s->get_input(rbuf, 0);
     o_data = (int*)s->get_output(wbuf, 0);
-    length = s->get_param(0);
+    length = (long)s->get_param(0);
     
     for (int i = 0; i < length; i++) {
 	o_data[i] = i_data[i] * 2;
--- a/example/dependency_task/Makefile.macosx	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/dependency_task/Makefile.macosx	Mon Nov 16 10:59:55 2009 +0900
@@ -1,6 +1,6 @@
 include ./Makefile.def
 
-CC += -m32
+CC += -m64
 
 SRCS_TMP = $(wildcard *.cc)
 SRCS_EXCLUDE =  # ե
--- a/example/dependency_task/main.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/dependency_task/main.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -27,15 +27,15 @@
     // exec1,2 が計算した配列を見る
     t_print = manager->create_task(TASK_PRINT);
     t_print->add_inData(idata, sizeof(int)*length*2);
-    t_print->add_param(length*2);
+    t_print->add_param((memaddr)(length*2));
 
     // idata を二つに分けて計算する
     for (int i = 0; i < 2; i++) {
 	t_exec[i] = manager->create_task(TASK_EXEC);
 	t_exec[i]->add_inData(&idata[length*i], sizeof(int)*length);
 	t_exec[i]->add_outData(&idata[length*i], sizeof(int)*length);
-	t_exec[i]->add_param(length);
-	t_exec[i]->add_param(13*(i+1));
+	t_exec[i]->add_param((memaddr)length);
+	t_exec[i]->add_param((memaddr)(13*(i+1)));
 	t_exec[i]->set_cpu(SPE_ANY);
 
 	if (depend_flg)
--- a/example/dependency_task/ppe/Exec.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/dependency_task/ppe/Exec.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -10,8 +10,8 @@
 {
     int *idata = (int*)s->get_input(rbuf, 0);
     int *odata = (int*)s->get_output(wbuf, 0);
-    int length = s->get_param(0);
-    int calnum = s->get_param(1);
+    long length = (long)s->get_param(0);
+    long calnum = (long)s->get_param(1);
 
     for (int i = 0; i < length; i++) {
 	odata[i] = idata[i] + calnum;
--- a/example/dependency_task/ppe/Print.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/dependency_task/ppe/Print.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -10,7 +10,7 @@
 run(SchedTask *s, void *rbuf, void *wbuf)
 {
     int *idata = (int*)s->get_input(rbuf, 0);
-    int length = s->get_param(0);
+    long length = (long)s->get_param(0);
 
     s->printf("[TASK_PRINT]\n");
     for (int i = 0; i < length; i++) {
--- a/example/get_segment/Makefile.macosx	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/get_segment/Makefile.macosx	Mon Nov 16 10:59:55 2009 +0900
@@ -1,6 +1,6 @@
 include ./Makefile.def
 
-CC += -m32 
+CC += -m64 
 
 SRCS_TMP = $(wildcard *.cc)
 SRCS_EXCLUDE =  # ե
--- a/example/get_segment/main.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/get_segment/main.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -51,8 +51,8 @@
 	 * Set 32bits parameter
 	 *   add_param(32bit parameter);
 	 */
-	hello->add_param(i);
-	hello1->add_param(i);
+	hello->set_param(0,(memaddr)i);
+	hello1->set_param(0,(memaddr)i);
 
 	hello->spawn();
 	hello1->spawn();
--- a/example/get_segment/ppe/Hello.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/get_segment/ppe/Hello.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -10,7 +10,7 @@
 static int
 run(SchedTask *smanager, void *rbuf, void *wbuf)
 {
-    int task_id = smanager->get_param(0);
+    long task_id = (long)smanager->get_param(0);
     int *ptr = 0;
 #if 1
     ptr = (int*)smanager->allocate(SIZE);
@@ -29,13 +29,13 @@
     next = (void *)smanager->mainMem_get(0);
 
     smanager->dma_wait(PP_STORE);
-    smanager->dma_store(ptr, (uint32)next,
+    smanager->dma_store(ptr, (memaddr)next,
 		SIZE, PP_STORE);
 #endif
 
 
     smanager->fprintf(smanager->stderr_,"sizeof(int) = [%d] sizeof(void*)=[%d]\n", (int)sizeof(int),(int)sizeof(void*));
-    smanager->fprintf(smanager->stderr_,"[%d] Main Mem %0x len %d\n", task_id, (unsigned int)next,(int)SIZE);
+    smanager->fprintf(smanager->stderr_,"[%d] Main Mem %0lx len %d\n", task_id, (long)next,(int)SIZE);
 
     return 0;
 }
--- a/example/get_segment/ppe/Hello1.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/get_segment/ppe/Hello1.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -10,7 +10,7 @@
 static int
 run(SchedTask *smanager, void *rbuf, void *wbuf)
 {
-    int task_id = smanager->get_param(0);
+    long task_id = (long)smanager->get_param(0);
     int *ptr = 0;
 #if 1
     ptr = (int*)smanager->allocate(SIZE);
@@ -29,13 +29,12 @@
     next = (void *)smanager->mainMem_get(0);
 
     smanager->dma_wait(PP_STORE);
-    smanager->dma_store(ptr, (uint32)next,
-		SIZE, PP_STORE);
+    smanager->dma_store(ptr, (memaddr)next, SIZE, PP_STORE);
 #endif
 
 
     smanager->fprintf(smanager->stderr_,"Hello1 sizeof(int) = [%d] sizeof(void*)=[%d]\n", (int)sizeof(int),(int)sizeof(void*));
-    smanager->fprintf(smanager->stderr_,"[%d] Main Mem %0x len %d\n", task_id, (unsigned int)next,(int)SIZE);
+    smanager->fprintf(smanager->stderr_,"[%d] Main Mem %0lx len %d\n", task_id, (unsigned long)next,(int)SIZE);
 
     return 0;
 }
--- a/example/mainMem/Makefile.macosx	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/mainMem/Makefile.macosx	Mon Nov 16 10:59:55 2009 +0900
@@ -1,6 +1,6 @@
 include ./Makefile.def
 
-CC += -m32
+CC += -m64
 
 SRCS_TMP = $(wildcard *.cc)
 SRCS_EXCLUDE =  # ե
--- a/example/mainMem/main.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/mainMem/main.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -48,7 +48,7 @@
 	 * Set 32bits parameter
 	 *   add_param(32bit parameter);
 	 */
-	hello->add_param(i);
+	hello->add_param((memaddr)i);
 
 	hello->spawn();
     }
--- a/example/mainMem/ppe/Hello.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/mainMem/ppe/Hello.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -11,7 +11,7 @@
 static int
 run(SchedTask *smanager, void *rbuf, void *wbuf)
 {
-    int task_id = smanager->get_param(0);
+    long task_id = (long)smanager->get_param(0);
     int *ptr = 0;
 #if 1
     ptr = (int*)smanager->allocate(SIZE);
@@ -30,13 +30,13 @@
     next = (void *)smanager->mainMem_get(0);
 
     smanager->dma_wait(PP_STORE);
-    smanager->dma_store(ptr, (uint32)next,
+    smanager->dma_store(ptr, (memaddr)next,
 		SIZE, PP_STORE);
 #endif
 
 
     smanager->fprintf(smanager->stderr_,"sizeof(int) = [%d] sizeof(void*)=[%d]\n", (int)sizeof(int),(int)sizeof(void*));
-    smanager->fprintf(smanager->stderr_,"[%d] Main Mem %0x len %d\n", task_id, (unsigned int)next,(int)SIZE);
+    smanager->fprintf(smanager->stderr_,"[%d] Main Mem %0lx len %d\n", task_id, (unsigned long)next,(int)SIZE);
 
     return 0;
 }
--- a/example/many_task/Makefile.macosx	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/many_task/Makefile.macosx	Mon Nov 16 10:59:55 2009 +0900
@@ -13,7 +13,7 @@
 TASK_OBJS = $(TASK_SRCS:.cc=.o)
 
 CC      = g++
-CC += -m32
+CC += -m64
 CFLAGS  = -g -Wall# -O9 #-DDEBUG
 
 INCLUDE = -I${CERIUM}/include/TaskManager -I. -I..
--- a/example/many_task/ppe/QuickSort.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/many_task/ppe/QuickSort.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -11,7 +11,7 @@
 run(SchedTask *s, void* rbuff, void* wbuff) {
     // copy value
     int begin	= 0;
-    int end = s->get_param(0);
+    long end = (long)s->get_param(0);
 
     Data *r_data = (Data*)s->get_input(rbuff, 0);
     Data *w_data = (Data*)s->get_output(wbuff, 0);
--- a/example/many_task/sort.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/many_task/sort.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -48,7 +48,7 @@
 sort_restart(SchedTask *s, void *d, void *e)
 {
     static int cnt = 0;
-    int max = (int)d;
+    long max = (long)d;
 
     if (++cnt == max) {	
 	cnt = 0;
@@ -69,7 +69,7 @@
 	fsort[i] = manager->create_task(QUICK_SORT);
 	fsort[i]->add_inData(&data[i*block_num], sizeof(Data)*block_num);
 	fsort[i]->add_outData(&data[i*block_num], sizeof(Data)*block_num);
-	fsort[i]->add_param(block_num);
+	fsort[i]->set_param(0,(memaddr)block_num);
 	fsort[i]->set_cpu(SPE_ANY);
     }
 
@@ -80,7 +80,7 @@
 	fsort[i] = manager->create_task(QUICK_SORT);
 	fsort[i]->add_inData(&data[i*block_num], sizeof(Data)*last_block_num);
 	fsort[i]->add_outData(&data[i*block_num], sizeof(Data)*last_block_num);
-	fsort[i]->add_param(last_block_num);
+	fsort[i]->set_param(0,(memaddr)last_block_num);
 	fsort[i]->set_cpu(SPE_ANY);
    }
 
@@ -93,7 +93,7 @@
 				 sizeof(Data)*block_num);
 	    bsort[i]->add_outData(&data[i*block_num+half_block_num],
 				  sizeof(Data)*block_num);
-	    bsort[i]->add_param(block_num);
+	    bsort[i]->set_param(0,(memaddr)block_num);
 	    bsort[i]->set_cpu(SPE_ANY);
 	}
 
@@ -105,7 +105,7 @@
 				 sizeof(Data)*last_half_block_num);
 	    bsort[i]->add_outData(&data[i*block_num+half_block_num],
 				  sizeof(Data)*last_half_block_num);
-	    bsort[i]->add_param(last_half_block_num);
+	    bsort[i]->set_param(0,(memaddr)last_half_block_num);
 	    bsort[i]->set_cpu(SPE_ANY);	
 	}
 	
--- a/example/post_function/Makefile.macosx	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/post_function/Makefile.macosx	Mon Nov 16 10:59:55 2009 +0900
@@ -12,7 +12,7 @@
 TASK_OBJS = $(TASK_SRCS:.cc=.o)
 
 LIBS += -lFifoManager `sdl-config --libs`
-CC += -m32
+CC += -m64
 
 .SUFFIXES: .cc .o
 
--- a/example/post_function/main.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/post_function/main.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -16,13 +16,13 @@
 void
 func1(SchedTask *m, void *p, void *q)
 {
-    int i = (int)p;
+    long i = (long)p;
 
-    printf("post function : %d\n", i--);
+    printf("post function : %ld\n", i--);
 
     if (i > 0) {
 	HTaskPtr next = manager->create_task(HELLO_TASK);
-	next->add_param(i);
+	next->set_param(0,(memaddr)i);
 	next->set_post(func1, (void*)i, 0);
 	next->set_cpu(SPE_ANY);
 	next->spawn();    
@@ -48,7 +48,7 @@
     HTaskPtr task;
 
     task = manager->create_task(HELLO_TASK);
-    task->add_param(count);
+    task->set_param(0,(memaddr)count);
     task->set_post(func1, (void*)count, 0);
     task->set_cpu(SPE_ANY);
     task->spawn();
--- a/example/post_function/ppe/Hello.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/post_function/ppe/Hello.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -9,9 +9,9 @@
 static int
 run(SchedTask *s, void *rbuf, void *wbuf)
 {
-    int id = s->get_param(0);
+    long id = (long)s->get_param(0);
 
-    s->printf("Hello, World!! post_func output %d\n", id);
+    s->printf("Hello, World!! post_func output %ld\n", id);
 
     return 0;
 }
--- a/example/renew_task/Makefile.macosx	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/renew_task/Makefile.macosx	Mon Nov 16 10:59:55 2009 +0900
@@ -12,7 +12,7 @@
 TASK_OBJS = $(TASK_SRCS:.cc=.o)
 
 LIBS += -lFifoManager `sdl-config --libs`
-CC += -m32
+CC += -m64
 
 .SUFFIXES: .cc .o
 
--- a/example/renew_task/main.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/renew_task/main.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -32,7 +32,7 @@
 	    renew = manager->create_task(RENEW_START);
 	    renew->set_cpu(SPE_ANY);
 	    renew->add_param(i);
-	    renew->add_param((int)&task_count);
+	    renew->add_param(&task_count);
 
 	    // add Active Queue
 	    renew->spawn();    
--- a/example/renew_task/ppe/RenewStart.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/renew_task/ppe/RenewStart.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -9,8 +9,8 @@
 static int
 run(SchedTask *s, void *rbuf, void *wbuf)
 {
-    int id;
-    id = s->get_param(0);
+    long id;
+    id = (long)s->get_param(0);
 
     s->printf("[PPE] ** running RenewStart %d\n", id);
 
--- a/example/share_task/Makefile.macosx	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/share_task/Makefile.macosx	Mon Nov 16 10:59:55 2009 +0900
@@ -12,7 +12,7 @@
 TASK_OBJS = $(TASK_SRCS:.cc=.o)
 
 LIBS += -lFifoManager `sdl-config --libs`
-CC += -m32
+CC += -m64
 
 .SUFFIXES: .cc .o
 
--- a/example/share_task/main.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/share_task/main.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -28,15 +28,15 @@
     // idata を SPU の共有領域へコピーするタスク (所謂準備的な)
     task_load = manager->create_task(TASK_LOAD);
     task_load->add_inData(idata, sizeof(int)*length);
-    task_load->add_param(length);
+    task_load->set_param(0,(memaddr)length);
     task_load->set_cpu(SPE_ANY);
 
     // task_load が作った領域を見ていくタスク (複数で共有して)
     for (int i = 0; i < numtask; i++) {
 	task_exec = manager->create_task(TASK_EXEC);
-	task_exec->add_param(length);
-	task_exec->add_param(i);
-	task_exec->add_param(ADD_NUM);
+	task_exec->set_param(0,(memaddr)length);
+	task_exec->set_param(1,(memaddr)i);
+	task_exec->set_param(2,(memaddr)ADD_NUM);
 	task_exec->set_cpu(SPE_ANY);
 
 	// dependency
--- a/example/share_task/ppe/Exec.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/share_task/ppe/Exec.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -9,9 +9,9 @@
 run(SchedTask *s, void *rbuf, void *wbuf)
 {
     int *idata = (int*)s->global_get(DATA_ID);
-    int length = s->get_param(0);
-    int number = s->get_param(1);
-    int calnum = s->get_param(2);
+    long length = (long)s->get_param(0);
+    long number = (long)s->get_param(1);
+    long calnum = (long)s->get_param(2);
 
     s->printf("[TASK_EXEC %02d] ", number);
     for (int i = 0; i < length; i++) {
--- a/example/share_task/ppe/Load.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/share_task/ppe/Load.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -11,7 +11,7 @@
 {
     int *idata = (int*)s->get_input(rbuf, 0);
     int *odata = (int*)s->global_get(DATA_ID);
-    int length = s->get_param(0);
+    long length = (long)s->get_param(0);
 
     // SPU LS 内に領域確保し、データをコピー
     odata = (int*)s->global_alloc(DATA_ID, sizeof(int)*length);
--- a/example/task_queue/Makefile.macosx	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/task_queue/Makefile.macosx	Mon Nov 16 10:59:55 2009 +0900
@@ -12,7 +12,7 @@
 TASK_OBJS = $(TASK_SRCS:.cc=.o)
 
 LIBS += -lFifoManager `sdl-config --libs`
-CC += -m32
+CC += -m64
 
 .SUFFIXES: .cc .o
 
--- a/example/task_queue/main.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/task_queue/main.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -40,8 +40,8 @@
     if (count-->0) {
         HTask *t = manager->create_task(HELLO_TASK);
         t->set_post(repeat, arg, 0);
-        t->add_param(q->i);
-        t->add_param((int)arg);
+        t->set_param(0,(memaddr)q->i);
+        t->set_param(1,(memaddr)arg);
         t->spawn();
 
         printf("[PPE] Create Task : Hello count=%d id=%d\n\n",count, q->i);
@@ -89,8 +89,8 @@
 	    q->q[j] = queues.q[j];
 	}
 
-	hello->add_param(i);
-	hello->add_param((int)&queues);
+	hello->set_param(0,(memaddr)i);
+	hello->set_param(1,(memaddr)&queues);
 	hello->set_post(repeat, (void*) &queues, 0);
 
 	hello->spawn();
--- a/example/task_queue/ppe/Hello.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/task_queue/ppe/Hello.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -12,7 +12,7 @@
 static int
 run(SchedTask *smanager, void *rbuf, void *wbuf)
 {
-    int task_id = smanager->get_param(0);
+    long task_id = (long)smanager->get_param(0);
     QueuePtr q = (QueuePtr) smanager->get_param(1);
 
     smanager->printf("[%d] Hello, World!!\n", task_id);
--- a/example/word_count/Makefile.macosx	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/word_count/Makefile.macosx	Mon Nov 16 10:59:55 2009 +0900
@@ -12,7 +12,7 @@
 TASK_OBJS = $(TASK_SRCS:.cc=.o)
 
 LIBS += -lFifoManager `sdl-config --libs`
-CC += -m32
+CC += -m64
 
 .SUFFIXES: .cc .o
 
--- a/example/word_count/main.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/word_count/main.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -165,7 +165,7 @@
 	}
     }
     if (filename==0) {
-	fprintf(stderr, usr_help_str);
+        printf("usage: %s [-count 10] -file filename\n",argv[0]);
 	exit(1);
     }
     
--- a/example/word_count/ppe/Exec.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/word_count/ppe/Exec.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -11,8 +11,8 @@
 {
     char *i_data = (char*)s->get_input(rbuf, 0);
     unsigned long long *o_data = (unsigned long long*)s->get_output(wbuf, 0);
-    int length = s->get_param(0);
-    int word_flag = s->get_param(1);
+    long length = (long)s->get_param(0);
+    long word_flag = (long)s->get_param(1);
     int word_num = 0;
     int line_num = 0;
     int i;
--- a/example/word_count/ppe/Print.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/word_count/ppe/Print.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -10,8 +10,8 @@
 run(SchedTask *s, void *rbuf, void *wbuf)
 {
     unsigned long long *idata = (unsigned long long*)s->get_input(rbuf, 0);
-    int task_num = s->get_param(0);
-    int status_num = s->get_param(1);
+    long task_num = (long)s->get_param(0);
+    long status_num = (long)s->get_param(1);
     unsigned long long word_data[task_num];
 
     s->printf("start sum\n");
--- a/example/word_count3/Makefile.macosx	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/word_count3/Makefile.macosx	Mon Nov 16 10:59:55 2009 +0900
@@ -12,7 +12,7 @@
 TASK_OBJS = $(TASK_SRCS:.cc=.o)
 
 LIBS += -lFifoManager `sdl-config --libs`
-CC += -m32
+CC += -m64
 
 .SUFFIXES: .cc .o
 
--- a/example/word_count3/main.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/word_count3/main.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -277,9 +277,11 @@
             count = atoi(argv[++i]);
         } else if (strcmp(argv[i], "-file") == 0) {
 	  file = argv[++i];
-	}
-
-
+	} 
+    }
+    if (!file) {
+	 printf("usage: %s [-count 10] -file filename\n",argv[0]);
+	 exit(0);
     }
 
     return 0;
--- a/example/word_count3/ppe/Exec.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/word_count3/ppe/Exec.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -11,8 +11,8 @@
 {
     char *i_data = (char*)s->get_input(rbuf, 0);
     unsigned long long *o_data = (unsigned long long*)s->get_output(wbuf, 0);
-    int length = s->get_param(0);
-    int word_flag = s->get_param(1);
+    long length = (long)s->get_param(0);
+    long word_flag = (long)s->get_param(1);
     int word_num = 0;
     int line_num = 0;
     int i;
--- a/example/word_count3/ppe/Print.cc	Sun Nov 15 04:56:09 2009 +0900
+++ b/example/word_count3/ppe/Print.cc	Mon Nov 16 10:59:55 2009 +0900
@@ -10,8 +10,8 @@
 run(SchedTask *s, void *rbuf, void *wbuf)
 {
     unsigned long long *idata = (unsigned long long*)s->get_input(rbuf, 0);
-    int task_num = s->get_param(0);
-    int status_num = s->get_param(1);
+    long task_num = (long)s->get_param(0);
+    long status_num = (long)s->get_param(1);
     unsigned long long word_data[task_num];
 
     s->printf("start sum\n");