summaryrefslogtreecommitdiff
path: root/mysys/my_largepage.c
diff options
context:
space:
mode:
authorDaniel Black <daniel@mariadb.org>2020-11-16 09:23:51 +1100
committerDaniel Black <daniel@mariadb.org>2020-11-17 07:53:55 +1100
commit7f30a5c423249c7fcfc9f9ac1578d06263aa37ac (patch)
treefd69d50d9d20c20ae06a91cda65e0277d3926818 /mysys/my_largepage.c
parent8cc5d2845c0b679ca90cf6145d02c761cbce897d (diff)
downloadmariadb-git-7f30a5c423249c7fcfc9f9ac1578d06263aa37ac.tar.gz
MDEV-24125: allow compile on Linux headers < 3.8
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.
Diffstat (limited to 'mysys/my_largepage.c')
-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));