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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list