Files
ladybird/Kernel
Andreas Kling 2c0df5e7e7 Kernel: Share committed COW pages between whole VMObject lineage
When cloning an AnonymousVMObject, committed COW pages are shared
between the parent and child object. Whicever object COW's first will
take the shared committed page, and if the other object ends up doing
a COW as well, it will notice that the page is no longer shared by
two objects and simple remap it as read/write.

When a child is COW'ed again, while still having shared committed
pages with its own parent, the grandchild object will now join in the
sharing pool with its parent and grandparent. This means that the first
2 of 3 objects that COW will draw from the shared committed pages, and
3rd will remap read/write.

Previously, we would "fork" the shared committed pages when cloning,
which could lead to a situation where the grandparent held on to 1 of
the 3 needed shared committed pages. If both the child and grandchild
COW'ed, they wouldn't have enough pages, and since the grandparent
maintained an extra +1 ref count on the page, it wasn't possible to
to remap read/write.
2021-07-30 13:17:55 +02:00
..
2021-07-11 14:14:51 +02:00
2021-07-17 21:10:32 +02:00
2021-06-28 15:55:00 +02:00
2021-06-24 10:29:09 +02:00
2021-06-24 10:29:09 +02:00
2021-07-17 21:10:32 +02:00
2021-07-17 21:10:32 +02:00
2021-07-17 21:10:32 +02:00
2021-06-24 00:38:23 +02:00
2021-06-24 00:38:23 +02:00