diff TaskManager/kernel/ppe/MailManager.h @ 647:7c9ded1ea750

MailManager rewrite. not yet worked.
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 21 Nov 2009 16:18:47 +0900
parents bffdede05f1e
children c13bbb7d70b3
line wrap: on
line diff
--- a/TaskManager/kernel/ppe/MailManager.h	Sat Nov 21 11:20:29 2009 +0900
+++ b/TaskManager/kernel/ppe/MailManager.h	Sat Nov 21 16:18:47 2009 +0900
@@ -3,33 +3,29 @@
 
 #include "types.h"
 
-typedef struct mail_queue {
-    memaddr data;
-    struct mail_queue *next;
-} MailQueue, *MailQueuePtr;
-
 class MailManager {
 public:
     /* constructor */
-    MailManager();
+    MailManager(unsigned int qsize = 32) ;
+
     ~MailManager();
 
     /* functions */
-    int init(int num);
-    MailQueuePtr create(memaddr data);
-    void free(MailQueuePtr q);
-    static MailQueuePtr append_mailQueue(MailQueuePtr list, MailQueuePtr q);
-    static int length(MailQueuePtr list);
-    static int find(MailQueuePtr q,MailQueuePtr list);
+    void send(memaddr data);
+    memaddr recv();
+    int count();
 
 private:
     /* variables */
-    MailQueuePtr mailQueuePool;
-    MailQueuePtr freeMailQueue;
+    memaddr *queue;
+    unsigned int size;
+    unsigned int read;
+    unsigned int write;
+    unsigned int mask;
 
-    /* functions */
-    int extend_pool(int num);
-    void destroy();
+    void calc_mask(unsigned int qsize);
 };
 
+typedef MailManager *MailManagerPtr;
+
 #endif