Fix memory leaks in trace projections and summary
[charm.git] / src / conv-ldb / cldb.none.c
blob6dbbf89e687d26a4de471ddc2a2799736424fd9e
1 /*
2 a cldb which does nothing. Just send the messge locally if the destination
3 processor is not specified.
4 */
6 #include "converse.h"
7 #include "queueing.h"
8 #include "cldb.h"
9 #include <stdlib.h>
11 void LoadNotifyFn(int l)
15 char *CldGetStrategy(void)
17 return "none";
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);
34 CldPackFn pfn;
35 ifn(msg, &pfn, &len, &queueing, &priobits, &prioptr);
36 if (pfn) {
37 pfn(&msg);
38 ifn(msg, &pfn, &len, &queueing, &priobits, &prioptr);
40 CldSwitchHandler(msg, CpvAccess(CldHandlerIndex));
41 CmiSetInfo(msg,infofn);
44 for(i=0;i<npes;i++) {
45 CmiSyncSend(pes[i], len, msg);
47 CmiFree(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);
57 CldPackFn pfn;
58 if (pe == CLD_ANYWHERE) {
59 pe = CmiMyPe();
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);
65 } else {
66 ifn(msg, &pfn, &len, &queueing, &priobits, &prioptr);
67 if (pfn) {
68 pfn(&msg);
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);
83 CldPackFn pfn;
84 if (node == CLD_ANYWHERE) {
85 node = CmiMyNode();
87 if (node == CmiMyNode() && !CmiImmIsRunning()) {
88 ifn(msg, &pfn, &len, &queueing, &priobits, &prioptr);
89 CsdNodeEnqueueGeneral(msg, queueing, priobits, prioptr);
90 } else {
91 ifn(msg, &pfn, &len, &queueing, &priobits, &prioptr);
92 if (pfn) {
93 pfn(&msg);
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);
116 void CldCallback(){}