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