2 a cldb which does nothing. Just send the messge locally if the destination
3 processor is not specified.
11 void LoadNotifyFn(int l
)
15 char *CldGetStrategy(void)
20 void CldHandler(char *msg
)
22 int len
, queueing
, priobits
;
23 unsigned int *prioptr
; CldInfoFn ifn
; CldPackFn pfn
;
24 CldRestoreHandler(msg
);
25 ifn
= (CldInfoFn
)CmiHandlerToFunction(CmiGetInfo(msg
));
26 ifn(msg
, &pfn
, &len
, &queueing
, &priobits
, &prioptr
);
27 CsdEnqueueGeneral(msg
, queueing
, priobits
, prioptr
);
30 void CldEnqueueMulti(int npes
, int *pes
, void *msg
, int infofn
)
32 int len
, queueing
, priobits
,i
; unsigned int *prioptr
;
33 CldInfoFn ifn
= (CldInfoFn
)CmiHandlerToFunction(infofn
);
35 ifn(msg
, &pfn
, &len
, &queueing
, &priobits
, &prioptr
);
38 ifn(msg
, &pfn
, &len
, &queueing
, &priobits
, &prioptr
);
40 CldSwitchHandler(msg
, CpvAccess(CldHandlerIndex
));
41 CmiSetInfo(msg
,infofn
);
45 CmiSyncSend(pes[i], len, msg);
50 CmiSyncListSendAndFree(npes
, pes
, len
, msg
);
53 void CldEnqueue(int pe
, void *msg
, int infofn
)
55 int len
, queueing
, priobits
; unsigned int *prioptr
;
56 CldInfoFn ifn
= (CldInfoFn
)CmiHandlerToFunction(infofn
);
58 if (pe
== CLD_ANYWHERE
) {
61 if (pe
== CmiMyPe() && !CmiImmIsRunning()) {
62 ifn(msg
, &pfn
, &len
, &queueing
, &priobits
, &prioptr
);
63 /* CsdEnqueueGeneral is not thread or SIGIO safe */
64 CsdEnqueueGeneral(msg
, queueing
, priobits
, prioptr
);
66 ifn(msg
, &pfn
, &len
, &queueing
, &priobits
, &prioptr
);
69 ifn(msg
, &pfn
, &len
, &queueing
, &priobits
, &prioptr
);
71 CldSwitchHandler(msg
, CpvAccess(CldHandlerIndex
));
72 CmiSetInfo(msg
,infofn
);
73 if (pe
==CLD_BROADCAST
) { CmiSyncBroadcastAndFree(len
, msg
); }
74 else if (pe
==CLD_BROADCAST_ALL
) { CmiSyncBroadcastAllAndFree(len
, msg
); }
75 else CmiSyncSendAndFree(pe
, len
, msg
);
79 void CldNodeEnqueue(int node
, void *msg
, int infofn
)
81 int len
, queueing
, priobits
; unsigned int *prioptr
;
82 CldInfoFn ifn
= (CldInfoFn
)CmiHandlerToFunction(infofn
);
84 if (node
== CLD_ANYWHERE
) {
87 if (node
== CmiMyNode() && !CmiImmIsRunning()) {
88 ifn(msg
, &pfn
, &len
, &queueing
, &priobits
, &prioptr
);
89 CsdNodeEnqueueGeneral(msg
, queueing
, priobits
, prioptr
);
91 ifn(msg
, &pfn
, &len
, &queueing
, &priobits
, &prioptr
);
94 ifn(msg
, &pfn
, &len
, &queueing
, &priobits
, &prioptr
);
96 CldSwitchHandler(msg
, CpvAccess(CldHandlerIndex
));
97 CmiSetInfo(msg
,infofn
);
98 if (node
==CLD_BROADCAST
) { CmiSyncNodeBroadcastAndFree(len
, msg
); }
99 else if (node
==CLD_BROADCAST_ALL
){CmiSyncNodeBroadcastAllAndFree(len
,msg
);}
100 else CmiSyncNodeSendAndFree(node
, len
, msg
);
104 void CldModuleInit(char **argv
)
106 CpvInitialize(int, CldHandlerIndex
);
107 CpvAccess(CldHandlerIndex
) = CmiRegisterHandler((CmiHandler
)CldHandler
);
108 CpvInitialize(int, CldRelocatedMessages
);
109 CpvInitialize(int, CldLoadBalanceMessages
);
110 CpvInitialize(int, CldMessageChunks
);
111 CpvAccess(CldRelocatedMessages
) = CpvAccess(CldLoadBalanceMessages
) =
112 CpvAccess(CldMessageChunks
) = 0;
113 CldModuleGeneralInit(argv
);