Mercurial > cgi-bin > hgwebdir.cgi > VMS > C_Libraries > Queue_impl
comparison BlockingQueue.c @ 39:a7a6e170708c
added casts to eliminate warnings about volatile flag
| author | Sean Halle <seanhalle@yahoo.com> |
|---|---|
| date | Mon, 10 Sep 2012 01:57:14 -0700 |
| parents | b66352de717e |
| children |
comparison
equal
deleted
inserted
replaced
| 16:7983830770e8 | 17:39b7dfc12049 |
|---|---|
| 38 retQ = (CASQueueStruc *) VMS_WL__malloc( sizeof( CASQueueStruc ) ); | 38 retQ = (CASQueueStruc *) VMS_WL__malloc( sizeof( CASQueueStruc ) ); |
| 39 | 39 |
| 40 retQ->insertLock = UNLOCKED; | 40 retQ->insertLock = UNLOCKED; |
| 41 retQ->extractLock= UNLOCKED; | 41 retQ->extractLock= UNLOCKED; |
| 42 | 42 |
| 43 retQ->extractPos = (volatile void**)&(retQ->startOfData[0]); //side by side == empty | 43 retQ->extractPos = (volatile void**)&(retQ->startOfData[0]); //side by side == empty |
| 44 retQ->insertPos = (volatile void**)&(retQ->startOfData[1]); // so start pos's have to be | 44 retQ->insertPos = (volatile void**)&(retQ->startOfData[1]); // so start pos's have to be |
| 45 retQ->endOfData = &(retQ->startOfData[1023]); | 45 retQ->endOfData = &(retQ->startOfData[1023]); |
| 46 | 46 |
| 47 return retQ; | 47 return retQ; |
| 48 } | 48 } |
| 71 //if not empty -- extract just below insert when empty | 71 //if not empty -- extract just below insert when empty |
| 72 if( insertPos - extractPos != 1 && | 72 if( insertPos - extractPos != 1 && |
| 73 !(extractPos == endOfData && insertPos == startOfData)) | 73 !(extractPos == endOfData && insertPos == startOfData)) |
| 74 { //move before read | 74 { //move before read |
| 75 if( extractPos == endOfData ) //write new pos exactly once, correctly | 75 if( extractPos == endOfData ) //write new pos exactly once, correctly |
| 76 { Q->extractPos = (volatile void **)startOfData; | 76 { Q->extractPos = (volatile void **)startOfData; |
| 77 } | 77 } |
| 78 else | 78 else |
| 79 { Q->extractPos++; | 79 { Q->extractPos++; |
| 80 } | 80 } |
| 81 out = (void *) *(Q->extractPos); | 81 out = (void *) *(Q->extractPos); |
