Created
August 4, 2020 19:07
-
-
Save ryo/72f174ff4edd609ae4827c4816774fec to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
% uname -ap | |
NetBSD subq 9.99.69 NetBSD 9.99.69 (GENERIC.SUBQ) #37: Sun Jul 5 02:54:58 JST 2020 ryo@subq:/usr/src/sys/arch/amd64/compile/GENERIC.SUBQ amd64 x86_64 | |
% cat mmaptest.c | |
#include <err.h> | |
#include <fcntl.h> | |
#include <stdio.h> | |
#include <unistd.h> | |
#include <sys/mman.h> | |
char path_procmap[128]; | |
static void | |
procmap(void) | |
{ | |
int fd; | |
ssize_t r; | |
char buf[1024 * 8]; | |
if (path_procmap[0] == '\0') { | |
snprintf(path_procmap, sizeof(path_procmap), "/proc/%d/map", getpid()); | |
} | |
fd = open(path_procmap, O_RDONLY); | |
if (fd < 0) | |
errx(1, "open: %s", path_procmap); | |
printf("[%s]\n", path_procmap); | |
do { | |
r = read(fd, buf, sizeof(buf)); | |
if (r > 0) | |
fwrite(buf, r, 1, stdout); | |
} while (r == sizeof(buf)); | |
printf("\n"); | |
close(fd); | |
} | |
int | |
main() | |
{ | |
void *p, *result; | |
int i; | |
p = (void *)0x400000LL; | |
for (;;) { | |
procmap(); | |
printf("do mmap(%p,,,,,)\n", p); | |
result = mmap(p, getpagesize(), PROT_NONE, MAP_PRIVATE | MAP_NORESERVE | MAP_ANONYMOUS, 0xffffffff, 0); | |
if (result == MAP_FAILED) | |
err(1, "mmap"); | |
printf("mmap(%p,,,,,) -> %p\n\n", p, result); | |
} | |
return 0; | |
} | |
% cc mmaptest.c | |
% ./a.out | |
[/proc/3041/map] | |
0x400000 0x402000 r-x r-x COW NC 1 0 0 | |
0x601000 0x602000 rw- rw- COW NNC 1 0 0 | |
0x7f7ff6e00000 0x7f7ff6e10000 rw- rw- COW NNC 1 0 0 | |
0x7f7ff6e10000 0x7f7ff6fb0000 rw- rw- COW NC 1 0 0 | |
0x7f7ff6fb0000 0x7f7ff6fc0000 rw- rw- COW NNC 1 0 0 | |
0x7f7ff6fc0000 0x7f7ff7200000 rw- rw- COW NC 1 0 0 | |
0x7f7ff7200000 0x7f7ff7210000 rw- rw- COW NNC 1 0 0 | |
0x7f7ff7210000 0x7f7ff7400000 rw- rw- COW NC 1 0 0 | |
0x7f7ff7400000 0x7f7ff75d5000 r-x r-x COW NC 1 0 0 | |
0x7f7ff75d5000 0x7f7ff77d4000 --- r-x COW NC 1 0 0 | |
0x7f7ff77d4000 0x7f7ff77e0000 r-- rw- COW NNC 1 0 0 | |
0x7f7ff77e0000 0x7f7ff77e6000 rw- rw- COW NNC 1 0 0 | |
0x7f7ff77e6000 0x7f7ff7800000 rw- rw- COW NNC 1 0 0 | |
0x7f7ff7800000 0x7f7ff78f0000 rw- rw- COW NC 1 0 0 | |
0x7f7ff78f0000 0x7f7ff7900000 rw- rw- COW NNC 1 0 0 | |
0x7f7ff7900000 0x7f7ff79f0000 rw- rw- COW NC 1 0 0 | |
0x7f7ff79f0000 0x7f7ff7a08000 rw- rw- COW NNC 1 0 0 | |
0x7f7ff7c00000 0x7f7ff7c0f000 r-x r-x COW NC 1 0 0 | |
0x7f7ff7c0f000 0x7f7ff7e0f000 --- --- COW NC 1 0 0 | |
0x7f7ff7e0f000 0x7f7ff7e10000 rw- rw- COW NNC 1 0 0 | |
0x7f7ff7e10000 0x7f7ff7e11000 rw- rw- COW NNC 1 0 0 | |
0x7f7ff7ee3000 0x7f7ff7eff000 rw- rw- COW NNC 1 0 0 | |
0x7f7ff7eff000 0x7f7ff8fff000 --- --- COW NC 1 0 0 | |
0x7f7ff8fff000 0x7f7fffff0000 rw- rw- COW NC 1 0 0 | |
0x7f7fffff0000 0x7f7ffffff000 rw- rw- COW NNC 1 0 0 | |
do mmap(0x400000,,,,,) | |
mmap(0x400000,,,,,) -> 0x3ff000 | |
[/proc/3041/map] | |
0x3ff000 0x400000 --- --- COW NC 1 0 0 | |
0x400000 0x402000 r-x r-x COW NC 1 0 0 | |
0x601000 0x602000 rw- rw- COW NNC 1 0 0 | |
0x7f7ff6e00000 0x7f7ff6e10000 rw- rw- COW NNC 1 0 0 | |
0x7f7ff6e10000 0x7f7ff6fb0000 rw- rw- COW NC 1 0 0 | |
0x7f7ff6fb0000 0x7f7ff6fc0000 rw- rw- COW NNC 1 0 0 | |
0x7f7ff6fc0000 0x7f7ff7200000 rw- rw- COW NC 1 0 0 | |
0x7f7ff7200000 0x7f7ff7210000 rw- rw- COW NNC 1 0 0 | |
0x7f7ff7210000 0x7f7ff7400000 rw- rw- COW NC 1 0 0 | |
0x7f7ff7400000 0x7f7ff75d5000 r-x r-x COW NC 1 0 0 | |
0x7f7ff75d5000 0x7f7ff77d4000 --- r-x COW NC 1 0 0 | |
0x7f7ff77d4000 0x7f7ff77e0000 r-- rw- COW NNC 1 0 0 | |
0x7f7ff77e0000 0x7f7ff77e6000 rw- rw- COW NNC 1 0 0 | |
0x7f7ff77e6000 0x7f7ff7800000 rw- rw- COW NNC 1 0 0 | |
0x7f7ff7800000 0x7f7ff78f0000 rw- rw- COW NC 1 0 0 | |
0x7f7ff78f0000 0x7f7ff7900000 rw- rw- COW NNC 1 0 0 | |
0x7f7ff7900000 0x7f7ff79f0000 rw- rw- COW NC 1 0 0 | |
0x7f7ff79f0000 0x7f7ff7a08000 rw- rw- COW NNC 1 0 0 | |
0x7f7ff7c00000 0x7f7ff7c0f000 r-x r-x COW NC 1 0 0 | |
0x7f7ff7c0f000 0x7f7ff7e0f000 --- --- COW NC 1 0 0 | |
0x7f7ff7e0f000 0x7f7ff7e10000 rw- rw- COW NNC 1 0 0 | |
0x7f7ff7e10000 0x7f7ff7e11000 rw- rw- COW NNC 1 0 0 | |
0x7f7ff7ee3000 0x7f7ff7eff000 rw- rw- COW NNC 1 0 0 | |
0x7f7ff7eff000 0x7f7ff8fff000 --- --- COW NC 1 0 0 | |
0x7f7ff8fff000 0x7f7fffff0000 rw- rw- COW NC 1 0 0 | |
0x7f7fffff0000 0x7f7ffffff000 rw- rw- COW NNC 1 0 0 | |
do mmap(0x400000,,,,,) | |
a.out: mmap: Cannot allocate memory | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment