diff TaskManager/kernel/ppe/CpuThreads.cc @ 1482:85a848d7f181 draft

fix CpuThreads
author Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
date Wed, 01 Aug 2012 21:37:29 +0900
parents a9da5c6bea91
children f402f6444237
line wrap: on
line diff
--- a/TaskManager/kernel/ppe/CpuThreads.cc	Tue Jul 31 19:12:41 2012 +0900
+++ b/TaskManager/kernel/ppe/CpuThreads.cc	Wed Aug 01 21:37:29 2012 +0900
@@ -1,12 +1,17 @@
 #include <stdlib.h>
 #include "types.h"
 #include "CpuThreads.h"
+#ifdef __CERIUM_GPU__
+#include "GpuThreads.h"
+#endif
+#include "GpuThreads.h"
 #include "MainScheduler.h"
 #include "SysFunc.h"
 #include "SchedNop.h"
 #include "SpeTaskManagerImpl.h"
 #include "CellScheduler.h"
 
+
 SchedExternTask(ShowTime);
 SchedExternTask(StartProfile);
 
@@ -14,7 +19,7 @@
 CpuThreads::CpuThreads(int num, int useRefDma, int start_id) : cpu_num(num), use_refdma(useRefDma), id_offset(start_id) {
 
 #ifdef __CERIUM_GPU__
-    gpu = new GpuThreads();
+    gpu = new GpuThreads(useRefDma);
 #endif
     threads = new pthread_t[cpu_num];
     args    = new cpu_thread_arg_t[cpu_num];
@@ -72,6 +77,12 @@
 //CpuThreads::init()
 CpuThreads::init()
 {
+#ifdef __CERIUM_GPU__
+    gpu->set_wait(wait);
+    gpu->init();
+    wait->sem_p();
+#endif
+
 	for (int i = 0; i < cpu_num; i++) {
 		args[i].cpuid = i + id_offset;
 		args[i].scheduler = new MainScheduler();