Ok, now the bit vector is char * instead of unsigned int.
authorTerry L. Wilmarth <wilmarth@uiuc.edu>
Wed, 15 Mar 2000 17:35:29 +0000 (17:35 +0000)
committerTerry L. Wilmarth <wilmarth@uiuc.edu>
Wed, 15 Mar 2000 17:35:29 +0000 (17:35 +0000)
src/conv-ldb/cldb.c
src/conv-ldb/cldb.h

index 7d5d5af3a8b19581729bd7b04ae3c3599a352cba..513e2413cd884667d62ba52194bd50e251968dca 100644 (file)
@@ -9,7 +9,7 @@ extern unsigned int CqsLength(Queue);
 #include "cldb.h"
 #include <math.h>
 
-typedef unsigned int BitVector;
+typedef char *BitVector;
 
 CpvDeclare(int, CldHandlerIndex);
 CpvDeclare(BitVector, CldPEBitVector);
@@ -168,8 +168,7 @@ void CldGetToken(char **msg)
 
 int CldPresentPE(int pe)
 {
-  unsigned int shift = CpvAccess(CldPEBitVector) >> pe;
-  return (shift % 2);
+  return CpvAccess(CldPEBitVector)[pe];
 }
 
 void CldMoveAllSeedsAway()
@@ -192,9 +191,12 @@ void CldMoveAllSeedsAway()
   }
 }
 
-void CldSetPEBitVector(unsigned int newBV)
+void CldSetPEBitVector(const char *newBV)
 {
-  CpvAccess(CldPEBitVector) = newBV;
+  int i;
+  
+  for (i=0; i<CmiNumPes(); i++)
+    CpvAccess(CldPEBitVector)[i] = newBV[i];
   if (!CldPresentPE(CmiMyPe()))
     CldMoveAllSeedsAway();
 }
@@ -205,11 +207,14 @@ void CldModuleGeneralInit()
 {
   CldToken sentinel = (CldToken)CmiAlloc(sizeof(struct CldToken_s));
   CldProcInfo proc;
+  int i;
 
   CpvInitialize(CldProcInfo, CldProc);
   CpvInitialize(int, CldLoadOffset);
   CpvInitialize(BitVector, CldPEBitVector);
-  CpvAccess(CldPEBitVector) = (unsigned int)(pow(2.0, (double)CmiNumPes())-1.0);
+  CpvAccess(CldPEBitVector) = (char *)malloc(CmiNumPes()*sizeof(char));
+  for (i=0; i<CmiNumPes(); i++)
+    CpvAccess(CldPEBitVector)[i] = 1;
   CpvAccess(CldLoadOffset) = 0;
   CpvAccess(CldProc) = (CldProcInfo)CmiAlloc(sizeof(struct CldProcInfo_s));
   proc = CpvAccess(CldProc);
index 76d70b6fb4ba42119511cc1a3ac00ad2ae0bd0e8..38da154754d6af0777b562acd713f0732384a020 100644 (file)
@@ -12,4 +12,4 @@ CpvExtern(int, CldMessageChunks);
 CpvExtern(int, CldLoadNotify);
 
 void CldMultipleSend(int pe, int numToSend);
-void CldSetPEBitVector(unsigned int);
+void CldSetPEBitVector(const char *);