diff TaskManager/Cell/CellTaskManagerImpl.cc @ 940:0d404f6c36a8

unknown dead lock still...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 31 Jul 2010 16:44:10 +0900
parents 9cfac2e8fc2e
children 15026ebf7a17
line wrap: on
line diff
--- a/TaskManager/Cell/CellTaskManagerImpl.cc	Sat Jul 31 12:18:19 2010 +0900
+++ b/TaskManager/Cell/CellTaskManagerImpl.cc	Sat Jul 31 16:44:10 2010 +0900
@@ -71,8 +71,7 @@
 
 // SPE_ANY が指定されていた時に
 // これをインクリメントしつつ呼ぶことにする。
-// 乱数使ってもいいけどさ。
-int cur_anySpeid = 0;
+unsigned int cur_anySpeid = 0;
 
 /**
  * ActiveTaskQueue から Task を
@@ -90,23 +89,14 @@
 
 	if (htask->cpu_type == SPE_ANY) {
 	    speid = cur_anySpeid++;
-	    cur_anySpeid = (cur_anySpeid < machineNum)
-		? cur_anySpeid : 0;
 	} else {
 	    // -1 してるのは
 	    // htask->cpu_type - CPU_SPE で
 	    // SPE0 = 1, SPE1 = 2, ... SPE5 = 6 ってなってるので
 	    // 配列的 (SPE0 = arr[0], SPE1 = arr[1]) にするため
 	    speid = htask->cpu_type - CPU_SPE - 1;
-
-	    // SPU の数以上が指定されていれば
-	    // とりあえず MAX_USE_SPE_NUM (実際に動く SPE の最大数) で
-	    // あまり求めてそれを使うことにする。
-	    // ここで判定するもんでもないか?
-	    if (speid >= machineNum) {
-		speid %= machineNum;
-	    }
 	}
+	speid %= machineNum;
 	set_taskList(htask, taskListInfo[speid]);
     }
 }
@@ -179,7 +169,9 @@
 	if (w) {
 	    for( TaskQueue *q = w->getFirst(); q; q = w->getNext(q)) {
 		printf("    waiting task%d %lx",q->task->command, (long)q->task);
-		if (!waitTaskQueue->find(q->task)) printf("!"); // stray task
+		if (!waitTaskQueue->find(q->task)) {
+		    printf("!"); // stray task
+		}
 		loop_check(q->task,p, 10);
 	    }
 	}