xref: /qemu/tests/tcg/multiarch/linux/test-vma.c (revision 33629b82aeadb070a803e5887d3a5de59b1c95c9)
167ff2186SRichard Henderson /*
267ff2186SRichard Henderson  * Test very large vma allocations.
367ff2186SRichard Henderson  * The qemu out-of-memory condition was within the mmap syscall itself.
467ff2186SRichard Henderson  * If the syscall actually returns with MAP_FAILED, the test succeeded.
567ff2186SRichard Henderson  */
667ff2186SRichard Henderson #include <sys/mman.h>
767ff2186SRichard Henderson 
main()867ff2186SRichard Henderson int main()
967ff2186SRichard Henderson {
1067ff2186SRichard Henderson     int n = sizeof(size_t) == 4 ? 32 : 45;
1167ff2186SRichard Henderson 
1267ff2186SRichard Henderson     for (int i = 28; i < n; i++) {
1367ff2186SRichard Henderson         size_t l = (size_t)1 << i;
1467ff2186SRichard Henderson         void *p = mmap(0, l, PROT_NONE,
1567ff2186SRichard Henderson                        MAP_PRIVATE | MAP_ANONYMOUS | MAP_NORESERVE, -1, 0);
1667ff2186SRichard Henderson         if (p == MAP_FAILED) {
1767ff2186SRichard Henderson             break;
1867ff2186SRichard Henderson         }
1967ff2186SRichard Henderson         munmap(p, l);
2067ff2186SRichard Henderson     }
2167ff2186SRichard Henderson     return 0;
2267ff2186SRichard Henderson }
23