changeset 11:3562716ebdbd VMS__malloc_brch

added numInPrivQ service
author Me
date Thu, 04 Nov 2010 17:54:08 -0700
parents 88efea74818a
children 3134d8a1e8e3 447e97a52426
files BlockingQueue.c PrivateQueue.c PrivateQueue.h
diffstat 3 files changed, 22 insertions(+), 5 deletions(-) [+]
line diff
     1.1 --- a/BlockingQueue.c	Tue Nov 02 16:48:22 2010 -0700
     1.2 +++ b/BlockingQueue.c	Thu Nov 04 17:54:08 2010 -0700
     1.3 @@ -296,7 +296,6 @@
     1.4      }
     1.5   }
     1.6  
     1.7 -
     1.8  void writeSRSWQ( void * in, SRSWQueueStruc* Q )
     1.9   {
    1.10     int  tries   = 0;
     2.1 --- a/PrivateQueue.c	Tue Nov 02 16:48:22 2010 -0700
     2.2 +++ b/PrivateQueue.c	Thu Nov 04 17:54:08 2010 -0700
     2.3 @@ -2,8 +2,6 @@
     2.4   *  Copyright 2009 OpenSourceStewardshipFoundation.org
     2.5   *  Licensed under GNU General Public License version 2
     2.6   *
     2.7 - * NOTE: this version of SRSW correct as of April 25, 2010
     2.8 - *
     2.9   * Author: seanhalle@yahoo.com
    2.10   */
    2.11  
    2.12 @@ -83,6 +81,24 @@
    2.13     return NULL;
    2.14   }
    2.15  
    2.16 +int32
    2.17 +numInPrivQ( PrivQueueStruc *Q )
    2.18 + { int32 size, numIn;
    2.19 + 
    2.20 +   if( Q->insertPos < Q->extractPos )
    2.21 +    {    //insert has wrapped around so numIn is:
    2.22 +         // insertPos + size - extractPos -- Consider, is empty when
    2.23 +         // extractPos = endOfData and insert = start -- correctly get zero
    2.24 +      size  = Q->endOfData - Q->startOfData;
    2.25 +      numIn = Q->insertPos + size - Q->extractPos;
    2.26 +    }
    2.27 +   else
    2.28 +    {
    2.29 +      numIn =  Q->insertPos -  Q->extractPos -1;//-1 bec empty @ side-by-side
    2.30 +    }
    2.31 +   return numIn;
    2.32 + }
    2.33 +
    2.34  
    2.35  /*Expands the queue size automatically when it's full
    2.36   */
     3.1 --- a/PrivateQueue.h	Tue Nov 02 16:48:22 2010 -0700
     3.2 +++ b/PrivateQueue.h	Thu Nov 04 17:54:08 2010 -0700
     3.3 @@ -9,6 +9,7 @@
     3.4  #define	_PRIVATE_QUEUE_H
     3.5  
     3.6  #include <pthread.h>
     3.7 +#include "../VMS_primitive_data_types.h"
     3.8  
     3.9  #define TRUE     1
    3.10  #define FALSE    0
    3.11 @@ -17,7 +18,6 @@
    3.12  #define UNLOCKED 0
    3.13  
    3.14  
    3.15 -/* It is the data that is shared so only need one mutex. */
    3.16  typedef struct
    3.17   { void      **insertPos;
    3.18     void      **extractPos;
    3.19 @@ -30,8 +30,10 @@
    3.20  PrivQueueStruc*  makePrivQ ( );
    3.21  void*            readPrivQ ( PrivQueueStruc *Q );
    3.22  void             writePrivQ( void *in, PrivQueueStruc *Q );
    3.23 -int              writeIfSpacePrivQ( void * in, PrivQueueStruc* Q ); //return
    3.24 +int32            writeIfSpacePrivQ( void * in, PrivQueueStruc* Q ); //return
    3.25                      // false when full
    3.26 +int32            numInPrivQ( PrivQueueStruc *Q );
    3.27 +
    3.28  
    3.29  #endif	/* _PRIVATE_QUEUE_H */
    3.30