Conversation
This PR implements all remaining madvise values specified in the [Linux man page](https://man7.org/linux/man-pages/man2/madvise.2.html). The following values are added: 1. SOFT_OFFLINE 2. WIPEONFORK 3. KEEPONFORK 4. COLD 5. PAGEOUT 6. COLLAPSE Values 1-5 were mentioned in a comment for future expansion. COLLAPSE was also found to be missing. All six values are memory safe. Brief explanations are below: 1. SOFT_OFFLINE: effects do not change the semantics of the calling process. 2. WIPEONFORK: only affects child processes by zeroing memory post-fork. 3. KEEPONFORK: only affects child processes by preserving memory across fork. 4. COLD: indicates pages are unlikely to be accessed soon; non-destructive. 5. PAGEOUT: requests page reclamation; non-destructive. 6. COLLAPSE: consolidates pages into THPs; non-destructive. I encourage reviewers to verify my safety assumptions.
7799dbe to
f689ad4
Compare
This fixes the musl build by excluding MADV_COLLAPSE under musl.
|
Is
|
|
I tested WIPEONFORK here --> https://github.com/allan2/wipeonfork-pre-exec-example This should cover the typical use case. However, there is still potential for unsafety if |
|
Personally, I think we should go the cautious route and make it unsafe to wipe memory, if user code can still run afterwards. |
|
Can we at least merge the safe ones like collapse? |
This PR implements all remaining madvise values specified in the Linux man page.
The following values are added:
Values 1-5 were mentioned in a comment for future expansion. COLLAPSE was also found to be missing.
All six values are memory safe. Brief explanations are below:
I encourage reviewers to verify my safety assumptions.