43 lines
1.6 KiB
Diff
43 lines
1.6 KiB
Diff
diff -Naur libhugetlbfs-2.16/elflink.c libhugetlbfs-2.16.new//elflink.c
|
|
--- libhugetlbfs-2.16/elflink.c 2017-11-09 20:30:38.000000000 -0500
|
|
+++ libhugetlbfs-2.16.new//elflink.c 2017-11-09 22:36:56.000000000 -0500
|
|
@@ -1131,7 +1131,10 @@
|
|
start = ALIGN_DOWN((unsigned long)seg[i].vaddr, hpage_size);
|
|
offset = (unsigned long)(seg[i].vaddr - start);
|
|
mapsize = ALIGN(offset + seg[i].memsz, hpage_size);
|
|
- mmap_flags = MAP_SHARED|MAP_FIXED;
|
|
+ if(__hugetlb_opts.share_mapping)
|
|
+ mmap_flags = MAP_SHARED|MAP_FIXED;
|
|
+ else
|
|
+ mmap_flags = MAP_PRIVATE|MAP_FIXED;
|
|
|
|
/* If requested, make no reservations */
|
|
if (__hugetlb_opts.no_reserve)
|
|
diff -Naur libhugetlbfs-2.16/hugeutils.c libhugetlbfs-2.16.new//hugeutils.c
|
|
--- libhugetlbfs-2.16/hugeutils.c 2013-03-09 21:59:52.000000000 -0500
|
|
+++ libhugetlbfs-2.16.new//hugeutils.c 2017-11-09 22:36:45.000000000 -0500
|
|
@@ -387,6 +387,12 @@
|
|
env = getenv("HUGETLB_NO_RESERVE");
|
|
if (env && !strcasecmp(env, "yes"))
|
|
__hugetlb_opts.no_reserve = true;
|
|
+
|
|
+ /* Determine if data segment share memory mapping */
|
|
+ __hugetlb_opts.share_mapping = false;
|
|
+ env = getenv("HUGETLB_SHAREMAPPING");
|
|
+ if (env && !strcasecmp(env, "yes"))
|
|
+ __hugetlb_opts.share_mapping = true;
|
|
}
|
|
|
|
void hugetlbfs_setup_kernel_page_size()
|
|
diff -Naur libhugetlbfs-2.16/libhugetlbfs_internal.h libhugetlbfs-2.16.new//libhugetlbfs_internal.h
|
|
--- libhugetlbfs-2.16/libhugetlbfs_internal.h 2013-03-09 21:59:52.000000000 -0500
|
|
+++ libhugetlbfs-2.16.new//libhugetlbfs_internal.h 2017-11-09 22:35:53.000000000 -0500
|
|
@@ -73,6 +73,7 @@
|
|
char *def_page_size;
|
|
char *morecore;
|
|
char *heapbase;
|
|
+ bool share_mapping;
|
|
};
|
|
|
|
/*
|