added VALGRIND_MODE
This commit is contained in:
parent
1ff9afb753
commit
757a877c84
1 changed files with 14 additions and 0 deletions
|
@ -68,6 +68,8 @@ stasis_buffer_pool_t* stasis_buffer_pool_init() {
|
||||||
|
|
||||||
pthread_mutex_init(&(ret->mut), NULL);
|
pthread_mutex_init(&(ret->mut), NULL);
|
||||||
|
|
||||||
|
#ifndef VALGRIND_MODE
|
||||||
|
|
||||||
byte * bufferSpace = calloc((MAX_BUFFER_SIZE + 2), PAGE_SIZE);
|
byte * bufferSpace = calloc((MAX_BUFFER_SIZE + 2), PAGE_SIZE);
|
||||||
assert(bufferSpace);
|
assert(bufferSpace);
|
||||||
ret->addr_to_free = bufferSpace;
|
ret->addr_to_free = bufferSpace;
|
||||||
|
@ -75,6 +77,9 @@ stasis_buffer_pool_t* stasis_buffer_pool_init() {
|
||||||
bufferSpace = (byte*)(((long)bufferSpace) +
|
bufferSpace = (byte*)(((long)bufferSpace) +
|
||||||
PAGE_SIZE -
|
PAGE_SIZE -
|
||||||
(((long)bufferSpace) % PAGE_SIZE));
|
(((long)bufferSpace) % PAGE_SIZE));
|
||||||
|
#else
|
||||||
|
fprintf(stderr, "WARNING: VALGRIND_MODE #defined; Using memory allocation strategy designed to catch bugs under valgrind\n");
|
||||||
|
#endif // VALGRIND_MODE
|
||||||
|
|
||||||
// We need one dummy page for locking purposes,
|
// We need one dummy page for locking purposes,
|
||||||
// so this array has one extra page in it.
|
// so this array has one extra page in it.
|
||||||
|
@ -83,7 +88,11 @@ stasis_buffer_pool_t* stasis_buffer_pool_init() {
|
||||||
for(pageid_t i = 0; i < MAX_BUFFER_SIZE+1; i++) {
|
for(pageid_t i = 0; i < MAX_BUFFER_SIZE+1; i++) {
|
||||||
ret->pool[i].rwlatch = initlock();
|
ret->pool[i].rwlatch = initlock();
|
||||||
ret->pool[i].loadlatch = initlock();
|
ret->pool[i].loadlatch = initlock();
|
||||||
|
#ifndef VALGRIND_MODE
|
||||||
ret->pool[i].memAddr = &(bufferSpace[i*PAGE_SIZE]);
|
ret->pool[i].memAddr = &(bufferSpace[i*PAGE_SIZE]);
|
||||||
|
#else
|
||||||
|
ret->pool[i].memAddr = calloc(1, PAGE_SIZE);
|
||||||
|
#endif
|
||||||
ret->pool[i].dirty = 0;
|
ret->pool[i].dirty = 0;
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -93,8 +102,13 @@ void stasis_buffer_pool_deinit(stasis_buffer_pool_t * ret) {
|
||||||
for(pageid_t i = 0; i < MAX_BUFFER_SIZE+1; i++) {
|
for(pageid_t i = 0; i < MAX_BUFFER_SIZE+1; i++) {
|
||||||
deletelock(ret->pool[i].rwlatch);
|
deletelock(ret->pool[i].rwlatch);
|
||||||
deletelock(ret->pool[i].loadlatch);
|
deletelock(ret->pool[i].loadlatch);
|
||||||
|
#ifdef VALGRIND_MODE
|
||||||
|
free(ret->pool[i].memAddr);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
#ifndef VALGRIND_MODE
|
||||||
free(ret->addr_to_free); // breaks efence
|
free(ret->addr_to_free); // breaks efence
|
||||||
|
#endif
|
||||||
pthread_mutex_destroy(&ret->mut);
|
pthread_mutex_destroy(&ret->mut);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue