Mercurial > hg > Game > Cerium
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