|
@@ -3,6 +3,7 @@
|
|
|
|
|
|
#include <linux/ipc.h>
|
|
|
#include <linux/errno.h>
|
|
|
+#include <asm-generic/hugetlb_encode.h>
|
|
|
#ifndef __KERNEL__
|
|
|
#include <unistd.h>
|
|
|
#endif
|
|
@@ -40,11 +41,37 @@ struct shmid_ds {
|
|
|
/* Include the definition of shmid64_ds and shminfo64 */
|
|
|
#include <asm/shmbuf.h>
|
|
|
|
|
|
-/* permission flag for shmget */
|
|
|
+/*
|
|
|
+ * shmget() shmflg values.
|
|
|
+ */
|
|
|
+/* The bottom nine bits are the same as open(2) mode flags */
|
|
|
#define SHM_R 0400 /* or S_IRUGO from <linux/stat.h> */
|
|
|
#define SHM_W 0200 /* or S_IWUGO from <linux/stat.h> */
|
|
|
+/* Bits 9 & 10 are IPC_CREAT and IPC_EXCL */
|
|
|
+#define SHM_HUGETLB 04000 /* segment will use huge TLB pages */
|
|
|
+#define SHM_NORESERVE 010000 /* don't check for reservations */
|
|
|
+
|
|
|
+/*
|
|
|
+ * Huge page size encoding when SHM_HUGETLB is specified, and a huge page
|
|
|
+ * size other than the default is desired. See hugetlb_encode.h
|
|
|
+ */
|
|
|
+#define SHM_HUGE_SHIFT HUGETLB_FLAG_ENCODE_SHIFT
|
|
|
+#define SHM_HUGE_MASK HUGETLB_FLAG_ENCODE_MASK
|
|
|
+
|
|
|
+#define SHM_HUGE_64KB HUGETLB_FLAG_ENCODE_64KB
|
|
|
+#define SHM_HUGE_512KB HUGETLB_FLAG_ENCODE_512KB
|
|
|
+#define SHM_HUGE_1MB HUGETLB_FLAG_ENCODE_1MB
|
|
|
+#define SHM_HUGE_2MB HUGETLB_FLAG_ENCODE_2MB
|
|
|
+#define SHM_HUGE_8MB HUGETLB_FLAG_ENCODE_8MB
|
|
|
+#define SHM_HUGE_16MB HUGETLB_FLAG_ENCODE_16MB
|
|
|
+#define SHM_HUGE_256MB HUGETLB_FLAG_ENCODE_256MB
|
|
|
+#define SHM_HUGE_1GB HUGETLB_FLAG_ENCODE_1GB
|
|
|
+#define SHM_HUGE_2GB HUGETLB_FLAG_ENCODE_2GB
|
|
|
+#define SHM_HUGE_16GB HUGETLB_FLAG_ENCODE_16GB
|
|
|
|
|
|
-/* mode for attach */
|
|
|
+/*
|
|
|
+ * shmat() shmflg values
|
|
|
+ */
|
|
|
#define SHM_RDONLY 010000 /* read-only access */
|
|
|
#define SHM_RND 020000 /* round attach address to SHMLBA boundary */
|
|
|
#define SHM_REMAP 040000 /* take-over region on attach */
|