Mercurial > hg > Game > Cerium
changeset 1227:bb75ee244826 draft
exile free on fifo
author | Daichi TOMA <e085740@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 02 Aug 2011 06:52:08 +0900 |
parents | 636dfdc30176 |
children | 98094b0f1b01 |
files | TaskManager/Fifo/FifoDmaManager.h TaskManager/kernel/ppe/TaskManagerImpl.cc TaskManager/kernel/schedule/SchedTask.cc |
diffstat | 3 files changed, 9 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/TaskManager/Fifo/FifoDmaManager.h Sun Jul 31 10:20:46 2011 +0900 +++ b/TaskManager/Fifo/FifoDmaManager.h Tue Aug 02 06:52:08 2011 +0900 @@ -35,7 +35,7 @@ } /* functions */ - void *dma_load(Scheduler *s, void *buf, memaddr addr, uint32 size, uint32 mask); + virtual void *dma_load(Scheduler *s, 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 *get_writebuf(Scheduler *s, memaddr addr, uint32 size) ;
--- a/TaskManager/kernel/ppe/TaskManagerImpl.cc Sun Jul 31 10:20:46 2011 +0900 +++ b/TaskManager/kernel/ppe/TaskManagerImpl.cc Tue Aug 02 06:52:08 2011 +0900 @@ -295,9 +295,13 @@ // TaskArray1 の場合、Task,rbuf共にtasklistに入る。 // tasklistはどこかでfreeされてるはずなので、メモリリークしない。 // TaskArray の rbuf はfreeされない見たいなので、ここでfreeしてみる。 + +#ifdef __CERIUM_FIFO__ +#else if (me->command == TaskArray) { free(me->rbuf); } +#endif // me を誰かが持っていて、me が finish した後に、 // me->wait_for(i) とか、やられると気まずい。
--- a/TaskManager/kernel/schedule/SchedTask.cc Sun Jul 31 10:20:46 2011 +0900 +++ b/TaskManager/kernel/schedule/SchedTask.cc Tue Aug 02 06:52:08 2011 +0900 @@ -95,7 +95,11 @@ } connector->dma_wait(DMA_READ + this->tag); run(this, readbuf, writebuf); +#ifdef __CERIUM_FIFO__ +#else free(readbuf); +#endif + // 書き込む領域がなければ無視