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);
 }