Me@19: /* Me@19: * Copyright 2009 OpenSourceStewardshipFoundation.org Me@19: * Licensed under GNU General Public License version 2 Me@19: * Me@19: * Author: seanhalle@yahoo.com Me@19: */ Me@19: Me@19: #ifndef _PRIVATE_QUEUE_H Me@19: #define _PRIVATE_QUEUE_H Me@19: seanhalle@34: seanhalle@34: #include "VMS_impl/VMS_primitive_data_types.h" seanhalle@36: #include "VMS_impl/Services_Offered_by_VMS/Memory_Handling/vmalloc.h" seanhalle@34: Me@19: Me@19: #define TRUE 1 Me@19: #define FALSE 0 Me@19: Me@19: #define LOCKED 1 Me@19: #define UNLOCKED 0 Me@19: Me@19: Me@19: /* It is the data that is shared so only need one mutex. */ Me@19: typedef struct Me@19: { void **insertPos; Me@19: void **extractPos; Me@19: void **startOfData; //data is pointers Me@19: void **endOfData; //set when alloc data Me@19: } Me@19: PrivQueueStruc; Me@19: seanhalle@34: typedef void (*DynArrayFnPtr) ( void * ); //fn has to cast void * Me@19: Me@19: PrivQueueStruc* makePrivQ ( ); seanhalle@34: void* readPrivQ ( PrivQueueStruc *Q ); //ret NULL if empty Me@19: void writePrivQ( void *in, PrivQueueStruc *Q ); seanhalle@34: //return false when full seanhalle@34: bool32 writeIfSpacePrivQ( void * in, PrivQueueStruc* Q ); seanhalle@34: int32 numInPrivQ( PrivQueueStruc *Q ); seanhalle@34: void pushPrivQ( void * in, PrivQueueStruc* Q ); seanhalle@34: void freePrivQ( PrivQueueStruc *Q ); Me@19: Me@19: #endif /* _PRIVATE_QUEUE_H */ Me@19: