xref: /freebsd/contrib/llvm-project/libc/include/llvm-libc-macros/sys-mman-macros.h (revision bb722a7d0f1642bff6487f943ad0427799a6e5bf)
1*bb722a7dSDimitry Andric //===-- Macros defined in sys/mman.h header file --------------------------===//
2*bb722a7dSDimitry Andric //
3*bb722a7dSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*bb722a7dSDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
5*bb722a7dSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*bb722a7dSDimitry Andric //
7*bb722a7dSDimitry Andric //===----------------------------------------------------------------------===//
8*bb722a7dSDimitry Andric 
9*bb722a7dSDimitry Andric #ifndef LLVM_LIBC_MACROS_SYS_MMAN_MACROS_H
10*bb722a7dSDimitry Andric #define LLVM_LIBC_MACROS_SYS_MMAN_MACROS_H
11*bb722a7dSDimitry Andric 
12*bb722a7dSDimitry Andric // Use definitions from <linux/mman.h> to dispatch arch-specific flag values.
13*bb722a7dSDimitry Andric // For example, MCL_CURRENT/MCL_FUTURE/MCL_ONFAULT are different on different
14*bb722a7dSDimitry Andric // architectures.
15*bb722a7dSDimitry Andric #if __has_include(<linux/mman.h>)
16*bb722a7dSDimitry Andric #include <linux/mman.h>
17*bb722a7dSDimitry Andric #else
18*bb722a7dSDimitry Andric #error "cannot use <sys/mman.h> without proper system headers."
19*bb722a7dSDimitry Andric #endif
20*bb722a7dSDimitry Andric 
21*bb722a7dSDimitry Andric // Some posix standard flags may not be defined in system headers.
22*bb722a7dSDimitry Andric // Posix mmap flags.
23*bb722a7dSDimitry Andric #ifndef MAP_FAILED
24*bb722a7dSDimitry Andric #define MAP_FAILED ((void *)-1)
25*bb722a7dSDimitry Andric #endif
26*bb722a7dSDimitry Andric 
27*bb722a7dSDimitry Andric // Posix memory advise flags. (posix_madvise)
28*bb722a7dSDimitry Andric #ifndef POSIX_MADV_NORMAL
29*bb722a7dSDimitry Andric #define POSIX_MADV_NORMAL MADV_NORMAL
30*bb722a7dSDimitry Andric #endif
31*bb722a7dSDimitry Andric 
32*bb722a7dSDimitry Andric #ifndef POSIX_MADV_SEQUENTIAL
33*bb722a7dSDimitry Andric #define POSIX_MADV_SEQUENTIAL MADV_SEQUENTIAL
34*bb722a7dSDimitry Andric #endif
35*bb722a7dSDimitry Andric 
36*bb722a7dSDimitry Andric #ifndef POSIX_MADV_RANDOM
37*bb722a7dSDimitry Andric #define POSIX_MADV_RANDOM MADV_RANDOM
38*bb722a7dSDimitry Andric #endif
39*bb722a7dSDimitry Andric 
40*bb722a7dSDimitry Andric #ifndef POSIX_MADV_WILLNEED
41*bb722a7dSDimitry Andric #define POSIX_MADV_WILLNEED MADV_WILLNEED
42*bb722a7dSDimitry Andric #endif
43*bb722a7dSDimitry Andric 
44*bb722a7dSDimitry Andric #ifndef POSIX_MADV_DONTNEED
45*bb722a7dSDimitry Andric #define POSIX_MADV_DONTNEED MADV_DONTNEED
46*bb722a7dSDimitry Andric #endif
47*bb722a7dSDimitry Andric 
48*bb722a7dSDimitry Andric #endif // LLVM_LIBC_MACROS_SYS_MMAN_MACROS_H
49