aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/bits
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/linux/bits')
-rw-r--r--sysdeps/unix/sysv/linux/bits/mman-linux.h21
-rw-r--r--sysdeps/unix/sysv/linux/bits/shm.h22
2 files changed, 42 insertions, 1 deletions
diff --git a/sysdeps/unix/sysv/linux/bits/mman-linux.h b/sysdeps/unix/sysv/linux/bits/mman-linux.h
index 5c3d43b..522333c 100644
--- a/sysdeps/unix/sysv/linux/bits/mman-linux.h
+++ b/sysdeps/unix/sysv/linux/bits/mman-linux.h
@@ -54,10 +54,29 @@
# define MAP_ANONYMOUS 0x20 /* Don't use a file. */
#endif
#define MAP_ANON MAP_ANONYMOUS
-/* When MAP_HUGETLB is set bits [26:31] encode the log2 of the huge page size. */
+
+/* When MAP_HUGETLB is set, bits [26:31] encode the log2 of the huge page size.
+ The following definitions are associated with this huge page size encoding.
+ It is responsibility of the application to know which sizes are supported on
+ the running system. See mmap(2) man page for details. */
+
#define MAP_HUGE_SHIFT 26
#define MAP_HUGE_MASK 0x3f
+#define MAP_HUGE_16KB (14 << MAP_HUGE_SHIFT)
+#define MAP_HUGE_64KB (16 << MAP_HUGE_SHIFT)
+#define MAP_HUGE_512KB (19 << MAP_HUGE_SHIFT)
+#define MAP_HUGE_1MB (20 << MAP_HUGE_SHIFT)
+#define MAP_HUGE_2MB (21 << MAP_HUGE_SHIFT)
+#define MAP_HUGE_8MB (23 << MAP_HUGE_SHIFT)
+#define MAP_HUGE_16MB (24 << MAP_HUGE_SHIFT)
+#define MAP_HUGE_32MB (25 << MAP_HUGE_SHIFT)
+#define MAP_HUGE_256MB (28 << MAP_HUGE_SHIFT)
+#define MAP_HUGE_512MB (29 << MAP_HUGE_SHIFT)
+#define MAP_HUGE_1GB (30 << MAP_HUGE_SHIFT)
+#define MAP_HUGE_2GB (31 << MAP_HUGE_SHIFT)
+#define MAP_HUGE_16GB (34U << MAP_HUGE_SHIFT)
+
/* Flags to `msync'. */
#define MS_ASYNC 1 /* Sync memory asynchronously. */
#define MS_SYNC 4 /* Synchronous memory sync. */
diff --git a/sysdeps/unix/sysv/linux/bits/shm.h b/sysdeps/unix/sysv/linux/bits/shm.h
index 95f7863..76144f5 100644
--- a/sysdeps/unix/sysv/linux/bits/shm.h
+++ b/sysdeps/unix/sysv/linux/bits/shm.h
@@ -58,6 +58,28 @@ typedef __syscall_ulong_t shmatt_t;
# define SHM_HUGETLB 04000 /* segment is mapped via hugetlb */
# define SHM_NORESERVE 010000 /* don't check for reservations */
+/* When SHM_HUGETLB is set, bits [26:31] encode the log2 of the huge page size.
+ The following definitions are associated with this huge page size encoding.
+ It is responsibility of the application to know which sizes are supported on
+ the running system. See shmget(2) man page for details. */
+
+#define SHM_HUGE_SHIFT 26
+#define SHM_HUGE_MASK 0x3f
+
+#define SHM_HUGE_16KB (14 << SHM_HUGE_SHIFT)
+#define SHM_HUGE_64KB (16 << SHM_HUGE_SHIFT)
+#define SHM_HUGE_512KB (19 << SHM_HUGE_SHIFT)
+#define SHM_HUGE_1MB (20 << SHM_HUGE_SHIFT)
+#define SHM_HUGE_2MB (21 << SHM_HUGE_SHIFT)
+#define SHM_HUGE_8MB (23 << SHM_HUGE_SHIFT)
+#define SHM_HUGE_16MB (24 << SHM_HUGE_SHIFT)
+#define SHM_HUGE_32MB (25 << SHM_HUGE_SHIFT)
+#define SHM_HUGE_256MB (28 << SHM_HUGE_SHIFT)
+#define SHM_HUGE_512MB (29 << SHM_HUGE_SHIFT)
+#define SHM_HUGE_1GB (30 << SHM_HUGE_SHIFT)
+#define SHM_HUGE_2GB (31 << SHM_HUGE_SHIFT)
+#define SHM_HUGE_16GB (34U << SHM_HUGE_SHIFT)
+
struct shminfo
{
__syscall_ulong_t shmmax;