Mercurial > cgi-bin > hgwebdir.cgi > VMS > C_Libraries > Queue_impl
comparison PrivateQueue.c @ 9:62326cc8e6f4
This branch has replace malloc and free with VMS__malloc and VMS__free
| author | Me |
|---|---|
| date | Sun, 31 Oct 2010 20:24:00 -0700 |
| parents | 93bf3ffcc1fb |
| children | 3562716ebdbd |
comparison
equal
deleted
inserted
replaced
| 3:0aa45f74fe12 | 4:fb1b528ea28b |
|---|---|
| 24 */ | 24 */ |
| 25 | 25 |
| 26 PrivQueueStruc* makePrivQ() | 26 PrivQueueStruc* makePrivQ() |
| 27 { | 27 { |
| 28 PrivQueueStruc* retQ; | 28 PrivQueueStruc* retQ; |
| 29 retQ = (PrivQueueStruc *) malloc( sizeof( PrivQueueStruc ) ); | 29 retQ = (PrivQueueStruc *) VMS__malloc( sizeof( PrivQueueStruc ) ); |
| 30 | 30 |
| 31 retQ->startOfData = malloc( 1024 * sizeof(void *) ); | 31 retQ->startOfData = VMS__malloc( 1024 * sizeof(void *) ); |
| 32 | 32 |
| 33 retQ->extractPos = &(retQ->startOfData[0]); //side by side == empty | 33 retQ->extractPos = &(retQ->startOfData[0]); //side by side == empty |
| 34 retQ->insertPos = &(retQ->startOfData[1]); // so start pos's have to be | 34 retQ->insertPos = &(retQ->startOfData[1]); // so start pos's have to be |
| 35 retQ->endOfData = &(retQ->startOfData[1023]); | 35 retQ->endOfData = &(retQ->startOfData[1023]); |
| 36 | 36 |
| 44 void **oldStartOfData; | 44 void **oldStartOfData; |
| 45 | 45 |
| 46 oldSize = Q->endOfData - Q->startOfData; | 46 oldSize = Q->endOfData - Q->startOfData; |
| 47 newSize = 2 * oldSize; | 47 newSize = 2 * oldSize; |
| 48 oldStartOfData = Q->startOfData; | 48 oldStartOfData = Q->startOfData; |
| 49 Q->startOfData = malloc( newSize * sizeof(void *) ); | 49 Q->startOfData = VMS__malloc( newSize * sizeof(void *) ); |
| 50 memcpy(Q->startOfData, oldStartOfData, oldSize * sizeof(void *)); | 50 memcpy(Q->startOfData, oldStartOfData, oldSize * sizeof(void *)); |
| 51 free(oldStartOfData); | 51 VMS__free(oldStartOfData); |
| 52 | 52 |
| 53 Q->extractPos = &(Q->startOfData[0]); //side by side == empty | 53 Q->extractPos = &(Q->startOfData[0]); //side by side == empty |
| 54 Q->insertPos = &(Q->startOfData[1]); // so start pos's have to be | 54 Q->insertPos = &(Q->startOfData[1]); // so start pos's have to be |
| 55 Q->endOfData = &(Q->startOfData[newSize - 1]); | 55 Q->endOfData = &(Q->startOfData[newSize - 1]); |
| 56 } | 56 } |
| 137 return TRUE; | 137 return TRUE; |
| 138 } | 138 } |
| 139 //Q is full | 139 //Q is full |
| 140 return FALSE; | 140 return FALSE; |
| 141 } | 141 } |
| 142 | |
| 143 void | |
| 144 freePrivQ( PrivQueueStruc *Q ) | |
| 145 { | |
| 146 VMS__free( Q->startOfData ); | |
| 147 VMS__free( Q ); | |
| 148 } |
