Mercurial > hg > Members > kono > Cerium
comparison 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 |
comparison
equal
deleted
inserted
replaced
646:ffcc25c7c566 | 647:7c9ded1ea750 |
---|---|
1 #ifndef INCLUDED_MAIL_MANAGER | 1 #ifndef INCLUDED_MAIL_MANAGER |
2 #define INCLUDED_MAIL_MANAGER | 2 #define INCLUDED_MAIL_MANAGER |
3 | 3 |
4 #include "types.h" | 4 #include "types.h" |
5 | 5 |
6 typedef struct mail_queue { | |
7 memaddr data; | |
8 struct mail_queue *next; | |
9 } MailQueue, *MailQueuePtr; | |
10 | |
11 class MailManager { | 6 class MailManager { |
12 public: | 7 public: |
13 /* constructor */ | 8 /* constructor */ |
14 MailManager(); | 9 MailManager(unsigned int qsize = 32) ; |
10 | |
15 ~MailManager(); | 11 ~MailManager(); |
16 | 12 |
17 /* functions */ | 13 /* functions */ |
18 int init(int num); | 14 void send(memaddr data); |
19 MailQueuePtr create(memaddr data); | 15 memaddr recv(); |
20 void free(MailQueuePtr q); | 16 int count(); |
21 static MailQueuePtr append_mailQueue(MailQueuePtr list, MailQueuePtr q); | |
22 static int length(MailQueuePtr list); | |
23 static int find(MailQueuePtr q,MailQueuePtr list); | |
24 | 17 |
25 private: | 18 private: |
26 /* variables */ | 19 /* variables */ |
27 MailQueuePtr mailQueuePool; | 20 memaddr *queue; |
28 MailQueuePtr freeMailQueue; | 21 unsigned int size; |
22 unsigned int read; | |
23 unsigned int write; | |
24 unsigned int mask; | |
29 | 25 |
30 /* functions */ | 26 void calc_mask(unsigned int qsize); |
31 int extend_pool(int num); | |
32 void destroy(); | |
33 }; | 27 }; |
34 | 28 |
29 typedef MailManager *MailManagerPtr; | |
30 | |
35 #endif | 31 #endif |