diff TaskManager/kernel/ppe/SynchronizedMailManager.h @ 1196:27e35b4098a4 draft

Rename MailManager
author Daichi TOMA <e085740@ie.u-ryukyu.ac.jp>
date Thu, 14 Jul 2011 00:23:43 +0900
parents TaskManager/kernel/ppe/SemMailManager.h@898fdcf53c31
children f73ca57cdc81
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TaskManager/kernel/ppe/SynchronizedMailManager.h	Thu Jul 14 00:23:43 2011 +0900
@@ -0,0 +1,37 @@
+#ifndef INCLUDED_SYNC_MAIL_MANAGER
+#define INCLUDED_SYNC_MAIL_MANAGER
+
+#include <pthread.h>
+#include "MailManager.h"
+#include "types.h"
+#include "Sem.h"
+
+class SynchronizedMailManager : public MailManager {
+public:
+    /* constructor */
+    SynchronizedMailManager(unsigned int qsize = 32) ;
+
+    ~SynchronizedMailManager();
+
+    /* functions */
+    void send(memaddr data);
+    memaddr recv();
+    int count();
+
+private:
+    /* variables */
+    memaddr *queue;
+    SemPtr queue_remain;
+    SemPtr queue_count;
+    unsigned int size;
+    unsigned int read;
+    unsigned int write;
+    unsigned int mask;
+
+    void calc_mask(unsigned int qsize);
+    void extend();
+}  ;
+
+typedef SynchronizedMailManager *SynchronizedMailManagerPtr;
+
+#endif