Mercurial > cgi-bin > hgwebdir.cgi > VMS > C_Libraries > Queue_impl
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
