aboutsummaryrefslogtreecommitdiff
path: root/src/backend/port/sysv_shmem.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/port/sysv_shmem.c')
-rw-r--r--src/backend/port/sysv_shmem.c19
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