diff options
author | Daniel Black <daniel@mariadb.org> | 2020-11-16 09:23:51 +1100 |
---|---|---|
committer | Daniel Black <daniel@mariadb.org> | 2020-11-16 09:29:37 +1100 |
commit | 1f2497a33e0741f9e9a179aad4b7ddafe54233e9 (patch) | |
tree | 69af8e9c6b0210c673d9f3d756d2fe1029f87004 | |
parent | a1a3a407376492cbdc3c24880c7c84f116b4cc6d (diff) | |
download | mariadb-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.c | 10 |
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)); |