4 typedef struct specmsg_chare_s
10 CpmDeclareSimple(specmsg_chare
);
11 #define CpmPack_specmsg_chare(x) (0)
12 #define CpmUnpack_specmsg_chare(x) (0)
14 #include "specmsg.cpm.h"
16 void Cpm_megacon_ack(CpmDestination
);
20 CmiError("specmsg: CmiDeliverSpecificMsg failed.\n");
24 CpmInvokable
specmsg_step1(specmsg_chare c
)
26 if (c
->next
!= 1) specmsg_fail();
30 CpmInvokable
specmsg_step2(specmsg_chare c
)
32 if (c
->next
!= 2) specmsg_fail();
36 CpmInvokable
specmsg_step3(specmsg_chare c
)
38 if (c
->next
!= 3) specmsg_fail();
42 CpmInvokable
specmsg_step4(specmsg_chare c
)
44 if (c
->next
!= 4) specmsg_fail();
48 CpmInvokable
specmsg_begin()
50 struct specmsg_chare_s c
;
52 Cpm_specmsg_request(CpmSend(0), CmiMyPe(), &c
);
54 for (i
=0; i
<CmiNumPes(); i
++)
55 CmiDeliverSpecificMsg(CpvAccess(CpmIndex_specmsg_request
));
57 CmiDeliverSpecificMsg(CpvAccess(CpmIndex_specmsg_step1
));
58 CmiDeliverSpecificMsg(CpvAccess(CpmIndex_specmsg_step2
));
59 CmiDeliverSpecificMsg(CpvAccess(CpmIndex_specmsg_step3
));
60 CmiDeliverSpecificMsg(CpvAccess(CpmIndex_specmsg_step4
));
61 Cpm_megacon_ack(CpmSend(0));
64 CpmInvokable
specmsg_request(int pe
, specmsg_chare c
)
66 Cpm_specmsg_step3(CpmSend(pe
), c
);
67 Cpm_specmsg_step2(CpmSend(pe
), c
);
68 Cpm_specmsg_step4(CpmSend(pe
), c
);
69 Cpm_specmsg_step1(CpmSend(pe
), c
);
75 for (pe
=1; pe
<CmiNumPes(); pe
++)
76 Cpm_specmsg_begin(CpmSend(pe
));
80 void specmsg_moduleinit()
82 CpmInitializeThisModule();