ladybird/Kernel/VM
Andreas Kling dbb644f20c Kernel: Start implementing purgeable memory support
It's now possible to get purgeable memory by using mmap(MAP_PURGEABLE).
Purgeable memory has a "volatile" flag that can be set using madvise():

- madvise(..., MADV_SET_VOLATILE)
- madvise(..., MADV_SET_NONVOLATILE)

When in the "volatile" state, the kernel may take away the underlying
physical memory pages at any time, without notifying the owner.
This gives you a guilt discount when caching very large things. :^)

Setting a purgeable region to non-volatile will return whether or not
the memory has been taken away by the kernel while being volatile.
Basically, if madvise(..., MADV_SET_NONVOLATILE) returns 1, that means
the memory was purged while volatile, and whatever was in that piece
of memory needs to be reconstructed before use.
2019-12-09 19:12:38 +01:00
..
AnonymousVMObject.cpp Kernel: Use a FixedArray for VMObject::m_physical_pages 2019-08-07 20:12:50 +02:00
AnonymousVMObject.h Kernel: Start implementing purgeable memory support 2019-12-09 19:12:38 +01:00
InodeVMObject.cpp Kernel: Teach Region how to remap itself 2019-11-03 21:11:08 +01:00
InodeVMObject.h Kernel: Split VMObject into two classes: Anonymous- and InodeVMObject 2019-08-07 18:09:32 +02:00
MemoryManager.cpp Kernel: Put some debug spam behind PAGE_FAULT_DEBUG 2019-12-01 16:03:24 +01:00
MemoryManager.h Kernel: Disallow syscalls from writeable memory 2019-11-29 16:30:05 +01:00
PageDirectory.cpp Kernel: Fix triple-fault when clicking on SystemServer in SystemMonitor 2019-11-27 12:40:42 +01:00
PageDirectory.h Kernel: Fix triple-fault when clicking on SystemServer in SystemMonitor 2019-11-27 12:40:42 +01:00
PhysicalAddress.h Kernel: Add LogStream operator<< for PhysicalAddress 2019-09-15 20:47:49 +02:00
PhysicalPage.cpp Kernel: Move kmalloc() into a Kernel/Heap/ directory 2019-09-16 09:01:44 +02:00
PhysicalPage.h Kernel: Add a simple slab allocator for small allocations 2019-09-16 10:33:27 +02:00
PhysicalRegion.cpp Kernel: Fix returning pages to regions >= 2GB 2019-09-17 09:27:23 +02:00
PhysicalRegion.h Kernel: Move PhysicalAddress.h into VM/ 2019-07-09 15:04:45 +02:00
PurgeableVMObject.cpp Kernel: Start implementing purgeable memory support 2019-12-09 19:12:38 +01:00
PurgeableVMObject.h Kernel: Start implementing purgeable memory support 2019-12-09 19:12:38 +01:00
RangeAllocator.cpp Kernel: Make it possible to turn off VM guard pages at compile time 2019-09-30 17:22:16 +02:00
RangeAllocator.h AK: Rename <AK/AKString.h> to <AK/String.h> 2019-09-06 15:36:54 +02:00
Region.cpp Kernel: Start implementing purgeable memory support 2019-12-09 19:12:38 +01:00
Region.h Kernel: Crash on memory access in non-readable regions 2019-12-02 19:18:52 +01:00
VirtualAddress.h Kernel: Add LogStream operator<< for VirtualAddress 2019-08-06 10:28:46 +02:00
VMObject.cpp Kernel: Use a FixedArray for VMObject::m_physical_pages 2019-08-07 20:12:50 +02:00
VMObject.h Kernel: Start implementing purgeable memory support 2019-12-09 19:12:38 +01:00