# HG changeset patch # User Shinji KONO # Date 1258336795 -32400 # Node ID 60aa3f241b10baa9728929c5fbdc8aab2d7892fa # Parent c7b5c99252add3a60d300c636f9e89ab08603a90 64bit mode worked on Mac OS X. diff -r c7b5c99252ad -r 60aa3f241b10 Renderer/Engine/Makefile.def --- 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 diff -r c7b5c99252ad -r 60aa3f241b10 Renderer/Engine/task/CreateSpan.cc --- 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) { diff -r c7b5c99252ad -r 60aa3f241b10 Renderer/Engine/task/DrawBack.cc --- 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; diff -r c7b5c99252ad -r 60aa3f241b10 Renderer/Engine/task/DrawSpan.cc --- 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); diff -r c7b5c99252ad -r 60aa3f241b10 Renderer/Engine/viewer.cc --- 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(); diff -r c7b5c99252ad -r 60aa3f241b10 Renderer/Test/Makefile.def --- 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 diff -r c7b5c99252ad -r 60aa3f241b10 TaskManager/ChangeLog --- 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 + + やっぱり、TaskList の存在が許せない。あったとしても不定長でしょう。 + 無駄なコピーが多すぎる。 + 2009-11-14 Shinji KONO Scheduler / TaskManger / TaskManagerImpl の区別が不明 diff -r c7b5c99252ad -r 60aa3f241b10 TaskManager/Fifo/FifoDmaManager.cc --- 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 diff -r c7b5c99252ad -r 60aa3f241b10 TaskManager/Fifo/FifoTaskManagerImpl.cc --- 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 されるという事態が起きることがある。 diff -r c7b5c99252ad -r 60aa3f241b10 TaskManager/Makefile.def --- 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 diff -r c7b5c99252ad -r 60aa3f241b10 TaskManager/include/base.h --- 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) { \ diff -r c7b5c99252ad -r 60aa3f241b10 TaskManager/include/types.h --- 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 diff -r c7b5c99252ad -r 60aa3f241b10 TaskManager/kernel/memory/MemHash.cc --- 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(); } diff -r c7b5c99252ad -r 60aa3f241b10 TaskManager/kernel/ppe/DmaBuffer.cc --- 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 diff -r c7b5c99252ad -r 60aa3f241b10 TaskManager/kernel/ppe/Task.cc --- 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; diff -r c7b5c99252ad -r 60aa3f241b10 TaskManager/kernel/ppe/Task.h --- 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)); diff -r c7b5c99252ad -r 60aa3f241b10 TaskManager/kernel/ppe/TaskManager.cc --- 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; } /** diff -r c7b5c99252ad -r 60aa3f241b10 TaskManager/kernel/ppe/TaskManager.h --- 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); diff -r c7b5c99252ad -r 60aa3f241b10 TaskManager/kernel/ppe/TaskQueue.cc --- 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; - } -} - diff -r c7b5c99252ad -r 60aa3f241b10 TaskManager/kernel/ppe/TaskQueue.h --- 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; diff -r c7b5c99252ad -r 60aa3f241b10 TaskManager/kernel/schedule/SchedMail.cc --- 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); diff -r c7b5c99252ad -r 60aa3f241b10 TaskManager/kernel/schedule/SchedMail.h --- 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 *); diff -r c7b5c99252ad -r 60aa3f241b10 TaskManager/kernel/schedule/SchedNop2Ready.cc --- 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(); } diff -r c7b5c99252ad -r 60aa3f241b10 TaskManager/kernel/schedule/SchedTask.cc --- 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); } diff -r c7b5c99252ad -r 60aa3f241b10 TaskManager/kernel/schedule/SchedTask.h --- 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(); diff -r c7b5c99252ad -r 60aa3f241b10 TaskManager/kernel/schedule/SchedTaskList.cc --- 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); diff -r c7b5c99252ad -r 60aa3f241b10 TaskManager/kernel/schedule/SchedTaskList.h --- 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 diff -r c7b5c99252ad -r 60aa3f241b10 TaskManager/kernel/schedule/Scheduler.cc --- 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(); diff -r c7b5c99252ad -r 60aa3f241b10 TaskManager/kernel/schedule/Scheduler.h --- 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); diff -r c7b5c99252ad -r 60aa3f241b10 TaskManager/kernel/schedule/TaskGroup.cc --- 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 - -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 -} diff -r c7b5c99252ad -r 60aa3f241b10 TaskManager/kernel/schedule/TaskGroup.h --- 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 diff -r c7b5c99252ad -r 60aa3f241b10 example/HelloWorld/Makefile.def --- 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.. diff -r c7b5c99252ad -r 60aa3f241b10 example/HelloWorld/main.cc --- 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(); } diff -r c7b5c99252ad -r 60aa3f241b10 example/HelloWorld/ppe/Hello.cc --- 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); diff -r c7b5c99252ad -r 60aa3f241b10 example/MemList/Makefile.macosx --- 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)) diff -r c7b5c99252ad -r 60aa3f241b10 example/basic/Makefile.macosx --- 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 diff -r c7b5c99252ad -r 60aa3f241b10 example/basic/main.cc --- 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 を渡せるようにしたい diff -r c7b5c99252ad -r 60aa3f241b10 example/basic/ppe/Twice.cc --- 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; diff -r c7b5c99252ad -r 60aa3f241b10 example/dependency_task/Makefile.macosx --- 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 = # ե diff -r c7b5c99252ad -r 60aa3f241b10 example/dependency_task/main.cc --- 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) diff -r c7b5c99252ad -r 60aa3f241b10 example/dependency_task/ppe/Exec.cc --- 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; diff -r c7b5c99252ad -r 60aa3f241b10 example/dependency_task/ppe/Print.cc --- 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++) { diff -r c7b5c99252ad -r 60aa3f241b10 example/get_segment/Makefile.macosx --- 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 = # ե diff -r c7b5c99252ad -r 60aa3f241b10 example/get_segment/main.cc --- 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(); diff -r c7b5c99252ad -r 60aa3f241b10 example/get_segment/ppe/Hello.cc --- 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; } diff -r c7b5c99252ad -r 60aa3f241b10 example/get_segment/ppe/Hello1.cc --- 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; } diff -r c7b5c99252ad -r 60aa3f241b10 example/mainMem/Makefile.macosx --- 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 = # ե diff -r c7b5c99252ad -r 60aa3f241b10 example/mainMem/main.cc --- 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(); } diff -r c7b5c99252ad -r 60aa3f241b10 example/mainMem/ppe/Hello.cc --- 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; } diff -r c7b5c99252ad -r 60aa3f241b10 example/many_task/Makefile.macosx --- 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.. diff -r c7b5c99252ad -r 60aa3f241b10 example/many_task/ppe/QuickSort.cc --- 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); diff -r c7b5c99252ad -r 60aa3f241b10 example/many_task/sort.cc --- 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); } diff -r c7b5c99252ad -r 60aa3f241b10 example/post_function/Makefile.macosx --- 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 diff -r c7b5c99252ad -r 60aa3f241b10 example/post_function/main.cc --- 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(); diff -r c7b5c99252ad -r 60aa3f241b10 example/post_function/ppe/Hello.cc --- 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; } diff -r c7b5c99252ad -r 60aa3f241b10 example/renew_task/Makefile.macosx --- 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 diff -r c7b5c99252ad -r 60aa3f241b10 example/renew_task/main.cc --- 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(); diff -r c7b5c99252ad -r 60aa3f241b10 example/renew_task/ppe/RenewStart.cc --- 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); diff -r c7b5c99252ad -r 60aa3f241b10 example/share_task/Makefile.macosx --- 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 diff -r c7b5c99252ad -r 60aa3f241b10 example/share_task/main.cc --- 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 diff -r c7b5c99252ad -r 60aa3f241b10 example/share_task/ppe/Exec.cc --- 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++) { diff -r c7b5c99252ad -r 60aa3f241b10 example/share_task/ppe/Load.cc --- 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); diff -r c7b5c99252ad -r 60aa3f241b10 example/task_queue/Makefile.macosx --- 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 diff -r c7b5c99252ad -r 60aa3f241b10 example/task_queue/main.cc --- 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(); diff -r c7b5c99252ad -r 60aa3f241b10 example/task_queue/ppe/Hello.cc --- 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); diff -r c7b5c99252ad -r 60aa3f241b10 example/word_count/Makefile.macosx --- 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 diff -r c7b5c99252ad -r 60aa3f241b10 example/word_count/main.cc --- 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); } diff -r c7b5c99252ad -r 60aa3f241b10 example/word_count/ppe/Exec.cc --- 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; diff -r c7b5c99252ad -r 60aa3f241b10 example/word_count/ppe/Print.cc --- 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"); diff -r c7b5c99252ad -r 60aa3f241b10 example/word_count3/Makefile.macosx --- 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 diff -r c7b5c99252ad -r 60aa3f241b10 example/word_count3/main.cc --- 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; diff -r c7b5c99252ad -r 60aa3f241b10 example/word_count3/ppe/Exec.cc --- 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; diff -r c7b5c99252ad -r 60aa3f241b10 example/word_count3/ppe/Print.cc --- 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");