Path: blob/main/tests/sys/vm/mmap_map_32bit_helper.c
39534 views
/*-1* Copyright (c) 2023 Dmitry Chagin <[email protected]>2*3* SPDX-License-Identifier: BSD-2-Clause4*/56#include <sys/mman.h>78#include <err.h>9#include <fcntl.h>10#include <stdlib.h>11#include <unistd.h>1213#define MAP_32BIT_MAX_ADDR ((vm_offset_t)1 << 31)1415int16main(void)17{18size_t pagesize;19void *s32;20int fd;2122if ((pagesize = getpagesize()) <= 0)23err(1, "getpagesize");2425fd = open("/dev/zero", O_RDONLY);26if (fd <= 0)27err(1, "open failed");2829s32 = mmap(NULL, pagesize, PROT_READ, MAP_32BIT | MAP_PRIVATE, fd, 0);30if (s32 == MAP_FAILED)31err(1, "mmap MAP_32BIT | MAP_PRIVATE failed");32if (((vm_offset_t)s32 + pagesize) > MAP_32BIT_MAX_ADDR)33errx(1, "mmap invalid result %p", s32);3435close(fd);36if (munmap(s32, pagesize) != 0)37err(1, "munmap failed");3839s32 = mmap(NULL, pagesize, PROT_READ | PROT_WRITE,40MAP_32BIT | MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);41if (s32 == MAP_FAILED)42err(1, "mmap MAP_32BIT | MAP_ANONYMOUS | MAP_PRIVATE failed");43if (((vm_offset_t)s32 + pagesize) > MAP_32BIT_MAX_ADDR)44errx(1, "mmap invalid result %p", s32);4546if (munmap(s32, pagesize) != 0)47err(1, "munmap failed");48exit(0);49}505152