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);