xref: /llvm-project/libc/include/llvm-libc-macros/sys-mman-macros.h (revision 330793c91d08e6ac60334e4813746db898b9407e)
18d615a5eSMichael Jones //===-- Macros defined in sys/mman.h header file --------------------------===//
28d615a5eSMichael Jones //
38d615a5eSMichael Jones // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
48d615a5eSMichael Jones // See https://llvm.org/LICENSE.txt for license information.
58d615a5eSMichael Jones // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
68d615a5eSMichael Jones //
78d615a5eSMichael Jones //===----------------------------------------------------------------------===//
88d615a5eSMichael Jones 
9*330793c9SNick Desaulniers #ifndef LLVM_LIBC_MACROS_SYS_MMAN_MACROS_H
10*330793c9SNick Desaulniers #define LLVM_LIBC_MACROS_SYS_MMAN_MACROS_H
118d615a5eSMichael Jones 
122e1e27c7SSchrodinger ZHU Yifan // Use definitions from <linux/mman.h> to dispatch arch-specific flag values.
132e1e27c7SSchrodinger ZHU Yifan // For example, MCL_CURRENT/MCL_FUTURE/MCL_ONFAULT are different on different
142e1e27c7SSchrodinger ZHU Yifan // architectures.
152e1e27c7SSchrodinger ZHU Yifan #if __has_include(<linux/mman.h>)
162e1e27c7SSchrodinger ZHU Yifan #include <linux/mman.h>
172e1e27c7SSchrodinger ZHU Yifan #else
182e1e27c7SSchrodinger ZHU Yifan #error "cannot use <sys/mman.h> without proper system headers."
192e1e27c7SSchrodinger ZHU Yifan #endif
202e1e27c7SSchrodinger ZHU Yifan 
212e1e27c7SSchrodinger ZHU Yifan // Some posix standard flags may not be defined in system headers.
222e1e27c7SSchrodinger ZHU Yifan // Posix mmap flags.
232e1e27c7SSchrodinger ZHU Yifan #ifndef MAP_FAILED
242e1e27c7SSchrodinger ZHU Yifan #define MAP_FAILED ((void *)-1)
252e1e27c7SSchrodinger ZHU Yifan #endif
262e1e27c7SSchrodinger ZHU Yifan 
272e1e27c7SSchrodinger ZHU Yifan // Posix memory advise flags. (posix_madvise)
282e1e27c7SSchrodinger ZHU Yifan #ifndef POSIX_MADV_NORMAL
292e1e27c7SSchrodinger ZHU Yifan #define POSIX_MADV_NORMAL MADV_NORMAL
302e1e27c7SSchrodinger ZHU Yifan #endif
312e1e27c7SSchrodinger ZHU Yifan 
322e1e27c7SSchrodinger ZHU Yifan #ifndef POSIX_MADV_SEQUENTIAL
332e1e27c7SSchrodinger ZHU Yifan #define POSIX_MADV_SEQUENTIAL MADV_SEQUENTIAL
342e1e27c7SSchrodinger ZHU Yifan #endif
352e1e27c7SSchrodinger ZHU Yifan 
362e1e27c7SSchrodinger ZHU Yifan #ifndef POSIX_MADV_RANDOM
372e1e27c7SSchrodinger ZHU Yifan #define POSIX_MADV_RANDOM MADV_RANDOM
382e1e27c7SSchrodinger ZHU Yifan #endif
392e1e27c7SSchrodinger ZHU Yifan 
402e1e27c7SSchrodinger ZHU Yifan #ifndef POSIX_MADV_WILLNEED
412e1e27c7SSchrodinger ZHU Yifan #define POSIX_MADV_WILLNEED MADV_WILLNEED
422e1e27c7SSchrodinger ZHU Yifan #endif
432e1e27c7SSchrodinger ZHU Yifan 
442e1e27c7SSchrodinger ZHU Yifan #ifndef POSIX_MADV_DONTNEED
452e1e27c7SSchrodinger ZHU Yifan #define POSIX_MADV_DONTNEED MADV_DONTNEED
468d615a5eSMichael Jones #endif
478d615a5eSMichael Jones 
48*330793c9SNick Desaulniers #endif // LLVM_LIBC_MACROS_SYS_MMAN_MACROS_H
49