summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Black <daniel@mariadb.org>2020-11-16 09:23:51 +1100
committerDaniel Black <daniel@mariadb.org>2020-11-16 09:29:37 +1100
commit1f2497a33e0741f9e9a179aad4b7ddafe54233e9 (patch)
tree69af8e9c6b0210c673d9f3d756d2fe1029f87004
parenta1a3a407376492cbdc3c24880c7c84f116b4cc6d (diff)
downloadmariadb-git-bb-10.5-danielblack-MDEV-24125-MAP_HUGETLB.tar.gz
MDEV-24125: allow compile on Linux headers < 3.8bb-10.5-danielblack-MDEV-24125-MAP_HUGETLB
This allows MariaDB to compile on old (limits to >2.6.32) linux kernel versions. This warns that attempts to use large pages will rely on implict kernel determination.
-rw-r--r--mysys/my_largepage.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/mysys/my_largepage.c b/mysys/my_largepage.c
index e107c62b987..9efd0797860 100644
--- a/mysys/my_largepage.c
+++ b/mysys/my_largepage.c
@@ -325,9 +325,13 @@ uchar *my_large_malloc(size_t *size, myf my_flags)
/* this might be 0, in which case we do a standard mmap */
if (large_page_size)
{
-#ifdef __linux__
- mapflag|= MAP_HUGETLB |
- my_bit_log2_size_t(large_page_size) << MAP_HUGE_SHIFT;
+#if defined(MAP_HUGETLB) /* linux 2.6.32 */
+ mapflag|= MAP_HUGETLB;
+#if defined(MAP_HUGE_SHIFT) /* Linux-3.8+ */
+ mapflag|= my_bit_log2_size_t(large_page_size) << MAP_HUGE_SHIFT;
+#else
+# warning "No explicit large page (HUGETLB pages) support in Linux < 3.8"
+#endif
#elif defined(MAP_ALIGNED)
mapflag|= MAP_ALIGNED_SUPER |
MAP_ALIGNED(my_bit_log2_size_t(large_page_size));