1 /* SPDX-License-Identifier: GPL-2.0-only */
2 #ifndef _TESTCASES_MMAP_TEST_H
3 #define _TESTCASES_MMAP_TEST_H
5 #include <sys/resource.h>
21 static inline void do_mmaps(struct addresses *mmap_addresses)
24 * Place all of the hint addresses on the boundaries of mmap
26 * User addresses end at 1<<38, 1<<47, 1<<56 respectively
28 void *on_37_bits = (void *)(1UL << 37);
29 void *on_38_bits = (void *)(1UL << 38);
30 void *on_46_bits = (void *)(1UL << 46);
31 void *on_47_bits = (void *)(1UL << 47);
32 void *on_55_bits = (void *)(1UL << 55);
33 void *on_56_bits = (void *)(1UL << 56);
35 int prot = PROT_READ | PROT_WRITE;
36 int flags = MAP_PRIVATE | MAP_ANONYMOUS;
38 mmap_addresses->no_hint =
39 mmap(NULL, 5 * sizeof(int), prot, flags, 0, 0);
40 mmap_addresses->on_37_addr =
41 mmap(on_37_bits, 5 * sizeof(int), prot, flags, 0, 0);
42 mmap_addresses->on_38_addr =
43 mmap(on_38_bits, 5 * sizeof(int), prot, flags, 0, 0);
44 mmap_addresses->on_46_addr =
45 mmap(on_46_bits, 5 * sizeof(int), prot, flags, 0, 0);
46 mmap_addresses->on_47_addr =
47 mmap(on_47_bits, 5 * sizeof(int), prot, flags, 0, 0);
48 mmap_addresses->on_55_addr =
49 mmap(on_55_bits, 5 * sizeof(int), prot, flags, 0, 0);
50 mmap_addresses->on_56_addr =
51 mmap(on_56_bits, 5 * sizeof(int), prot, flags, 0, 0);
54 static inline int memory_layout(void)
56 int prot = PROT_READ | PROT_WRITE;
57 int flags = MAP_PRIVATE | MAP_ANONYMOUS;
59 void *value1 = mmap(NULL, sizeof(int), prot, flags, 0, 0);
60 void *value2 = mmap(NULL, sizeof(int), prot, flags, 0, 0);
62 return value2 > value1;
64 #endif /* _TESTCASES_MMAP_TEST_H */