annotate TaskManager/Cell/CellTaskManagerImpl.cc @ 65:519d24aa7ac8

*** empty log message ***
author gongo
date Sun, 17 Feb 2008 18:06:53 +0900
parents 6bc72fde6615
children 1034077dd217
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
57
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
1 #include <stdio.h>
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
2 #include <stdlib.h>
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
3 #include <string.h>
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
4 #include "CellTaskManagerImpl.h"
61
6bc72fde6615 *** empty log message ***
gongo
parents: 60
diff changeset
5 #include "CellBufferManager.h"
57
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
6 #include "types.h"
65
519d24aa7ac8 *** empty log message ***
gongo
parents: 61
diff changeset
7 #include "error.h"
57
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
8
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
9 void
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
10 CellTaskManagerImpl::init(void)
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
11 {
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
12 TaskManagerImpl::init();
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
13
60
f50c74835a9b *** empty log message ***
gongo
parents: 57
diff changeset
14 bufferManager = new CellBufferManager();
57
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
15 bufferManager->init();
65
519d24aa7ac8 *** empty log message ***
gongo
parents: 61
diff changeset
16
519d24aa7ac8 *** empty log message ***
gongo
parents: 61
diff changeset
17 speThreads = new SpeThreads(machineNum);
519d24aa7ac8 *** empty log message ***
gongo
parents: 61
diff changeset
18 speThreads->init();
57
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
19 }
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
20
65
519d24aa7ac8 *** empty log message ***
gongo
parents: 61
diff changeset
21 /**
519d24aa7ac8 *** empty log message ***
gongo
parents: 61
diff changeset
22 * mail_list は ppe 側の mail なので、変更せず渡す。
519d24aa7ac8 *** empty log message ***
gongo
parents: 61
diff changeset
23 * その前に spe からのメールをチェックする
519d24aa7ac8 *** empty log message ***
gongo
parents: 61
diff changeset
24 */
519d24aa7ac8 *** empty log message ***
gongo
parents: 61
diff changeset
25 MailQueuePtr
519d24aa7ac8 *** empty log message ***
gongo
parents: 61
diff changeset
26 CellTaskManagerImpl::mail_check(MailQueuePtr mail_list)
57
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
27 {
65
519d24aa7ac8 *** empty log message ***
gongo
parents: 61
diff changeset
28 int id;
519d24aa7ac8 *** empty log message ***
gongo
parents: 61
diff changeset
29 int data;
519d24aa7ac8 *** empty log message ***
gongo
parents: 61
diff changeset
30
519d24aa7ac8 *** empty log message ***
gongo
parents: 61
diff changeset
31 for (id = 0; id < machineNum; id++) {
519d24aa7ac8 *** empty log message ***
gongo
parents: 61
diff changeset
32 while (1) {
519d24aa7ac8 *** empty log message ***
gongo
parents: 61
diff changeset
33 data = speThreads->get_mail(id);
519d24aa7ac8 *** empty log message ***
gongo
parents: 61
diff changeset
34 if (data < 0) break;
519d24aa7ac8 *** empty log message ***
gongo
parents: 61
diff changeset
35
519d24aa7ac8 *** empty log message ***
gongo
parents: 61
diff changeset
36 // 名前あとでちゃんと決めよう => MY_SPE_... とかじゃなくて
519d24aa7ac8 *** empty log message ***
gongo
parents: 61
diff changeset
37 if (data == MY_SPE_STATUS_READY) {
519d24aa7ac8 *** empty log message ***
gongo
parents: 61
diff changeset
38 __debug_ppe("[SPE %d] finish\n", id);
519d24aa7ac8 *** empty log message ***
gongo
parents: 61
diff changeset
39 } else {
519d24aa7ac8 *** empty log message ***
gongo
parents: 61
diff changeset
40 __debug_ppe("[PPE] recv from [SPE %d] : 0x%x\n", data, id);
519d24aa7ac8 *** empty log message ***
gongo
parents: 61
diff changeset
41 bufferManager->check_task_finish((HTaskPtr)data);
519d24aa7ac8 *** empty log message ***
gongo
parents: 61
diff changeset
42 }
519d24aa7ac8 *** empty log message ***
gongo
parents: 61
diff changeset
43 }
519d24aa7ac8 *** empty log message ***
gongo
parents: 61
diff changeset
44 }
519d24aa7ac8 *** empty log message ***
gongo
parents: 61
diff changeset
45 return TaskManagerImpl::mail_check(mail_list);
57
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
46 }
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
47
65
519d24aa7ac8 *** empty log message ***
gongo
parents: 61
diff changeset
48
57
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
49 TaskManagerImpl*
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
50 create_impl(int num)
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
51 {
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
52 return new CellTaskManagerImpl();
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
53 }