Skip to content

[libc] adjust linux's mman.h definitions #79652

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jan 27, 2024

Conversation

SchrodingerZhu
Copy link
Contributor

@SchrodingerZhu SchrodingerZhu commented Jan 26, 2024

Use definitions from <linux/mman.h> to dispatch arch-specific flag values.
For example, MCL_CURRENT/MCL_FUTURE/MCL_ONFAULT are different on different architectures.

@llvmbot
Copy link
Member

llvmbot commented Jan 26, 2024

@llvm/pr-subscribers-libc

Author: Schrodinger ZHU Yifan (SchrodingerZhu)

Changes

Use definitions from &lt;linux/mman.h&gt; to dispatch arch-specific flag values.
For example, MCL_CURRENT/MCL_FUTURE/MCL_ONFAULT are different on different architectures.


Full diff: https://github.com/llvm/llvm-project/pull/79652.diff

1 Files Affected:

  • (modified) libc/include/llvm-libc-macros/linux/sys-mman-macros.h (+6-68)
diff --git a/libc/include/llvm-libc-macros/linux/sys-mman-macros.h b/libc/include/llvm-libc-macros/linux/sys-mman-macros.h
index 1925c3c7cd3da09..15bd46824f9da57 100644
--- a/libc/include/llvm-libc-macros/linux/sys-mman-macros.h
+++ b/libc/include/llvm-libc-macros/linux/sys-mman-macros.h
@@ -9,80 +9,18 @@
 #ifndef __LLVM_LIBC_MACROS_LINUX_SYS_MMAN_MACROS_H
 #define __LLVM_LIBC_MACROS_LINUX_SYS_MMAN_MACROS_H
 
-// Memory protection flags. (mmap, munmap, mprotect)
-#define PROT_NONE 0x0
-#define PROT_READ 0x1
-#define PROT_WRITE 0x2
-#define PROT_EXEC 0x4
-// These protection flags are only valid for mprotect.
-#define PROT_GROWSUP 0x1000000
-#define PROT_GROWSDOWN 0x2000000
+// Use definitions from <linux/mman.h> to dispatch arch-specific flag values.
+// For example, MCL_CURRENT/MCL_FUTURE/MCL_ONFAULT are different on different
+// architectures.
+#include <linux/mman.h>
 
-// Memory mapping flags. (mmap, munmap)
+// Some posix standard flags are not defined in linux/mman.h.
+// Posix mmap flags.
 #define MAP_FAILED ((void *)-1)
-// These are the sharing types, and exactly one of these must be set.
-#define MAP_FILE 0x0 // Compatibility flag. Ignored.
-#define MAP_SHARED 0x1
-#define MAP_PRIVATE 0x2
-#define MAP_SHARED_VALIDATE 0x3
-// 0x4-0xf are unused.
-// These are the other flags, and zero or more of these can be set.
-#define MAP_FIXED 0x10
-#define MAP_ANONYMOUS 0x20
-#define MAP_ANON MAP_ANONYMOUS
-#define MAP_32BIT 0x40
-// 0x80 is unused.
-#define MAP_GROWSDOWN 0x100
-#define MAP_DENYWRITE 0x800
-#define MAP_EXECUTABLE 0x1000 // Compatibility flag. Ignored.
-#define MAP_LOCKED 0x2000
-#define MAP_NORESERVE 0x4000
-#define MAP_POPULATE 0x8000
-#define MAP_NONBLOCK 0x10000
-#define MAP_STACK 0x20000
-#define MAP_HUGETLB 0x40000
-#define MAP_SYNC 0x80000
-#define MAP_FIXED_NOREPLACE 0x100000
-// HUGETLB support macros. If ma_HUGHTLB is set, the bits under MAP_HUGE_MASK
-// represent the base-2 logarithm of the desired page size, and MAP_HUGE_2MB/1GB
-// are common sizes.
-#define MAP_HUGE_SHIFT 26
-#define MAP_HUGE_MASK 0x3f
-#define MAP_HUGE_2MB (21 << MAP_HUGE_SHIFT)
-#define MAP_HUGE_1GB (30 << MAP_HUGE_SHIFT)
-
-// Memory sync flags. (msync)
-#define MS_ASYNC 1
-#define MS_INVALIDATE 2
-#define MS_SYNC 4
-
-// Memory advice flags. (madvise)
-#define MADV_NORMAL 0
-#define MADV_RANDOM 1
-#define MADV_SEQUENTIAL 2
-#define MADV_WILLNEED 3
-#define MADV_DONTNEED 4
-#define MADV_FREE 8
-#define MADV_REMOVE 9
-#define MADV_DONTFORK 10
-#define MADV_DOFORK 11
-#define MADV_MERGEABLE 12
-#define MADV_UNMERGEABLE 13
-#define MADV_HUGEPAGE 14
-#define MADV_NOHUGEPAGE 15
-#define MADV_DONTDUMP 16
-#define MADV_DODUMP 17
-#define MADV_WIPEONFORK 18
-#define MADV_KEEPONFORK 19
-#define MADV_COLD 20
-#define MADV_PAGEOUT 21
-#define MADV_HWPOISON 100
-
 // Posix memory advise flags. (posix_madvise)
 #define POSIX_MADV_NORMAL MADV_NORMAL
 #define POSIX_MADV_SEQUENTIAL MADV_SEQUENTIAL
 #define POSIX_MADV_RANDOM MADV_RANDOM
 #define POSIX_MADV_WILLNEED MADV_WILLNEED
 #define POSIX_MADV_DONTNEED MADV_DONTNEED
-
 #endif // __LLVM_LIBC_MACROS_LINUX_SYS_MMAN_MACROS_H

Copy link
Contributor

@michaelrj-google michaelrj-google left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@SchrodingerZhu SchrodingerZhu merged commit 2e1e27c into llvm:main Jan 27, 2024
@SchrodingerZhu SchrodingerZhu deleted the libc/mman_h branch January 27, 2024 00:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants