comparison BlockingQueue.c @ 23:c3049c8bd0fe

chgd brch tag filename
author Me@portablequad
date Mon, 13 Feb 2012 10:36:44 -0800
parents b5ae7fbb1f01
children bd38feb38c80
comparison
equal deleted inserted replaced
11:ebeb186ecf5d 12:ce567859f0ab
32 */ 32 */
33 33
34 CASQueueStruc* makeCASQ() 34 CASQueueStruc* makeCASQ()
35 { 35 {
36 CASQueueStruc* retQ; 36 CASQueueStruc* retQ;
37 retQ = (CASQueueStruc *) VMS__malloc( sizeof( CASQueueStruc ) ); 37 retQ = (CASQueueStruc *) VMS_int__malloc( sizeof( CASQueueStruc ) );
38 38
39 retQ->insertLock = UNLOCKED; 39 retQ->insertLock = UNLOCKED;
40 retQ->extractLock= UNLOCKED; 40 retQ->extractLock= UNLOCKED;
41 //TODO: check got pointer syntax right 41 //TODO: check got pointer syntax right
42 retQ->extractPos = &(retQ->startOfData[0]); //side by side == empty 42 retQ->extractPos = &(retQ->startOfData[0]); //side by side == empty
157 */ 157 */
158 158
159 SRSWQueueStruc* makeSRSWQ() 159 SRSWQueueStruc* makeSRSWQ()
160 { 160 {
161 SRSWQueueStruc* retQ; 161 SRSWQueueStruc* retQ;
162 retQ = (SRSWQueueStruc *) VMS__malloc( sizeof( SRSWQueueStruc ) ); 162 retQ = (SRSWQueueStruc *) VMS_int__malloc( sizeof( SRSWQueueStruc ) );
163 memset( retQ->startOfData, 0, 1024 * sizeof(void *) ); 163 memset( retQ->startOfData, 0, 1024 * sizeof(void *) );
164 164
165 retQ->extractPos = &(retQ->startOfData[0]); //side by side == empty 165 retQ->extractPos = &(retQ->startOfData[0]); //side by side == empty
166 retQ->insertPos = &(retQ->startOfData[1]); // so start pos's have to be 166 retQ->insertPos = &(retQ->startOfData[1]); // so start pos's have to be
167 retQ->endOfData = &(retQ->startOfData[1023]); 167 retQ->endOfData = &(retQ->startOfData[1023]);
170 } 170 }
171 171
172 void 172 void
173 freeSRSWQ( SRSWQueueStruc* Q ) 173 freeSRSWQ( SRSWQueueStruc* Q )
174 { 174 {
175 VMS__free( Q ); 175 VMS_int__free( Q );
176 } 176 }
177 177
178 void* readSRSWQ( SRSWQueueStruc* Q ) 178 void* readSRSWQ( SRSWQueueStruc* Q )
179 { void *out = 0; 179 { void *out = 0;
180 int tries = 0; 180 int tries = 0;
296 */ 296 */
297 297
298 SRMWQueueStruc* makeSRMWQ() 298 SRMWQueueStruc* makeSRMWQ()
299 { SRMWQueueStruc* retQ; 299 { SRMWQueueStruc* retQ;
300 300
301 retQ = (SRMWQueueStruc *) VMS__malloc( sizeof( SRMWQueueStruc ) ); 301 retQ = (SRMWQueueStruc *) VMS_int__malloc( sizeof( SRMWQueueStruc ) );
302 302
303 retQ->numInternalQs = 0; 303 retQ->numInternalQs = 0;
304 retQ->internalQsSz = 10; 304 retQ->internalQsSz = 10;
305 retQ->internalQs = VMS__malloc( retQ->internalQsSz * sizeof(SRSWQueueStruc *)); 305 retQ->internalQs = VMS_int__malloc( retQ->internalQsSz * sizeof(SRSWQueueStruc *));
306 306
307 retQ->lastQReadFrom = 0; 307 retQ->lastQReadFrom = 0;
308 308
309 return retQ; 309 return retQ;
310 } 310 }
326 if( Q->numInternalQs >= Q->internalQsSz ) 326 if( Q->numInternalQs >= Q->internalQsSz )
327 { //full, so make bigger 327 { //full, so make bigger
328 oldSz = Q->internalQsSz; 328 oldSz = Q->internalQsSz;
329 oldArray = Q->internalQs; 329 oldArray = Q->internalQs;
330 Q->internalQsSz *= 2; 330 Q->internalQsSz *= 2;
331 Q->internalQs = VMS__malloc( Q->internalQsSz * sizeof(SRSWQueueStruc *)); 331 Q->internalQs = VMS_int__malloc( Q->internalQsSz * sizeof(SRSWQueueStruc *));
332 for( i = 0; i < oldSz; i++ ) 332 for( i = 0; i < oldSz; i++ )
333 { Q->internalQs[i] = oldArray[i]; 333 { Q->internalQs[i] = oldArray[i];
334 } 334 }
335 VMS__free( oldArray ); 335 VMS_int__free( oldArray );
336 } 336 }
337 Q->internalQs[ Q->numInternalQs - 1 ] = makeSRSWQ(); 337 Q->internalQs[ Q->numInternalQs - 1 ] = makeSRSWQ();
338 return Q->numInternalQs - 1; 338 return Q->numInternalQs - 1;
339 } 339 }
340 340