comparison PrivateQueue.c @ 24:677afc259a58

fix branch to compile with new folder structure
author Merten Sach <msach@mailbox.tu-berlin.de>
date Mon, 13 Feb 2012 19:32:12 +0100
parents 7c9e00ff1bf4
children
comparison
equal deleted inserted replaced
12:4f82930118bf 16:8a47778831c0
10 #include <string.h> 10 #include <string.h>
11 #include <errno.h> 11 #include <errno.h>
12 #include <stdlib.h> 12 #include <stdlib.h>
13 13
14 #include "PrivateQueue.h" 14 #include "PrivateQueue.h"
15 #include "../vmalloc.h" 15 #include "VMS_Implementations/VMS_impl/vmalloc.h"
16 16
17 17
18 18
19 //=========================================================================== 19 //===========================================================================
20 20
21 /*This kind of queue is private to a single core at a time -- has no 21 /*This kind of queue is private to a single core at a time -- has no
22 * synchronizations 22 * synchronizations
23 */ 23 */
24 24
25 PrivQueueStruc* makeVMSPrivQ() 25 PrivQueueStruc* makePrivQ()
26 { 26 {
27 PrivQueueStruc *retQ; 27 PrivQueueStruc *retQ;
28 retQ = VMS__malloc( sizeof( PrivQueueStruc ) ); 28 retQ = VMS_int__malloc( sizeof( PrivQueueStruc ) );
29 retQ->startOfData = (void*)VMS__malloc( 1024 * sizeof(void *) ); 29 retQ->startOfData = (void*)VMS_int__malloc( 1024 * sizeof(void *) );
30 memset( retQ->startOfData, 0, 1024 ); 30 memset( retQ->startOfData, 0, 1024 );
31 31
32 retQ->extractPos = &(retQ->startOfData[0]); //side by side == empty 32 retQ->extractPos = &(retQ->startOfData[0]); //side by side == empty
33 retQ->insertPos = &(retQ->startOfData[1]); // so start pos's have to be 33 retQ->insertPos = &(retQ->startOfData[1]); // so start pos's have to be
34 retQ->endOfData = &(retQ->startOfData[1023]); 34 retQ->endOfData = &(retQ->startOfData[1023]);
43 void **oldStartOfData; 43 void **oldStartOfData;
44 44
45 oldSize = Q->endOfData - Q->startOfData + 1; 45 oldSize = Q->endOfData - Q->startOfData + 1;
46 newSize = 2 * oldSize; 46 newSize = 2 * oldSize;
47 oldStartOfData = Q->startOfData; 47 oldStartOfData = Q->startOfData;
48 Q->startOfData = VMS__malloc( newSize * sizeof(void*)); 48 Q->startOfData = VMS_int__malloc( newSize * sizeof(void*));
49 //copy second half 49 //copy second half
50 size_t secondHalfSize = Q->endOfData - Q->extractPos + 1; 50 size_t secondHalfSize = Q->endOfData - Q->extractPos + 1;
51 memcpy(Q->startOfData,Q->extractPos, secondHalfSize * sizeof(void*)); 51 memcpy(Q->startOfData,Q->extractPos, secondHalfSize * sizeof(void*));
52 //copy first half 52 //copy first half
53 memcpy(Q->startOfData + secondHalfSize, oldStartOfData, 53 memcpy(Q->startOfData + secondHalfSize, oldStartOfData,
54 (oldSize-secondHalfSize) * sizeof(void*)); 54 (oldSize-secondHalfSize) * sizeof(void*));
55 VMS__free(oldStartOfData); 55 VMS_int__free(oldStartOfData);
56 56
57 Q->extractPos = Q->startOfData; 57 Q->extractPos = Q->startOfData;
58 Q->insertPos = Q->startOfData + oldSize - 1; 58 Q->insertPos = Q->startOfData + oldSize - 1;
59 Q->endOfData = &(Q->startOfData[newSize - 1]); 59 Q->endOfData = &(Q->startOfData[newSize - 1]);
60 } 60 }
196 } 196 }
197 197
198 void 198 void
199 freePrivQ( PrivQueueStruc *Q ) 199 freePrivQ( PrivQueueStruc *Q )
200 { 200 {
201 VMS__free( Q->startOfData ); 201 VMS_int__free( Q->startOfData );
202 VMS__free( Q ); 202 VMS_int__free( Q );
203 } 203 }