# HG changeset patch # User Me # Date 1288918448 25200 # Node ID 3562716ebdbde0fc5e1d23d91cdde57ca2c62caa # Parent 88efea74818a928a1fe83bc14c533e53bd57af63 added numInPrivQ service diff -r 88efea74818a -r 3562716ebdbd BlockingQueue.c --- a/BlockingQueue.c Tue Nov 02 16:48:22 2010 -0700 +++ b/BlockingQueue.c Thu Nov 04 17:54:08 2010 -0700 @@ -296,7 +296,6 @@ } } - void writeSRSWQ( void * in, SRSWQueueStruc* Q ) { int tries = 0; diff -r 88efea74818a -r 3562716ebdbd PrivateQueue.c --- a/PrivateQueue.c Tue Nov 02 16:48:22 2010 -0700 +++ b/PrivateQueue.c Thu Nov 04 17:54:08 2010 -0700 @@ -2,8 +2,6 @@ * Copyright 2009 OpenSourceStewardshipFoundation.org * Licensed under GNU General Public License version 2 * - * NOTE: this version of SRSW correct as of April 25, 2010 - * * Author: seanhalle@yahoo.com */ @@ -83,6 +81,24 @@ return NULL; } +int32 +numInPrivQ( PrivQueueStruc *Q ) + { int32 size, numIn; + + if( Q->insertPos < Q->extractPos ) + { //insert has wrapped around so numIn is: + // insertPos + size - extractPos -- Consider, is empty when + // extractPos = endOfData and insert = start -- correctly get zero + size = Q->endOfData - Q->startOfData; + numIn = Q->insertPos + size - Q->extractPos; + } + else + { + numIn = Q->insertPos - Q->extractPos -1;//-1 bec empty @ side-by-side + } + return numIn; + } + /*Expands the queue size automatically when it's full */ diff -r 88efea74818a -r 3562716ebdbd PrivateQueue.h --- a/PrivateQueue.h Tue Nov 02 16:48:22 2010 -0700 +++ b/PrivateQueue.h Thu Nov 04 17:54:08 2010 -0700 @@ -9,6 +9,7 @@ #define _PRIVATE_QUEUE_H #include +#include "../VMS_primitive_data_types.h" #define TRUE 1 #define FALSE 0 @@ -17,7 +18,6 @@ #define UNLOCKED 0 -/* It is the data that is shared so only need one mutex. */ typedef struct { void **insertPos; void **extractPos; @@ -30,8 +30,10 @@ PrivQueueStruc* makePrivQ ( ); void* readPrivQ ( PrivQueueStruc *Q ); void writePrivQ( void *in, PrivQueueStruc *Q ); -int writeIfSpacePrivQ( void * in, PrivQueueStruc* Q ); //return +int32 writeIfSpacePrivQ( void * in, PrivQueueStruc* Q ); //return // false when full +int32 numInPrivQ( PrivQueueStruc *Q ); + #endif /* _PRIVATE_QUEUE_H */