Mercurial > hg > Members > kono > Cerium
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