Code:
int main(int argc, char *argv[]) {
int i, inc;
int device_fd;
int *buffer;
time_t start, end;
int tmp;
list l;
init();
l = newList();
/*
* Check arguments(file, fileSize, searchFile, searchSize)
*/
assert(argc != 4);
/*
* Load in dataset
*/
fprintf(stderr, "* Loading file %s\n", argv[1]);
device_fd = open(argv[1], O_RDONLY);
assert(device_fd != -1);
buffer = mmap(0, atoi(argv[2]), PROT_READ, MAP_FILE, device_fd, 0);
assert(buffer != MAP_FAILED);
inc = 2;
fprintf(stderr, "* Starting insert\n");
time(&start);
for(i = 0; i < atoi(argv[2])/4 - 1; ++i) {
if(i == inc) {
time(&end);
fprintf(stderr, "\t* %i in %f seconds\n", i, difftime(end, start));
inc <<= 2;
}
insert(l, buffer[i], buffer[i]);
}
time(&end);
fprintf(stderr, "\t* Done in %f seconds\n", difftime(end, start));
close(device_fd);
/*
* Start random searches
*/
fprintf(stderr, "* Loading file %s\n", argv[3]);
device_fd = open(argv[3], O_RDONLY);
assert(device_fd != -1);
buffer = mmap(0, atoi(argv[4]), PROT_READ, MAP_FILE, device_fd, 0);
assert(buffer != MAP_FAILED); // THIS LINE HERE
inc = 2;
fprintf(stderr, "* Starting search\n");
time(&start);
for(i = 0; i < atoi(argv[4])/4 - 1; ++i) {
if(i == inc) {
time(&end);
fprintf(stderr, "\t* %i in %f seconds\n", i, difftime(end, start));
inc <<= 2;
}
search(l, buffer[i], &tmp);
}
time(&end);
fprintf(stderr, "\t* Done in %f seconds\n", difftime(end, start));
/*
* Start deleting (with same file)
*/
inc = 2;
fprintf(stderr, "* Starting delete\n");
time(&start);
for(i = 0; i < atoi(argv[4])/4 - 1; ++i) {
if(i == inc) {
time(&end);
fprintf(stderr, "\t* %i in %f seconds\n", i, difftime(end, start));
inc <<= 2;
}
delete(l, buffer[i]);
}
time(&end);
fprintf(stderr, "\t* Done in %f seconds\n", difftime(end, start));
close(device_fd);
freeList(l);
return 0;
}
Thanks for any help