1#include <sys/mman.h> 2#include "options.h" 3#define T(t) (t*)0; 4#define F(t,n) {t *y = &x.n;} 5#define C(n) switch(n){case n:;} 6static void f() 7{ 8T(mode_t) 9T(off_t) 10T(size_t) 11 12C(PROT_EXEC) 13C(PROT_NONE) 14C(PROT_READ) 15C(PROT_WRITE) 16C(MAP_FIXED) 17C(MAP_PRIVATE) 18C(MAP_SHARED) 19#ifdef _XOPEN_SOURCE 20C(MS_ASYNC) 21C(MS_INVALIDATE) 22C(MS_SYNC) 23#endif 24C(MCL_CURRENT) 25C(MCL_FUTURE) 26{void *x = MAP_FAILED;} 27C(POSIX_MADV_DONTNEED) 28C(POSIX_MADV_NORMAL) 29C(POSIX_MADV_RANDOM) 30C(POSIX_MADV_SEQUENTIAL) 31C(POSIX_MADV_WILLNEED) 32 33#ifdef POSIX_TYPED_MEMORY_OBJECTS 34C(POSIX_TYPED_MEM_ALLOCATE) 35C(POSIX_TYPED_MEM_ALLOCATE_CONTIG) 36C(POSIX_TYPED_MEM_MAP_ALLOCATABLE) 37{ 38struct posix_typed_mem_info x; 39F(size_t,posix_tmi_length) 40} 41int(*p)(const void*restrict,size_t,off_t*restrict,size_t*restrict,int*restrict) = posix_mem_offset; 42int(*p)(int,struct posix_typed_mem_info*) = posix_typed_mem_get_info; 43int(*p)(const char*,int,int) = posix_typed_mem_open; 44#endif 45 46{int(*p)(const void*,size_t) = mlock;} 47{int(*p)(int) = mlockall;} 48{void*(*p)(void*,size_t,int,int,int,off_t) = mmap;} 49{int(*p)(void*,size_t,int) = mprotect;} 50#ifdef _XOPEN_SOURCE 51{int(*p)(void*,size_t,int) = msync;} 52#endif 53{int(*p)(const void*,size_t) = munlock;} 54{int(*p)(void) = munlockall;} 55{int(*p)(void*,size_t) = munmap;} 56{int(*p)(void*,size_t,int) = posix_madvise;} 57#ifdef POSIX_SHARED_MEMORY_OBJECTS 58{int(*p)(const char*,int,mode_t) = shm_open;} 59{int(*p)(const char*) = shm_unlink;} 60#endif 61} 62