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