|
|
|
@ -94,8 +94,6 @@ chunk_array_t* chunk_array_create(char* filename, size_t total_size) {
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
printf("totalsize %d\n", total_size);
|
|
|
|
|
|
|
|
|
|
chunk_array->chunk_size = min(MAX_CHUNK_SIZE, total_size);
|
|
|
|
|
|
|
|
|
|
chunk_array->buffers = malloc(sizeof(buffer_t) * N_BUFFERS);
|
|
|
|
@ -130,27 +128,16 @@ chunk_array_t* chunk_array_create(char* filename, size_t total_size) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
buffer_t* chunk_array_update(chunk_array_t* chunk_array, size_t pos) {
|
|
|
|
|
////printf("[%s] miss: %d\n",chunk_array->filename, pos);
|
|
|
|
|
//buffer_t* buffer = chunk_array->buffers[0];
|
|
|
|
|
//int distance = abs(buffer->init_pos - pos);
|
|
|
|
|
|
|
|
|
|
srand(time(NULL)); // Initialization, should only be called once.
|
|
|
|
|
int random = rand()%chunk_array->n_buffers;
|
|
|
|
|
|
|
|
|
|
while (random == chunk_array->last_updated) {
|
|
|
|
|
//printf("ACA!\n");
|
|
|
|
|
random = rand()%chunk_array->n_buffers;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
chunk_array->last_updated = random;
|
|
|
|
|
|
|
|
|
|
/*for(int i=1; i<chunk_array->n_buffers; i++) {
|
|
|
|
|
int new_distance = abs(chunk_array->buffers[i]->init_pos - pos);
|
|
|
|
|
if (new_distance < distance) {
|
|
|
|
|
distance = new_distance;
|
|
|
|
|
buffer = chunk_array->buffers[i];
|
|
|
|
|
}
|
|
|
|
|
}*/
|
|
|
|
|
buffer_t* buffer = chunk_array->buffers[random];
|
|
|
|
|
buffer_update(chunk_array, buffer, pos);
|
|
|
|
|
return buffer;
|
|
|
|
|