Mercurial > hg > Members > kono > Cerium
diff TaskManager/Cell/spe/CellDmaManager.cc @ 675:45ddb28c592d
fix
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 06 Dec 2009 01:20:41 +0900 |
parents | 3b6290c05f9f |
children | a06eef665c45 |
line wrap: on
line diff
--- a/TaskManager/Cell/spe/CellDmaManager.cc Sun Dec 06 00:54:10 2009 +0900 +++ b/TaskManager/Cell/spe/CellDmaManager.cc Sun Dec 06 01:20:41 2009 +0900 @@ -38,7 +38,7 @@ mfc_write_tag_mask(1 << mask); mfc_write_tag_update_all(); mfc_read_tag_status(); - (this->*end_dmawait_profile)(); + (this->*end_dmawait_profile)(&global_wait_time); } void CellDmaManager::mail_write(memaddr data) @@ -49,7 +49,7 @@ unsigned long data0 = (unsigned long)data; spu_write_out_mbox((uint32)(data0>>4)); } - (this->*end_dmawait_profile)(); + (this->*end_dmawait_profile)(&global_mail_time); } memaddr CellDmaManager::mail_read() @@ -59,7 +59,7 @@ if (ABIBIT>32) { data += (spu_read_in_mbox()<<4); } - (this->*end_dmawait_profile)(); + (this->*end_dmawait_profile)(&global_mail_time); return data; } @@ -109,10 +109,10 @@ } void -CellDmaManager::do_end_dmawait_profile() +CellDmaManager::do_end_dmawait_profile(long long *counter) { wait_time = spu_readch(SPU_RdDec); - global_wait_time += 0xffffffff - wait_time; + *counter += 0xffffffff - wait_time; busy_time = wait_time; } @@ -123,10 +123,13 @@ CellDmaManager::show_dma_wait(int cpu) { - printf("spu%d: global_wait_time = %lld\n",cpu, global_wait_time); - printf("spu%d: global_busy_time = %lld\n",cpu, global_busy_time); - printf("spu%d: busy_ratio = %g%%\n",cpu, - ((double)global_busy_time)/((double)(global_busy_time+global_wait_time))*100.0); + double r = ((double)global_busy_time)/((double)( + global_busy_time+global_wait_time+global_mail_time + ))*100.0); + printf("spu%d: busy_time = %lld",cpu, global_busy_time); + printf(" wait_time = %lld", global_wait_time); + printf(" mail_time = %lld", global_mail_time); + printf(" busy_ratio = %g%%\n",r); }