Changeset: edf827e54f48 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=edf827e54f48 Modified Files: gdk/gdk_storage.c Branch: resultset Log Message:
Code de-duplication. diffs (84 lines): diff --git a/gdk/gdk_storage.c b/gdk/gdk_storage.c --- a/gdk/gdk_storage.c +++ b/gdk/gdk_storage.c @@ -600,18 +600,21 @@ DESCclean(BAT *b) #define MSYNC_BACKGROUND -typedef struct{ - char *adr; - size_t len; -} Msyncjob; - static void BATmsyncImplementation(void *arg) { - Msyncjob job = *(Msyncjob *) arg; + Heap *h = arg; + char *adr; + size_t len; + size_t offset; - GDKfree(arg); - (void) MT_msync(job.adr, job.len); + adr = h->base; + offset = ((size_t) adr % MT_pagesize()); + len = MT_pagesize() * (1 + ((h->base + h->free - adr) / MT_pagesize())); + if (offset) + adr -= MT_pagesize() - offset; + if (len) + (void) MT_msync(adr, len); } void @@ -621,46 +624,20 @@ BATmsync(BAT *b) MT_Id tid; #endif - Msyncjob *job; - size_t offset; - if (b->T->heap.storage == STORE_MMAP) { - job = GDKmalloc(sizeof(*job)); - - if (job) { - job->adr = b->T->heap.base; - offset = ((size_t) job->adr % MT_pagesize()); - job->len = MT_pagesize() * (1 + ((b->T->heap.base + b->T->heap.free - job->adr) / MT_pagesize())); - if (offset) - job->adr -= (MT_pagesize() - offset); - if (job->len) { #ifdef MSYNC_BACKGROUND - MT_create_thread(&tid, BATmsyncImplementation, (void *) job, MT_THR_DETACHED); + MT_create_thread(&tid, BATmsyncImplementation, (void *) &b->T->heap, MT_THR_DETACHED); #else - BATmsyncImplementation((void*) job); + BATmsyncImplementation((void*) &b->T->heap); #endif - } - } } if (b->T->vheap && b->T->vheap->storage == STORE_MMAP) { - job = GDKmalloc(sizeof(*job)); - - if (job) { - job->adr = b->T->vheap->base; - offset = ((size_t)job->adr % MT_pagesize()); - job->len = MT_pagesize() * (1 + ((b->T->vheap->base + b->T->vheap->free - job->adr) / MT_pagesize())); - - if (offset) - job->adr -= (MT_pagesize() - offset); - if (job->len) { #ifdef MSYNC_BACKGROUND - MT_create_thread(&tid, BATmsyncImplementation, (void *) job, MT_THR_DETACHED); + MT_create_thread(&tid, BATmsyncImplementation, (void *) b->T->vheap, MT_THR_DETACHED); #else - BATmsyncImplementation((void*) job); + BATmsyncImplementation((void*) b->T->vheap); #endif - } - } } } _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list