Got rid of thr FIFO_QUEUE from converse core. It is now available
authorMilind Bhandarkar <milind@cs.uiuc.edu>
Sun, 17 Dec 2000 10:39:54 +0000 (10:39 +0000)
committerMilind Bhandarkar <milind@cs.uiuc.edu>
Sun, 17 Dec 2000 10:39:54 +0000 (10:39 +0000)
as CdsFifo from utils.

26 files changed:
src/arch/exemplar/machine.c
src/arch/mpi/machine.c
src/arch/ncube2/machine.c
src/arch/net/machine.c
src/arch/origin-pthreads/machine.c
src/arch/origin2000/machine.c
src/arch/paragon/machine.c
src/arch/sim/machine.c
src/arch/sim/sim.c
src/arch/sp3/machine.c
src/arch/t3e/machine.c
src/arch/uth-win32/machine.c
src/arch/uth/machine.c
src/ck-core/debug-message.C
src/ck-core/waitqd.C
src/conv-ccs/conv-ccs.c
src/conv-core/conv-ccs.c
src/conv-core/convcore.c
src/conv-core/converse.h
src/conv-core/cpthreads.c
src/conv-core/fifo.c [deleted file]
src/conv-core/fifo.h [deleted file]
src/scripts/Makefile
src/util/cklists.h
src/util/conv-lists.C [new file with mode: 0644]
src/util/conv-lists.h [new file with mode: 0644]

index 17216a4ffc1f7c02ccfe47a8a3da4a294caa981c..fdff7992b6ccb3782f3513586a0c00ef3b197b21 100644 (file)
@@ -10,7 +10,6 @@
 #include <cps.h>
 #include <math.h>
 #include "converse.h"
-#include "fifo.h"
 
 
 #define BLK_LEN                512
@@ -164,7 +163,7 @@ void *arg;
 
     ConverseCommonInit(argv);
     neighbour_init(CmiMyPe());
