changeset 27:bd38feb38c80 MC_shared

Added numInPrivQ
author Some Random Person <seanhalle@yahoo.com>
date Sun, 04 Mar 2012 14:25:24 -0800
parents c3049c8bd0fe
children dabefab7d264
files BlockingQueue.c PrivateQueue.c PrivateQueue.h
diffstat 3 files changed, 25 insertions(+), 8 deletions(-) [+]
line diff
     1.1 --- a/BlockingQueue.c	Mon Feb 13 10:36:44 2012 -0800
     1.2 +++ b/BlockingQueue.c	Sun Mar 04 14:25:24 2012 -0800
     1.3 @@ -34,7 +34,7 @@
     1.4  CASQueueStruc* makeCASQ()
     1.5   {
     1.6     CASQueueStruc* retQ;
     1.7 -   retQ = (CASQueueStruc *) VMS_int__malloc( sizeof( CASQueueStruc ) );
     1.8 +   retQ = (CASQueueStruc *) VMS_WL__malloc( sizeof( CASQueueStruc ) );
     1.9  
    1.10     retQ->insertLock = UNLOCKED;
    1.11     retQ->extractLock= UNLOCKED;
    1.12 @@ -159,7 +159,7 @@
    1.13  SRSWQueueStruc* makeSRSWQ()
    1.14   {
    1.15     SRSWQueueStruc* retQ;
    1.16 -   retQ = (SRSWQueueStruc *) VMS_int__malloc( sizeof( SRSWQueueStruc ) );
    1.17 +   retQ = (SRSWQueueStruc *) VMS_WL__malloc( sizeof( SRSWQueueStruc ) );
    1.18     memset( retQ->startOfData, 0, 1024 * sizeof(void *) );
    1.19     
    1.20     retQ->extractPos = &(retQ->startOfData[0]); //side by side == empty
    1.21 @@ -298,11 +298,11 @@
    1.22  SRMWQueueStruc* makeSRMWQ()
    1.23   { SRMWQueueStruc* retQ;
    1.24     
    1.25 -   retQ = (SRMWQueueStruc *) VMS_int__malloc( sizeof( SRMWQueueStruc ) );
    1.26 +   retQ = (SRMWQueueStruc *) VMS_WL__malloc( sizeof( SRMWQueueStruc ) );
    1.27     
    1.28     retQ->numInternalQs = 0;
    1.29     retQ->internalQsSz  = 10;
    1.30 -   retQ->internalQs = VMS_int__malloc( retQ->internalQsSz * sizeof(SRSWQueueStruc *));
    1.31 +   retQ->internalQs = VMS_WL__malloc( retQ->internalQsSz * sizeof(SRSWQueueStruc *));
    1.32     
    1.33     retQ->lastQReadFrom = 0;
    1.34     
    1.35 @@ -328,7 +328,7 @@
    1.36        oldSz            = Q->internalQsSz;
    1.37        oldArray         = Q->internalQs;
    1.38        Q->internalQsSz *= 2;
    1.39 -      Q->internalQs    = VMS_int__malloc( Q->internalQsSz * sizeof(SRSWQueueStruc *));
    1.40 +      Q->internalQs    = VMS_WL__malloc( Q->internalQsSz * sizeof(SRSWQueueStruc *));
    1.41        for( i = 0; i < oldSz; i++ )
    1.42         { Q->internalQs[i] = oldArray[i];
    1.43         }
     2.1 --- a/PrivateQueue.c	Mon Feb 13 10:36:44 2012 -0800
     2.2 +++ b/PrivateQueue.c	Sun Mar 04 14:25:24 2012 -0800
     2.3 @@ -26,9 +26,9 @@
     2.4  PrivQueueStruc* makePrivQ()
     2.5   {
     2.6     PrivQueueStruc* retQ;
     2.7 -   retQ = (PrivQueueStruc *) VMS_int__malloc( sizeof( PrivQueueStruc ) );
     2.8 +   retQ = (PrivQueueStruc *) VMS_WL__malloc( sizeof( PrivQueueStruc ) );
     2.9  
    2.10 -   retQ->startOfData = VMS_int__malloc( 1024 * sizeof(void *) );
    2.11 +   retQ->startOfData = VMS_WL__malloc( 1024 * sizeof(void *) );
    2.12     memset( retQ->startOfData, 0, 1024 * sizeof(void *) );
    2.13     retQ->extractPos = &(retQ->startOfData[0]); //side by side == empty
    2.14     retQ->insertPos  = &(retQ->startOfData[1]); // so start pos's have to be
    2.15 @@ -46,7 +46,7 @@
    2.16     oldSize           = Q->endOfData - Q->startOfData;
    2.17     newSize           = 2 * oldSize;
    2.18     oldStartOfData = Q->startOfData;
    2.19 -   Q->startOfData = VMS_int__malloc( newSize * sizeof(void *) );
    2.20 +   Q->startOfData = VMS_WL__malloc( newSize * sizeof(void *) );
    2.21     memcpy(Q->startOfData, oldStartOfData, oldSize * sizeof(void *));
    2.22     VMS_int__free(oldStartOfData);
    2.23     
    2.24 @@ -139,3 +139,19 @@
    2.25        //Q is full
    2.26     return FALSE;
    2.27   }
    2.28 +
    2.29 +int
    2.30 +numInPrivQ( PrivQueueStruc *Q )
    2.31 + {    
    2.32 +   void **insertPos  = Q->insertPos;
    2.33 +   void **extractPos = Q->extractPos;
    2.34 +   
    2.35 +   int numInQ;
    2.36 +   
    2.37 +   if( (numInQ = insertPos - extractPos) >= 0 ) return numInQ;
    2.38 +   else 
    2.39 +    { int size = Q->endOfData - Q->startOfData;
    2.40 +      int numEmpty = extractPos - insertPos; //not efficient, but easier to read
    2.41 +      return size - numEmpty;
    2.42 +    }
    2.43 + }
     3.1 --- a/PrivateQueue.h	Mon Feb 13 10:36:44 2012 -0800
     3.2 +++ b/PrivateQueue.h	Sun Mar 04 14:25:24 2012 -0800
     3.3 @@ -34,6 +34,7 @@
     3.4  void*            readPrivQ ( PrivQueueStruc *Q );
     3.5  void             writePrivQ( void *in, PrivQueueStruc *Q );
     3.6  int              writeIfSpacePrivQ( void * in, PrivQueueStruc* Q ); //return
     3.7 +int              numInPrivQ( PrivQueueStruc *Q );
     3.8                      // false when full
     3.9  
    3.10  #endif	/* _PRIVATE_QUEUE_H */