changeset 1884:d28f0c5489c3 draft

ppe conditional wait done.
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 03 Jan 2014 16:32:21 +0900
parents c5ae9bbd5eff
children dc5e06fb63ea
files TaskManager/Cell/CellTaskManagerImpl.cc TaskManager/Fifo/ReferencedDmaManager.h TaskManager/kernel/ppe/MailManager.h TaskManager/kernel/ppe/SynchronizedMailManager.h example/word_count/Makefile
diffstat 5 files changed, 12 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/TaskManager/Cell/CellTaskManagerImpl.cc	Fri Jan 03 15:54:36 2014 +0900
+++ b/TaskManager/Cell/CellTaskManagerImpl.cc	Fri Jan 03 16:32:21 2014 +0900
@@ -28,7 +28,7 @@
     spe_running = 0;
     spuIdle = spuIdle_;
     int m = (machineNum == 0?1:machineNum) + ioNum ; // at least 1 tasklistinfo in -cpu 0
-    receive_wait = 0; // new Sem(0);
+    receive_wait = new Sem(0);
 
     // 実行される Task 用の パイプライン用のダブルバッファ
     speTaskList = new QueueInfo<TaskList>*[m]; // spe上の走っている Task の配列
--- a/TaskManager/Fifo/ReferencedDmaManager.h	Fri Jan 03 15:54:36 2014 +0900
+++ b/TaskManager/Fifo/ReferencedDmaManager.h	Fri Jan 03 16:32:21 2014 +0900
@@ -16,6 +16,11 @@
 
     virtual void free_(void *buff);
     virtual void bound(ListData *list);
+
+    virtual void set_mail_waiter(SemPtr w) {
+        mail_queue1->set_waiter(w);
+    }
+
 } ;
 
 #endif/* REFERENCED_DMA_MANAGER */
--- a/TaskManager/kernel/ppe/MailManager.h	Fri Jan 03 15:54:36 2014 +0900
+++ b/TaskManager/kernel/ppe/MailManager.h	Fri Jan 03 16:32:21 2014 +0900
@@ -2,6 +2,7 @@
 #define INCLUDED_MAIL_MANAGER
 
 #include "types.h"
+#include "Sem.h"
 
 class MailManager {
 public:
@@ -14,6 +15,7 @@
     virtual void send(memaddr data);
     virtual memaddr recv();
     virtual int count();
+    virtual void set_waiter(SemPtr w)  = 0;
 
 private:
     /* variables */
--- a/TaskManager/kernel/ppe/SynchronizedMailManager.h	Fri Jan 03 15:54:36 2014 +0900
+++ b/TaskManager/kernel/ppe/SynchronizedMailManager.h	Fri Jan 03 16:32:21 2014 +0900
@@ -17,7 +17,7 @@
     void send(memaddr data);
     memaddr recv();
     int count();
-    void set_waiter(SemPtr w);
+    virtual void set_waiter(SemPtr w);
 
 private:
     /* variables */
--- a/example/word_count/Makefile	Fri Jan 03 15:54:36 2014 +0900
+++ b/example/word_count/Makefile	Fri Jan 03 16:32:21 2014 +0900
@@ -12,6 +12,9 @@
 	@echo "Make for CELL (Cell)"
 	@$(MAKE) -f Makefile.cell
 
+test:
+	./word_count -file c.txt
+
 gpu: FORCE
 	@echo "Make for OpenCL"
 	@$(MAKE) -f Makefile.gpu