diff options
Diffstat (limited to 'src/backend/port/sysv_shmem.c')
-rw-r--r-- | src/backend/port/sysv_shmem.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/backend/port/sysv_shmem.c b/src/backend/port/sysv_shmem.c index e62d4a618ea..97ce7b7c497 100644 --- a/src/backend/port/sysv_shmem.c +++ b/src/backend/port/sysv_shmem.c @@ -34,7 +34,7 @@ #include "storage/fd.h" #include "storage/ipc.h" #include "storage/pg_shmem.h" -#include "utils/guc.h" +#include "utils/guc_hooks.h" #include "utils/pidfile.h" @@ -571,6 +571,23 @@ GetHugePageSize(Size *hugepagesize, int *mmap_flags) } /* + * GUC check_hook for huge_page_size + */ +bool +check_huge_page_size(int *newval, void **extra, GucSource source) +{ +#if !(defined(MAP_HUGE_MASK) && defined(MAP_HUGE_SHIFT)) + /* Recent enough Linux only, for now. See GetHugePageSize(). */ + if (*newval != 0) + { + GUC_check_errdetail("huge_page_size must be 0 on this platform."); + return false; + } +#endif + return true; +} + +/* * Creates an anonymous mmap()ed shared memory segment. * * Pass the requested size in *size. This function will modify *size to the |