-    CpvAccess(CmiLocalQueue) = (void *) FIFO_Create();
+    CpvAccess(CmiLocalQueue) = CdsFifo_Create();
     CmiSpanTreeInit();
     CmiTimerInit();
     if (Cmi_initret==0) {
@@ -215,7 +214,7 @@ CmiCommHandle CmiAsyncSendFn(int destPE, int size, char *msg)
 void CmiFreeSendFn(int destPE, int size, char *msg)
 {
   if (CmiMyPe()==destPE) {
-    FIFO_EnQueue(CpvAccess(CmiLocalQueue),msg);
+    CdsFifo_Enqueue(CpvAccess(CmiLocalQueue),msg);
     CQdCreate(CpvAccess(cQdState), 1);
   } else {
     CmiSyncSendFn(destPE, size, msg);
@@ -261,7 +260,7 @@ void CmiFreeBroadcastAllFn(int size, char *msg)
     int i;
     for(i=0; i<CmiNumPes(); i++)
        if (CmiMyPe() != i) CmiSyncSendFn(i,size,msg);
-    FIFO_EnQueue(CpvAccess(CmiLocalQueue),msg);
+    CdsFifo_Enqueue(CpvAccess(CmiLocalQueue),msg);
     CQdCreate(CpvAccess(cQdState), 1);
 }
 
index e7c0dd2809c71d4352a0c3b0bb6ea81689a5ceda..92ace781ab6a9d82e06a711281208a95774e36b4 100644 (file)
@@ -9,7 +9,6 @@
 #include <sys/time.h>
 #include "converse.h"
 #include <mpi.h>
-#include "fifo.h"
 
 #define FLIPBIT(node,bitnumber) (node ^ (1 << bitnumber))
 #define MAX_QLEN 200
@@ -195,7 +194,7 @@ void CmiSyncSendFn(int destPE, int size, char *msg)
   memcpy(dupmsg, msg, size);
   if (Cmi_mype==destPE) {
     CQdCreate(CpvAccess(cQdState), 1);
-    FIFO_EnQueue(CpvAccess(CmiLocalQueue),dupmsg);
+    CdsFifo_Enqueue(CpvAccess(CmiLocalQueue),dupmsg);
   }
   else
     CmiAsyncSendFn(destPE, size, dupmsg);
@@ -210,7 +209,7 @@ CmiCommHandle CmiAsyncSendFn(int destPE, int size, char *msg)
   if(destPE == CmiMyPe()) {
     char *dupmsg = (char *) CmiAlloc(size);
     memcpy(dupmsg, msg, size);
-    FIFO_EnQueue(CpvAccess(CmiLocalQueue),dupmsg);
+    CdsFifo_Enqueue(CpvAccess(CmiLocalQueue),dupmsg);
     return 0;
   }
   msg_tmp = (SMSG_LIST *) CmiAlloc(sizeof(SMSG_LIST));
@@ -234,7 +233,7 @@ void CmiFreeSendFn(int destPE, int size, char *msg)
 {
   if (Cmi_mype==destPE) {
     CQdCreate(CpvAccess(cQdState), 1);
-    FIFO_EnQueue(CpvAccess(CmiLocalQueue),msg);
+    CdsFifo_Enqueue(CpvAccess(CmiLocalQueue),msg);
   } else {
     CmiAsyncSendFn(destPE, size, msg);
   }
@@ -340,7 +339,7 @@ void ConverseInit(int argc, char **argv, CmiStartFn fn, int usched, int initret)
   /*printf("request max=%d\n", request_max);*/
   CmiTimerInit();
   CpvInitialize(void *, CmiLocalQueue);
-  CpvAccess(CmiLocalQueue) = (void *)FIFO_Create();
+  CpvAccess(CmiLocalQueue) = CdsFifo_Create();
   recdQueueInit();
   CthInit(argv);
   ConverseCommonInit(argv);
index a1a862df70a24eda685f64af54256a0434605d7c..15d7fd241545cc493171e9db0dac4f819f330c8a 100644 (file)
@@ -7,7 +7,6 @@
 
 #include <stdio.h>
 #include "converse.h"
-#include "fifo.h"
 
 #define MSG_TYPE 1
 
@@ -123,7 +122,7 @@ char * msg;
        {
           temp = (char *)CmiAlloc(size) ;
           memcpy(temp, msg, size) ;
-          FIFO_EnQueue(CpvAccess(CmiLocalQueue), temp);
+          CdsFifo_Enqueue(CpvAccess(CmiLocalQueue), temp);
        }
     else
           nwrite(msg, size, destPE, MSG_TYPE, &cflag);
@@ -147,7 +146,7 @@ void CmiFreeSendFn(destPE, size, msg)
      char *msg;
 {
     if (CpvAccess(Cmi_mype) == destPE)
-        FIFO_EnQueue(CpvAccess(CmiLocalQueue), msg);
+        CdsFifo_Enqueue(CpvAccess(CmiLocalQueue), msg);
     else
       {
         nwrite(msg, size, destPE, MSG_TYPE, &cflag);
@@ -247,7 +246,7 @@ int usched, initret;
   CpvInitialize(void*, CmiLocalQueue);
   whoami(&CpvAccess(Cmi_mype), &process, &host, &Cmi_dim);
   CpvAccess(Cmi_numpes) = (1 << Cmi_dim) ;
-  CpvAccess(CmiLocalQueue)= (void *) FIFO_Create();
+  CpvAccess(CmiLocalQueue)= CdsFifo_Create();
   CmiSpanTreeInit();
   CmiTimerInit();
   CthInit(argv);
index 2a2fe199c2ad1e2b685210e9d1848923dc97358a..69ece7ad8f618df9655b7d14e433ef72afb28211 100644 (file)
 #include <signal.h>
 #include <stdarg.h> /*<- was <varargs.h>*/
 
-#include "fifo.h"
 #include "conv-ccs.h"
 #include "ccs-server.h"
 #include "sockRoutines.h"
@@ -623,7 +622,7 @@ void CmiStateInit(int pe, int rank, CmiState state)
   state->pe = pe;
   state->rank = rank;
   state->recv = PCQueueCreate();
-  state->localqueue = FIFO_Create();
+  state->localqueue = CdsFifo_Create();
 #if CMK_NODE_QUEUE_AVAILABLE
   CsvInitialize(CmiNodeLock, CmiNodeRecvLock);
   CsvInitialize(PCQueue, NodeRecv);
@@ -2557,7 +2556,7 @@ CmiCommHandle CmiGeneralSend(int pe, int size, int freemode, char *data)
   }
 
   if (pe == cs->pe) {
-    FIFO_EnQueue(cs->localqueue, data);
+    CdsFifo_Enqueue(cs->localqueue, data);
     if (freemode == 'A') {
       MallocOutgoingMsg(ogm);
       ogm->freemode = 'X';
@@ -2839,7 +2838,7 @@ libpacklib.lib, libck.lib
 
 And also the conv-core sources:
        cldb.c (from conv-ldb), conv-ccs.c, conv-conds.c, cpm.c, 
-cpthreads.c, fifo.c, futures.c, machine.c (this file, from Common.net), 
+cpthreads.c, futures.c, machine.c (this file, from Common.net), 
 memory.c, msgmgr.c, queueing.c, quiescence.c, random.c, threads.c, sockRoutines.c
  (whew!)
 
index 5636797af9b56ba9d29ec2624a090476f8ebad34..08b5bbe63938c3e389834467cda4c9e1e0f8b964 100644 (file)
@@ -17,7 +17,6 @@
 #include <unistd.h>
 
 #include "converse.h"
-#include "fifo.h"
 
 #define BLK_LEN  512
 
@@ -194,7 +193,7 @@ static void *threadInit(void *arg)
   CthInit(usrparam->argv);
   ConverseCommonInit(usrparam->argv);
   CpvInitialize(void*, CmiLocalQueue);
-  CpvAccess(CmiLocalQueue) = (void *) FIFO_Create();
+  CpvAccess(CmiLocalQueue) = CdsFifo_Create();
   CmiTimerInit();
   if (Cmi_initret==0) {
     Cmi_startFn(Cmi_argc, usrparam->argv);
@@ -260,7 +259,7 @@ CmiCommHandle CmiAsyncSendFn(int destPE, int size, char *msg)
 void CmiFreeSendFn(int destPE, int size, char *msg)
 {
   if (CmiMyPe()==destPE) {
-    FIFO_EnQueue(CpvAccess(CmiLocalQueue),msg);
+    CdsFifo_Enqueue(CpvAccess(CmiLocalQueue),msg);
   } else {
     McQueueAddToBack(MsgQueue[destPE],msg); 
   }
@@ -309,7 +308,7 @@ void CmiFreeBroadcastAllFn(int size, char *msg)
       CmiSyncSendFn(i,size,msg);
     }
   }
-  FIFO_EnQueue(CpvAccess(CmiLocalQueue),msg);
+  CdsFifo_Enqueue(CpvAccess(CmiLocalQueue),msg);
   CQdCreate(CpvAccess(cQdState), 1);
 }
 
index 2bb9eea954f89425d8f8cb52995aa716aaddc5a7..f08fa972fdc81b9ea925876347380ca21d70a90f 100644 (file)
@@ -15,7 +15,6 @@
 #include <stdlib.h>
 #include "converse.h"
 #include <time.h>
-#include "fifo.h"
 
 usptr_t *arena;
 static barrier_t *barr;
@@ -159,7 +158,7 @@ static void threadInit(void *arg)
   prctl(PR_SETEXITSIG, SIGHUP,0);
 
   CthInit(usrparam->argv);
-  CpvAccess(CmiLocalQueue) = (void *) FIFO_Create();
+  CpvAccess(CmiLocalQueue) = CdsFifo_Create();
   CmiTimerInit();
   /*  neighbour_init(Cmi_mype); */
   usadd(arena);
@@ -234,7 +233,7 @@ void CmiFreeSendFn(int destPE, int size, char *msg)
 {
   if (Cmi_mype==destPE) {
     CQdCreate(CpvAccess(cQdState), 1);
-    FIFO_EnQueue(CpvAccess(CmiLocalQueue),msg);
+    CdsFifo_Enqueue(CpvAccess(CmiLocalQueue),msg);
   } else {
     CmiSyncSendFn(destPE, size, msg);
     CmiFree(msg);
@@ -283,7 +282,7 @@ void CmiFreeBroadcastAllFn(int size, char *msg)
       CmiSyncSendFn(i,size,msg);
     }
   }
-  FIFO_EnQueue(CpvAccess(CmiLocalQueue),msg);
+  CdsFifo_Enqueue(CpvAccess(CmiLocalQueue),msg);
   CQdCreate(CpvAccess(cQdState), 1);
 }
 
index 7eea21451ff1dc87d70dee83a1410fb56e454027..0df7d677d9f435e06f6ae4fadf22b7a2c2238c03 100644 (file)
@@ -8,7 +8,6 @@
 #include <nx.h>
 #include <math.h>
 #include "converse.h"
-#include "fifo.h"
 
 #define MSG_TYPE 1
 #define PROCESS_PID 0
@@ -153,7 +152,7 @@ char * msg;
        {
           temp = (char *)CmiAlloc(size) ;
           memcpy(temp, msg, size) ;
-          FIFO_EnQueue(CpvAccess(CmiLocalQueue), temp);
+          CdsFifo_Enqueue(CpvAccess(CmiLocalQueue), temp);
        }
     else
           csend(MSG_TYPE, msg, size, destPE, PROCESS_PID);
@@ -182,7 +181,7 @@ void CmiFreeSendFn(destPE, size, msg)
 {
     if (Cmi_mype == destPE)
        {
-          FIFO_EnQueue(CpvAccess(CmiLocalQueue), msg);
+          CdsFifo_Enqueue(CpvAccess(CmiLocalQueue), msg);
        }
     else
        {  
@@ -231,7 +230,7 @@ char * msg;
        csend(MSG_TYPE, msg, size, ALL_NODES,PROCESS_PID);
     temp = (char *)CmiAlloc(size) ;
     memcpy(temp, msg, size) ;
-    FIFO_EnQueue(CpvAccess(CmiLocalQueue), temp); 
+    CdsFifo_Enqueue(CpvAccess(CmiLocalQueue), temp); 
     CQdCreate(CpvAccess(cQdState), Cmi_numpes);
 }
 
@@ -245,7 +244,7 @@ char * msg;
         msgid = isend(MSG_TYPE, msg, size, ALL_NODES, PROCESS_PID);
         temp = (char *)CmiAlloc(size) ;
         memcpy(temp, msg, size) ;
-        FIFO_EnQueue(CpvAccess(CmiLocalQueue), temp);
+        CdsFifo_Enqueue(CpvAccess(CmiLocalQueue), temp);
         CQdCreate(CpvAccess(cQdState), Cmi_numpes);
         return msgid;
 }
@@ -258,7 +257,7 @@ char * msg;
 {
     if (Cmi_numpes > 1)
        csend(MSG_TYPE, msg, size, ALL_NODES,PROCESS_PID);
-    FIFO_EnQueue(CpvAccess(CmiLocalQueue), msg);
+    CdsFifo_Enqueue(CpvAccess(CmiLocalQueue), msg);
     CQdCreate(CpvAccess(cQdState), Cmi_numpes);
 }
 
@@ -282,7 +281,7 @@ int usched, initret;
   Cmi_mype = mynode();
   Cmi_numpes = numnodes();
   /*  neighbour_init(Cmi_mype); */
-  CpvAccess(CmiLocalQueue)= (void *) FIFO_Create();
+  CpvAccess(CmiLocalQueue)= CdsFifo_Create();
   /*  CmiTimerInit(); */
   CthInit(argv);
   ConverseCommonInit(argv);
index 0b1be742fda6e387efa5b4d373fa0d1de7213162..aaa68a984139c85c48235b37d498234fe80ca4a4 100644 (file)
@@ -9,7 +9,6 @@
 #include <math.h>
 #include "machine.h"
 #include "converse.h"
-#include "fifo.h"
 
 #if CMK_TIMER_SIM_USE_TIMES
 #include <sys/times.h>
@@ -178,7 +177,7 @@ char * msg;
     for(i=0; i<Cmi_numpes; i++)
        if (i!= Cmi_mype) CmiSyncSendFn(i,size,msg);
          
-    FIFO_EnQueue(CpvAccess(CmiLocalQueue),msg);
+    CdsFifo_Enqueue(CpvAccess(CmiLocalQueue),msg);
 }
 
 
@@ -205,7 +204,7 @@ char * msg;
 
      buf =  (char *) CmiAlloc(size);
      memcpy(buf,msg,size);
-     FIFO_EnQueue(CpvAccess(CmiLocalQueue),buf);
+     CdsFifo_Enqueue(CpvAccess(CmiLocalQueue),buf);
 }
 
 
@@ -271,7 +270,7 @@ void ConverseInit(int argc, char **argv, CmiStartFn fn, int usc, int initret)
   Cmi_mype   = 0;
 
   McQueue = (void **) malloc(requested_npe * sizeof(void *)); 
-  for(i=0; i<requested_npe; i++) McQueue[i] = (void *) FIFO_Create();
+  for(i=0; i<requested_npe; i++) McQueue[i] = CdsFifo_Create();
   CrnInit();
   sim_initialize("sim.param",requested_npe);
   
@@ -279,7 +278,7 @@ void ConverseInit(int argc, char **argv, CmiStartFn fn, int usc, int initret)
   for(i=0; i<CmiNumPes(); i++) {
     CmiUniContextSwitch(i);
     CpvInitialize(void*, CmiLocalQueue);
-    CpvAccess(CmiLocalQueue) = (void *) FIFO_Create();
+    CpvAccess(CmiLocalQueue) = CdsFifo_Create();
     CthInit(argv);
     ConverseCommonInit(argv);
     argc=CmiGetArgc(argv);
index 53bc19b0ded01c600f063b9c29f002cda42ae19a..738f7dbf1d05da7eeee819f40b64b0a5a350ccc2 100644 (file)
@@ -198,10 +198,10 @@ int pno;
     Csi_global_time = gclock;
     Csi_start_time  = CsiTimer();
 
-    if ( !FIFO_Empty(CpvAccess(CmiLocalQueue)) )
+    if ( !CdsFifo_Empty(CpvAccess(CmiLocalQueue)) )
       {
          
-         FIFO_DeQueue(CpvAccess(CmiLocalQueue), &msg); 
+         msg = CdsFifo_Dequeue(CpvAccess(CmiLocalQueue)); 
          CmiHandleMessage(msg);
 
          elapsed_time = (REL_TIME) (CsiTimer() - Csi_start_time); 
index ce74d5ba98a37e4b612368bf2220d05cad053c32..4a5094a757fa15618b9a1e46f213463c3b1496a5 100644 (file)
@@ -10,7 +10,6 @@
 #include "converse.h"
 #include <mpproto.h>
 #include <sys/systemcfg.h>
-#include "fifo.h"
 
 #define FLIPBIT(node,bitnumber) (node ^ (1 << bitnumber))
 
@@ -175,7 +174,7 @@ void CmiSyncSendFn(int destPE, int size, char *msg)
   char *dupmsg = (char *) CmiAlloc(size);
   memcpy(dupmsg, msg, size);
   if (Cmi_mype==destPE) {
-    FIFO_EnQueue(CpvAccess(CmiLocalQueue),dupmsg);
+    CdsFifo_Enqueue(CpvAccess(CmiLocalQueue),dupmsg);
     CQdCreate(CpvAccess(cQdState), 1);
   }
   else
@@ -206,7 +205,7 @@ void CmiFreeSendFn(int destPE, int size, char *msg)
 {
   if (Cmi_mype==destPE) {
     CQdCreate(CpvAccess(cQdState), 1);
-    FIFO_EnQueue(CpvAccess(CmiLocalQueue),msg);
+    CdsFifo_Enqueue(CpvAccess(CmiLocalQueue),msg);
   } else {
     CmiAsyncSendFn(destPE, size, msg);
   }
@@ -299,7 +298,7 @@ void ConverseInit(int argc, char **argv, CmiStartFn fn, int usched, int initret)
   /* CmiSpanTreeInit(); */
   CmiTimerInit();
   CpvInitialize(void *, CmiLocalQueue);
-  CpvAccess(CmiLocalQueue) = (void *)FIFO_Create();
+  CpvAccess(CmiLocalQueue) = CdsFifo_Create();
   recdQueueInit();
   CthInit(argv);
   ConverseCommonInit(argv);
index f41603b6b5af4ece85401a6b1418e0d68b6f3843..bfe4ccbe895c30ed75cb43048920b9e3dea67a38 100644 (file)
@@ -16,7 +16,6 @@
 #include <malloc.h>
 #include <mpp/shmem.h>
 #include "converse.h"
-#include "fifo.h"
 
 /*
  *  We require statically allocated variables for locks.  This defines
@@ -180,7 +179,7 @@ void CmiSyncSendFn(int dest_pe, int size, char *msg)
   McRetrieveRemote();
 
   if (dest_pe == Cmi_mype)
-    FIFO_EnQueue(CpvAccess(CmiLocalQueue),dup_msg);
+    CdsFifo_Enqueue(CpvAccess(CmiLocalQueue),dup_msg);
   else
   {
     McEnqueueRemote(dup_msg,ALIGN8(size),dest_pe); 
@@ -201,7 +200,7 @@ void CmiFreeSendFn(int dest_pe, int size, char *msg)
   ((McMsgHdr *)msg)->msg_type = Message;
 
   if (dest_pe == Cmi_mype)
-    FIFO_EnQueue(CpvAccess(CmiLocalQueue),msg);
+    CdsFifo_Enqueue(CpvAccess(CmiLocalQueue),msg);
   else
   {
     McEnqueueRemote(msg,size,dest_pe); 
@@ -490,7 +489,7 @@ void CmiNotifyIdle(void)
 static void McInit(void)
 {
   CpvInitialize(void *, CmiLocalQueue);
-  CpvAccess(CmiLocalQueue) = FIFO_Create();
+  CpvAccess(CmiLocalQueue) = CdsFifo_Create();
   Cmi_mype = _my_pe();
   Cmi_numpes = _num_pes();
   Cmi_myrank = 0;
index 7e65422879677aa787fedf258a912ed6b062a562..411c4cd0a7b34a76c486d7fc912919acff275b79 100644 (file)
@@ -8,7 +8,6 @@
 #include <stdio.h>
 #include <math.h>
 #include "converse.h"
-#include "fifo.h"
 
 /***********************************************************************
  *
@@ -153,7 +152,7 @@ char * msg;
 {
   char *buf = (char *)CmiAlloc(size);
   memcpy(buf,msg,size);
-  FIFO_EnQueue(CmiQueues[destPE],buf);
+  CdsFifo_Enqueue(CmiQueues[destPE],buf);
   CQdCreate(CpvAccess(cQdState), 1);
 }
 
@@ -164,7 +163,7 @@ char * msg;
 {
   char *buf = (char *)CmiAlloc(size);
   memcpy(buf,msg,size);
-  FIFO_EnQueue(CmiQueues[destPE],buf);
+  CdsFifo_Enqueue(CmiQueues[destPE],buf);
   CQdCreate(CpvAccess(cQdState), 1);
   return 0;
 }
@@ -174,7 +173,7 @@ int destPE;
 int size;
 char * msg;
 {
-  FIFO_EnQueue(CmiQueues[destPE], msg);
+  CdsFifo_Enqueue(CmiQueues[destPE], msg);
   CQdCreate(CpvAccess(cQdState), 1);
 }
 
@@ -227,7 +226,7 @@ char * msg;
   int i;
   for(i=0; i<CmiNumPes(); i++)
     if (i!=CmiMyPe()) CmiSyncSendFn(i,size,msg);
-  FIFO_EnQueue(CpvAccess(CmiLocalQueue),msg);
+  CdsFifo_Enqueue(CpvAccess(CmiLocalQueue),msg);
   CQdCreate(CpvAccess(cQdState), 1);
 }
 
@@ -325,7 +324,7 @@ int usched, initret;
     t = (i==0) ? CthSelf() : CthCreate(CmiCallMain, 0, Cmi_stacksize);
     CmiThreads[i] = t;
     CmiBarred[i] = 0;
-    CmiQueues[i] = FIFO_Create();
+    CmiQueues[i] = CdsFifo_Create();
   }
   Cmi_mype = 0;
   argv = CmiInitPE();
index cce089bcca435656a8d3b4101845902cda844f61..ecc172c17741602bb3c5b882b8daa2f8b70827dc 100644 (file)
@@ -8,7 +8,6 @@
 #include <stdio.h>
 #include <math.h>
 #include "converse.h"
-#include "fifo.h"
 
 /***********************************************************************
  *
@@ -153,7 +152,7 @@ char * msg;
 {
   char *buf = (char *)CmiAlloc(size);
   memcpy(buf,msg,size);
-  FIFO_EnQueue(CmiQueues[destPE],buf);
+  CdsFifo_Enqueue(CmiQueues[destPE],buf);
   CQdCreate(CpvAccess(cQdState), 1);
 }
 
@@ -164,7 +163,7 @@ char * msg;
 {
   char *buf = (char *)CmiAlloc(size);
   memcpy(buf,msg,size);
-  FIFO_EnQueue(CmiQueues[destPE],buf);
+  CdsFifo_Enqueue(CmiQueues[destPE],buf);
   CQdCreate(CpvAccess(cQdState), 1);
   return 0;
 }
@@ -174,7 +173,7 @@ int destPE;
 int size;
 char * msg;
 {
-  FIFO_EnQueue(CmiQueues[destPE], msg);
+  CdsFifo_Enqueue(CmiQueues[destPE], msg);
   CQdCreate(CpvAccess(cQdState), 1);
 }
 
@@ -227,7 +226,7 @@ char * msg;
   int i;
   for(i=0; i<CmiNumPes(); i++)
     if (i!=CmiMyPe()) CmiSyncSendFn(i,size,msg);
-  FIFO_EnQueue(CpvAccess(CmiLocalQueue),msg);
+  CdsFifo_Enqueue(CpvAccess(CmiLocalQueue),msg);
   CQdCreate(CpvAccess(cQdState), 1);
 }
 
@@ -301,7 +300,7 @@ int usched, initret;
     t = (i==0) ? CthSelf() : CthCreate(CmiCallMain, 0, Cmi_stacksize);
     CmiThreads[i] = t;
     CmiBarred[i] = 0;
-    CmiQueues[i] = FIFO_Create();
+    CmiQueues[i] = CdsFifo_Create();
   }
   Cmi_mype = 0;
   argv = CmiInitPE();
index 8c72b719be5b0e51ce1f0bf9888db3a07e3d4d5c..c33c85f146a315893079160b537ecd7537a1cddb 100644 (file)
@@ -15,7 +15,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include "fifo.h"
 #include "queueing.h"
 
 #if CMK_DEBUG_MODE
@@ -68,7 +67,7 @@ void msgListCleanup(void)
 void msgListCache(void)
 {
   CqsEnumerateQueue((Queue)CpvAccess(CsdSchedQueue), &schedQueue);
-  FIFO_Enumerate((FIFO_QUEUE *)CpvAccess(CmiLocalQueue), &FIFOQueue);
+  FIFOQueue = CdsFifo_Enumerate((CdsFifo)CpvAccess(CmiLocalQueue));
   schedIndex = 0;
   FIFOIndex = 0;
   debugIndex = 0;
@@ -172,8 +171,8 @@ char* getMsgListFIFO(void)
   int maxLength;
 
   ending = NUM_MESSAGES;
-  if ( (ending+FIFOIndex) > ((FIFO_QUEUE *)(CpvAccess(CmiLocalQueue)))->fill) {
-    ending = (((FIFO_QUEUE *)(CpvAccess(CmiLocalQueue)))->fill) - FIFOIndex;
+  if ( (ending+FIFOIndex) > CdsFifo_Length(CpvAccess(CmiLocalQueue))) {
+    ending = CdsFifo_Length(CpvAccess(CmiLocalQueue)) - FIFOIndex;
   }
   maxLength = ending * sizeof(char) * 20 + 1;
   list = (char *)malloc(maxLength);
@@ -208,8 +207,8 @@ char* getMsgListDebug(void)
   char *temp;
 
   ending = NUM_MESSAGES;
-  if ( (ending+debugIndex) > ((FIFO_QUEUE *)(CpvAccess(debugQueue)))->fill) {
-      ending = (((FIFO_QUEUE *)(CpvAccess(debugQueue)))->fill) - debugIndex;
+  if ( (ending+debugIndex) > CdsFifo_Length(CpvAccess(debugQueue))) {
+      ending = CdsFifo_Length(CpvAccess(debugQueue)) - debugIndex;
   }
   maxLength = ending * sizeof(char) * 20 + 1;
   list = (char *)malloc(maxLength);
@@ -217,7 +216,7 @@ char* getMsgListDebug(void)
   strcpy(list, "");
 
   if(DQueue != 0) free(DQueue);
-  FIFO_Enumerate((FIFO_QUEUE *)CpvAccess(debugQueue), &DQueue);
+  DQueue = CdsFifo_Enumerate(CpvAccess(debugQueue));
 
   for(int i=debugIndex; i < ending+debugIndex; i++){
     temp = genericViewMsgFunction((char *)DQueue[i], 0);
index f7afe72f86df3ce7825c251d7f2023c1eaef770e..7b1e51efeeaead6a9d31b6c19bb9aeea15adc9e9 100644 (file)
@@ -6,7 +6,6 @@
  *****************************************************************************/
 
 #include "waitqd.h"
-#include "fifo.h"
 
 /* readonly */ 
 CkChareID waitqd_qdhandle;
@@ -53,11 +52,11 @@ waitqd_QDChare::waitqd_QDChare(CkArgMsg *m) {
 
 void waitqd_QDChare::waitQD(void) {
   if (waitStarted == 1) {
-    FIFO_EnQueue((FIFO_QUEUE*)threadList, (void *)CthSelf());
+    CdsFifo_Enqueue((CdsFifo)threadList, (void *)CthSelf());
   } else {
     waitStarted = 1;
-    threadList = (void*) FIFO_Create();
-    FIFO_EnQueue((FIFO_QUEUE*) threadList, (void *)CthSelf());
+    threadList = (void*) CdsFifo_Create();
+    CdsFifo_Enqueue((CdsFifo) threadList, (void *)CthSelf());
     CkStartQD(EntryIndex(waitqd_QDChare, onQD, CkQdMsg), &thishandle);
   }
   CthSuspend();
@@ -65,11 +64,11 @@ void waitqd_QDChare::waitQD(void) {
 
 void waitqd_QDChare::onQD(CkQdMsg *ckqm) {
   CthThread pthr;
-  while(!FIFO_Empty((FIFO_QUEUE*) threadList)) {
-    FIFO_DeQueue((FIFO_QUEUE*) threadList, (void**) &pthr);
+  while(!CdsFifo_Empty((CdsFifo) threadList)) {
+    pthr = CdsFifo_Dequeue((CdsFifo) threadList);
     CthAwaken(pthr);
   }
-  FIFO_Destroy((FIFO_QUEUE*) threadList);
+  CdsFifo_Destroy((CdsFifo) threadList);
   threadList = 0;
   waitStarted = 0;
   delete ckqm;
index c3b1b9a15f702cb92eec5aaa7f25bfa2c5282d8d..9920bb685579e94478014204bad1bf1e73ef0c54 100644 (file)
@@ -85,7 +85,6 @@ void CcsImpl_kill(void)
 /* move */
 
 #if CMK_DEBUG_MODE
-#include "fifo.h"
 CpvDeclare(int, freezeModeFlag);
 CpvDeclare(int, continueFlag);
 CpvDeclare(int, stepFlag);
@@ -297,7 +296,7 @@ void CpdInit(void)
   CpvAccess(stepFlag) = 0;
 
   CpvInitialize(void *, debugQueue);
-  CpvAccess(debugQueue) = FIFO_Create();
+  CpvAccess(debugQueue) = CdsFifo_Create();
     
   CpdInitializeObjectTable();
   CpdInitializeHandlerArray();
index c3b1b9a15f702cb92eec5aaa7f25bfa2c5282d8d..9920bb685579e94478014204bad1bf1e73ef0c54 100644 (file)
@@ -85,7 +85,6 @@ void CcsImpl_kill(void)
 /* move */
 
 #if CMK_DEBUG_MODE
-#include "fifo.h"
 CpvDeclare(int, freezeModeFlag);
 CpvDeclare(int, continueFlag);
 CpvDeclare(int, stepFlag);
@@ -297,7 +296,7 @@ void CpdInit(void)
   CpvAccess(stepFlag) = 0;
 
   CpvInitialize(void *, debugQueue);
-  CpvAccess(debugQueue) = FIFO_Create();
+  CpvAccess(debugQueue) = CdsFifo_Create();
     
   CpdInitializeObjectTable();
   CpdInitializeHandlerArray();
index b3c27a498d458dffa4da36a0b5b6adf334fe80fa..cb6258921ec6688e69b1b0a5c8594d94534910d4 100644 (file)
@@ -50,8 +50,6 @@ extern void CldModuleInit(void);
 #include <sys/timeb.h>
 #endif
 
-#include "fifo.h"
-
 /*****************************************************************************
  *
  * Unix Stub Functions
@@ -707,7 +705,7 @@ void (*handler)();
  *      - returns a message just retrieved from some other PE, not from
  *        local.  If no such message exists, returns 0.
  *
- * CpvExtern(FIFO_Queue, CmiLocalQueue);
+ * CpvExtern(CdsFifo, CmiLocalQueue);
  *
  *      - a FIFO queue containing all messages from the local processor.
  *
@@ -902,21 +900,20 @@ int CsdScheduler(int maxmsgs)
        if(strncmp((char *)((char *)msg+CmiMsgHeaderSizeBytes),"req",3)!=0){
           /*CQdCreate(CpvAccess(cQdState), 1);*/
          CsdEndIdle();
-         FIFO_EnQueue(CpvAccess(debugQueue), msg);
+         CdsFifo_Enqueue(CpvAccess(debugQueue), msg);
          continue;
         }
       } 
     } else {
       /* If the debugQueue contains any messages, process them */
-      while(((!FIFO_Empty(CpvAccess(debugQueue))) && (CpvAccess(freezeModeFlag)==0))){
-        char *queuedMsg;
-       FIFO_DeQueue(CpvAccess(debugQueue), (void**)&queuedMsg);
+      while(((!CdsFifo_Empty(CpvAccess(debugQueue))) && (CpvAccess(freezeModeFlag)==0))){
+        char *queuedMsg = (char *)CdsFifo_Dequeue(CpvAccess(debugQueue));
        CmiHandleMessage(queuedMsg);
        maxmsgs--; if (maxmsgs==0) return maxmsgs;      
       }
     }
 #endif
-    if (msg==0) FIFO_DeQueue(localqueue, (void**)&msg);
+    if (msg==0) msg = CdsFifo_Dequeue(localqueue);
 #if CMK_NODE_QUEUE_AVAILABLE
        csdMsgFlag = 0;
     if (msg==0) msg = CmiGetNonLocalNodeQ();
@@ -960,7 +957,7 @@ int handler;
   while (1) {
     side ^= 1;
     if (side) msg = CmiGetNonLocal();
-    else      FIFO_DeQueue(localqueue, (void**)&msg);
+    else      msg = CdsFifo_Dequeue(localqueue);
     if (msg) {
       if (CmiGetHandler(msg)==handler) {
        CQdProcess(CpvAccess(cQdState), 1);
@@ -968,7 +965,7 @@ int handler;
        CmiHandleMessage(msg);
        return;
       } else {
-       FIFO_EnQueue(localqueue, msg);
+       CdsFifo_Enqueue(localqueue, msg);
       }
     }
   }
index 4997b27359ac7bdd5de90344959f5267b78e2905..88d10bb990261bb5a1c9a3106825be75c450b16b 100644 (file)
@@ -1205,6 +1205,7 @@ void CrnSrand(int);
 int CrnRand(void);
 double CrnDrand(void);
 
+#include "conv-lists.h"
 #include "conv-trace.h"
 
 /**** DEAL WITH DIFFERENCES: KERNIGHAN-RITCHIE-C, ANSI-C, AND C++ ****/
index 56dc356bd8127de063c9cf983a1a6f5b08451c8a..0f9db945cef8f5f15934214b1587db3131f74f2c 100644 (file)
@@ -31,7 +31,6 @@
 #include "cpthreads.h"
 #include <stdlib.h>
 #include <errno.h>
-#include "fifo.h"
 
 /******************************************************************************
  *
@@ -439,7 +438,7 @@ int Cpthread_mutex_init(Cpthread_mutex_t *mutex, Cpthread_mutexattr_t *mattr)
   if (mattr->magic != MATTR_MAGIC) errcode(EINVAL);
   mutex->magic = MUTEX_MAGIC;
   mutex->onpe = CmiMyPe();
-  mutex->users = FIFO_Create();
+  mutex->users = CdsFifo_Create();
   return 0;
 }
 
@@ -447,9 +446,9 @@ int Cpthread_mutex_destroy(Cpthread_mutex_t *mutex)
 {
   if (mutex->magic != MUTEX_MAGIC) errcode(EINVAL);
   if (mutex->onpe != CmiMyPe()) errspan();
-  if (!FIFO_Empty(mutex->users)) errcode(EBUSY);
+  if (!CdsFifo_Empty(mutex->users)) errcode(EBUSY);
   mutex->magic = 0;
-  FIFO_Destroy(mutex->users);
+  CdsFifo_Destroy(mutex->users);
   return 0;
 }
 
@@ -458,8 +457,8 @@ int Cpthread_mutex_lock(Cpthread_mutex_t *mutex)
   CthThread self = CthSelf();
   if (mutex->magic != MUTEX_MAGIC) errcode(EINVAL);
   if (mutex->onpe != CmiMyPe()) errspan();
-  FIFO_EnQueue(mutex->users, self);
-  if (FIFO_Peek(mutex->users) != self) CthSuspend();
+  CdsFifo_Enqueue(mutex->users, self);
+  if (CdsFifo_Peek(mutex->users) != self) CthSuspend();
   return 0;
 }
 
@@ -468,8 +467,8 @@ int Cpthread_mutex_trylock(Cpthread_mutex_t *mutex)
   CthThread self = CthSelf();
   if (mutex->magic != MUTEX_MAGIC) errcode(EINVAL);
   if (mutex->onpe != CmiMyPe()) errspan();
-  if (!FIFO_Empty(mutex->users)) errcode(EBUSY);
-  FIFO_EnQueue(mutex->users, self);
+  if (!CdsFifo_Empty(mutex->users)) errcode(EBUSY);
+  CdsFifo_Enqueue(mutex->users, self);
   return 0;
 }
 
@@ -479,9 +478,9 @@ int Cpthread_mutex_unlock(Cpthread_mutex_t *mutex)
   CthThread sleeper;
   if (mutex->magic != MUTEX_MAGIC) errcode(EINVAL);
   if (mutex->onpe != CmiMyPe()) errspan();
-  if (FIFO_Peek(mutex->users) != self) errcode(EPERM);
-  FIFO_Pop(mutex->users);
-  sleeper = FIFO_Peek(mutex->users);
+  if (CdsFifo_Peek(mutex->users) != self) errcode(EPERM);
+  CdsFifo_Pop(mutex->users);
+  sleeper = CdsFifo_Peek(mutex->users);
   if (sleeper) CthAwaken(sleeper);
   return 0;
 }
@@ -523,7 +522,7 @@ int Cpthread_cond_init(Cpthread_cond_t *cond, Cpthread_condattr_t *cattr)
   if (cattr->magic != CATTR_MAGIC) errcode(EINVAL);
   cond->magic = COND_MAGIC;
   cond->onpe = CmiMyPe();
-  cond->users = FIFO_Create();
+  cond->users = CdsFifo_Create();
   return 0;
 }
 
@@ -532,7 +531,7 @@ int Cpthread_cond_destroy(Cpthread_cond_t *cond)
   if (cond->magic != COND_MAGIC) errcode(EINVAL);
   if (cond->onpe != CmiMyPe()) errspan();
   cond->magic = 0;
-  FIFO_Destroy(cond->users);
+  CdsFifo_Destroy(cond->users);
   return 0;
 }
 
@@ -546,14 +545,14 @@ int Cpthread_cond_wait(Cpthread_cond_t *cond, Cpthread_mutex_t *mutex)
   if (cond->onpe != CmiMyPe()) errspan();
   if (mutex->onpe != CmiMyPe()) errspan();
 
-  if (FIFO_Peek(mutex->users) != self) errcode(EPERM);
-  FIFO_Pop(mutex->users);
-  sleeper = FIFO_Peek(mutex->users);
+  if (CdsFifo_Peek(mutex->users) != self) errcode(EPERM);
+  CdsFifo_Pop(mutex->users);
+  sleeper = CdsFifo_Peek(mutex->users);
   if (sleeper) CthAwaken(sleeper);
-  FIFO_EnQueue(cond->users, self);
+  CdsFifo_Enqueue(cond->users, self);
   CthSuspend();
-  FIFO_EnQueue(mutex->users, self);
-  if (FIFO_Peek(mutex->users) != self) CthSuspend();
+  CdsFifo_Enqueue(mutex->users, self);
+  if (CdsFifo_Peek(mutex->users) != self) CthSuspend();
   return 0;
 }
 
@@ -562,7 +561,7 @@ int Cpthread_cond_signal(Cpthread_cond_t *cond)
   CthThread sleeper;
   if (cond->magic != COND_MAGIC) errcode(EINVAL);
   if (cond->onpe != CmiMyPe()) errspan();
-  FIFO_DeQueue(cond->users, (void**)&sleeper);
+  sleeper = CdsFifo_Dequeue(cond->users);
   if (sleeper) CthAwaken(sleeper);
   return 0;
 }
@@ -573,7 +572,7 @@ int Cpthread_cond_broadcast(Cpthread_cond_t *cond)
   if (cond->magic != COND_MAGIC) errcode(EINVAL);
   if (cond->onpe != CmiMyPe()) errspan();
   while (1) {
-    FIFO_DeQueue(cond->users, (void**)&sleeper);
+    sleeper = CdsFifo_Dequeue(cond->users);
     if (sleeper==0) break;
     CthAwaken(sleeper);
   }
diff --git a/src/conv-core/fifo.c b/src/conv-core/fifo.c
deleted file mode 100644 (file)
index caf48c9..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-/*****************************************************************************
- * $Source$
- * $Author$
- * $Date$
- * $Revision$
- *****************************************************************************/
-
-#include <stdlib.h>
-#include "converse.h"
-#include "fifo.h"
-
-
-FIFO_QUEUE *FIFO_Create(void)
-{
-  FIFO_QUEUE *queue;
-  queue = (FIFO_QUEUE *)malloc(sizeof(FIFO_QUEUE));
-  _MEMCHECK(queue);
-  queue->block = (void **) malloc(_FIFO_BLK_LEN * sizeof(void *));
-  _MEMCHECK(queue->block);
-  queue->size = _FIFO_BLK_LEN;
-  queue->push = queue->pull = 0;
-  queue->fill = 0;
-  return queue;
-}
-
-int FIFO_Fill(FIFO_QUEUE *queue)
-{
-  return queue->fill;
-}
-
-int FIFO_Empty(FIFO_QUEUE *queue)
-{
-  return !(queue->fill);
-}
-
-static void FIFO_Expand(FIFO_QUEUE *queue)
-{
-  int newsize; void **newblock; int rest;
-  int    pull  = queue->pull;
-  int    size  = queue->size;
-  void **block = queue->block;
-  newsize = size * 3;
-  newblock = (void**)malloc(newsize * sizeof(void *));
-  _MEMCHECK(newblock);
-  rest = size - pull;
-  memcpy(newblock, block + pull, rest * sizeof(void *));
-  memcpy(newblock + rest, block, pull * sizeof(void *));
-  free(block);
-  queue->block = newblock;
-  queue->size = newsize;
-  queue->pull = 0;
-  queue->push = size;
-  queue->fill = size;
-}
-
-void FIFO_EnQueue(FIFO_QUEUE *queue, void *elt)
-{
-  if (queue->fill == queue->size) FIFO_Expand(queue);
-  queue->block[queue->push] = elt;
-  queue->push = ((queue->push + 1) % queue->size);
-  queue->fill++;
-}
-
-void FIFO_EnQueue_Front(FIFO_QUEUE *queue, void *elt)
-{
-  if (queue->fill == queue->size) FIFO_Expand(queue);
-  queue->pull = ((queue->pull + queue->size - 1) % queue->size);
-  queue->block[queue->pull] = elt;
-  queue->fill++;
-}
-
-void *FIFO_Peek(FIFO_QUEUE *queue)
-{
-  if (queue->fill == 0) return 0;
-  return queue->block[queue->pull];
-}
-
-void FIFO_Pop(FIFO_QUEUE *queue)
-{
-  if (queue->fill) {
-    queue->pull = (queue->pull+1) % queue->size;
-    queue->fill--;
-  }
-}
-
-void FIFO_DeQueue(FIFO_QUEUE *queue, void **element)
-{
-  *element = 0;
-  if (queue->fill) {
-    *element = queue->block[queue->pull];
-    queue->pull = (queue->pull+1) % queue->size;
-    queue->fill--;
-  }
-}
-
-
-/* This assumes the the caller has not allocated
-   memory for element 
-*/
-void FIFO_Enumerate(FIFO_QUEUE *queue, void ***element)
-{
-  int i = 0;
-  int num = queue->fill;
-  int pull = queue->pull;
-  *element = 0;
-  if(num == 0)
-    return;
-  *element = (void **)malloc(num * sizeof(void *));
-  _MEMCHECK(*element);
-  while(num > 0){
-    (*element)[i++] = queue->block[pull];
-    pull = (pull + 1) % queue->size;
-    num--;
-  }
-}
-
-void FIFO_Destroy(FIFO_QUEUE *queue)
-{
-  if (!FIFO_Empty(queue)) {
-    CmiError("Tried to FIFO_Destroy a non-empty queue.\n");
-    exit(1);
-  }
-  free(queue->block);
-  free(queue);
-}
diff --git a/src/conv-core/fifo.h b/src/conv-core/fifo.h
deleted file mode 100644 (file)
index 412c9f0..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*****************************************************************************
- * $Source$
- * $Author$
- * $Date$
- * $Revision$
- *****************************************************************************/
-
-#ifndef FIFO_H
-#define FIFO_H
-
-typedef struct fifo_queue {
-  void **block;
-  unsigned int size;
-  unsigned int pull;
-  unsigned int push;
-  unsigned int fill;
-} FIFO_QUEUE;
-
-#define _FIFO_BLK_LEN 512
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-FIFO_QUEUE *FIFO_Create(void);
-int FIFO_Fill(FIFO_QUEUE *);
-int FIFO_Empty(FIFO_QUEUE *);
-void FIFO_EnQueue(FIFO_QUEUE *queue, void *elt);
-void FIFO_EnQueue_Front(FIFO_QUEUE *queue, void *elt);
-void *FIFO_Peek(FIFO_QUEUE *queue);
-void FIFO_Pop(FIFO_QUEUE *queue);
-void FIFO_DeQueue(FIFO_QUEUE *queue, void **element);
-void FIFO_Enumerate(FIFO_QUEUE *queue, void ***element);
-void FIFO_Destroy(FIFO_QUEUE *queue);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
index 2bcc2e86af542583e10317e5963916e08866da60..03dc1de8d3a1f19f40baee61430efd3e42e1c09b 100644 (file)
@@ -101,7 +101,7 @@ CVHEADERS=cpthreads.h converse.h conv-mach.h conv-mach.sh \
 
 # The .c files are there to be #included by clients whole
 # This is a bit unusual, but makes client linking simpler.
-UTILHEADERS=pup.h pup_c.h ckhashtable.h cklists.h \
+UTILHEADERS=pup.h pup_c.h ckhashtable.h cklists.h conv-lists.h \
        sockRoutines.h sockRoutines.c
 
 CKHEADERS=ck.h ckstream.h envelope.h init.h qd.h charm.h charm++.h \
@@ -182,9 +182,9 @@ TRACELIBS=libtrace-none.a libtrace-projections.a libtrace-summary.a
 
 CVLIBS=libconv-core.a libconv-cplus-n.a libconv-cplus-y.a libconv-util.a libldb-rand.o libldb-spray.o libldb-graph.o libldb-test.o $(TRACELIBS)
 
-LIBCONV_CORE=threads.o convcore.o conv-conds.o queueing.o fifo.o msgmgr.o memory.o cpm.o cpthreads.o futures.o cldb.o random.o debug-message.o debug-object.o info.o generate.o edgelist.o conv-ccs.o quiescence.o 
+LIBCONV_CORE=threads.o convcore.o conv-conds.o queueing.o msgmgr.o memory.o cpm.o cpthreads.o futures.o cldb.o random.o debug-message.o debug-object.o info.o generate.o edgelist.o conv-ccs.o quiescence.o 
 
-LIBCONV_UTIL=pup_util.o pup_xlater.o pup_c.o ckhashtable.o sockRoutines.o
+LIBCONV_UTIL=pup_util.o pup_xlater.o pup_c.o ckhashtable.o sockRoutines.o conv-lists.o
 
 LIBCONV_UTILF=pup_f.o
 
@@ -221,9 +221,6 @@ libconv-utilf.a: $(LIBCONV_UTILF)
 cpm.o: cpm.c $(CVHEADERS)
        $(CHARMC) cpm.c
 
-fifo.o: fifo.c $(CVHEADERS)
-       $(CHARMC) fifo.c
-
 threads.o: threads.c $(CVHEADERS)
        $(CHARMC) -IQuickThreads threads.c
 
@@ -297,6 +294,9 @@ pup_f.o: pup_f.f90
 ckhashtable.o: ckhashtable.C ckhashtable.h
        $(CHARMC) -o ckhashtable.o ckhashtable.C
 
+conv-lists.o: conv-lists.C $(UTILHEADERS)
+       $(CHARMC) -o conv-lists.o conv-lists.C
+
 ###############################################################################
 #
 # Charm Libraries
index cc8a40034a03a4051b6e85dc02a335136d86a774..2950257a886ebb63d75b90ddb98f8e01ea1d20fa 100644 (file)
@@ -10,6 +10,14 @@ class CkQ {
     int blklen;
     int first;
     int len;
+    void _expand(void) {
+      int newlen=len*2;
+      T *newblk = new T[newlen];
+      memcpy(newblk, block+first, sizeof(T)*(blklen-first));
+      memcpy(newblk+blklen-first, block, sizeof(T)*first);
+      delete[] block; block = newblk;
+      blklen = newlen; first = 0;
+    }
   public:
     CkQ() :first(0),len(0) {
       block = new T[blklen=16];
@@ -29,23 +37,33 @@ class CkQ {
       } else return T(0);
     }
     void enq(const T &elt) {
-      if(len==blklen) {
-       int newlen=len*2;
-        T *newblk = new T[newlen];
-        memcpy(newblk, block+first, sizeof(T)*(blklen-first));
-        memcpy(newblk+blklen-first, block, sizeof(T)*first);
-        delete[] block; block = newblk;
-        blklen = newlen; first = 0;
-      }
+      if(len==blklen) _expand();
       block[(first+len)%blklen] = elt;
       len++;
     }
+    // stack semantics, needed to replace FIFO_QUEUE of converse
+    void push(const T &elt) {
+      if(len==blklen) _expand();
+      first = (first-1+blklen)%blklen;
+      block[first] = elt;
+      len++;
+    }
     //Peek at the n'th item from the queue
     T& operator[](size_t n) 
     {
        n=(n+first)%blklen;
        return block[n];
     }
+    // needed to replace FIFO_Enumerate
+    T* getArray(void) {
+      T *newblk = new T[len];
+      int i,j;
+      for(i=0,j=first;i<len;i++){
+        newblk[i] = block[j];
+        j = (j+1)%blklen;
+      }
+      return newblk;
+    }
 };
 
 template <class T>
diff --git a/src/util/conv-lists.C b/src/util/conv-lists.C
new file mode 100644 (file)
index 0000000..838d6f2
--- /dev/null
@@ -0,0 +1,18 @@
+#include "conv-lists.h"
+#include "cklists.h"
+
+typedef CkQ<void*> _Fifo;
+
+CdsFifo CdsFifo_Create(void) { return (CdsFifo) new _Fifo(); }
+CdsFifo CdsFifo_Create_len(int len) { return (CdsFifo) new _Fifo(len); }
+void    CdsFifo_Enqueue(CdsFifo q, void *elt) { ((_Fifo*)q)->enq(elt); }
+void *  CdsFifo_Dequeue(CdsFifo q) { return ((_Fifo*)q)->deq(); }
+void    CdsFifo_Push(CdsFifo q, void *elt) { ((_Fifo*)q)->push(elt); }
+void *  CdsFifo_Pop(CdsFifo q) { return ((_Fifo*)q)->deq(); }
+void    CdsFifo_Destroy(CdsFifo q) { delete ((_Fifo*)q); }
+void ** CdsFifo_Enumerate(CdsFifo q) { return ((_Fifo*)q)->getArray(); }
+int     CdsFifo_Empty(CdsFifo q) { return (int)((_Fifo*)q)->isEmpty(); }
+void *  CdsFifo_Peek(CdsFifo q) { 
+  return ((_Fifo*)q)->length() ? (*((_Fifo*)q))[0] : 0; 
+}
+int     CdsFifo_Length(CdsFifo q) { return ((_Fifo*)q)->length(); }
diff --git a/src/util/conv-lists.h b/src/util/conv-lists.h
new file mode 100644 (file)
index 0000000..c06efd7
--- /dev/null
@@ -0,0 +1,26 @@
+#ifndef _CONV_LISTS_H
+#define _CONV_LISTS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef void *CdsFifo;
+
+CdsFifo CdsFifo_Create(void);
+CdsFifo CdsFifo_Create_len(int len);
+void    CdsFifo_Enqueue(CdsFifo q, void *elt);
+void *  CdsFifo_Dequeue(CdsFifo q);
+void    CdsFifo_Push(CdsFifo q, void *elt);
+void *  CdsFifo_Pop(CdsFifo q);
+void    CdsFifo_Destroy(CdsFifo q);
+void ** CdsFifo_Enumerate(CdsFifo q);
+int     CdsFifo_Empty(CdsFifo q);
+void *  CdsFifo_Peek(CdsFifo q);
+int     CdsFifo_Length(CdsFifo q);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif