sys_mman: adding madvise.

This commit is contained in:
David Carlier
2023-04-15 10:40:52 +01:00
parent d5c88c7ca6
commit 116583cdc7
5 changed files with 20 additions and 2 deletions
+4 -2
View File
@@ -12,11 +12,13 @@ int main() {
puts("Mapping 1 page of memory...");
char *map1 = mmap((void *) 0x200000000, (size_t) page_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED_NOREPLACE, -1, 0);
puts("Mapping 3 pages of memory...");
char *map2 = mmap(map1 + page_size, (size_t) page_size * 3, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED_NOREPLACE, -1, 0);
char *map2 = mmap(map1 + page_size, (size_t) page_size * 4, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED_NOREPLACE, -1, 0);
ERROR_IF(mmap, map1, == MAP_FAILED);
ERROR_IF(mmap, map2, == MAP_FAILED);
(void)madvise(map1 + page_size + 3, page_size, PROT_NONE);
puts("Randomizing mapping #1");
for (int i = 0; i < page_size; ++i) {
map1[i] = (char) (rand() & 0xFF);
@@ -43,7 +45,7 @@ int main() {
// map2[page_size] = 0;
puts("Unmapping it all at once!");
munmap(map1, (size_t) page_size * 4);
munmap(map1, (size_t) page_size * 5);
// Page fault:
// *map2 = 0;