[kernel][vm] Introduce VmCowPages

This creates a parallel hierarchy to VmObjectPaged in VmCowPages. The
logic of actually manipulating copy-on-write through the VmPageList is
handled by VmCowPages, with VmObjectPaged maintaining responsibility
for handling VmMappings and providing the user API.

Standalone this commit is a temporary regression in terms of memory use
and performance due to the VmObjectPaged still creating needless hidden
parents that serve no purpose. The reason to have a temporary regression
is to keep this commit as close to "moving code" as possible without
there also being additional complex changes hidden inside. This does
lay the groundwork for successive commits to perform the 'interesting'
transformations to end up in an eventually more efficient hierarchy.

Change-Id: I32ee7e8f1a158aa3e8cfa3cdb87435ec129588e9
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/437341
Commit-Queue: Adrian Danis <adanis@google.com>
Reviewed-by: Rasha Eqbal <rashaeqbal@google.com>
Testability-Review: Rasha Eqbal <rashaeqbal@google.com>
7 files changed
tree: 62d7175044f51e4be7e6c251f3c4e88be1e30a8a
  1. boards/
  2. build/
  3. bundles/
  4. docs/
  5. examples/
  6. garnet/
  7. products/
  8. scripts/
  9. sdk/
  10. src/
  11. third_party/
  12. tools/
  13. zircon/
  14. .clang-format
  15. .clang-tidy
  16. .gitattributes
  17. .gitignore
  18. .gn
  19. .style.yapf
  20. AUTHORS
  21. BUILD.gn
  22. CODE_OF_CONDUCT.md
  23. CONTRIBUTING.md
  24. LICENSE
  25. OWNERS
  26. PATENTS
  27. README.md
  28. rustfmt.toml
README.md

Fuchsia

Pink + Purple == Fuchsia (a new operating system)

What is Fuchsia?

Fuchsia is a modular, capability-based operating system. Fuchsia runs on modern 64-bit Intel and ARM processors.

Fuchsia is an open source project with a code of conduct that we expect everyone who interacts with the project to respect.

Read more about Fuchsia's principles.

How can I build and run Fuchsia?

See Getting Started.

Where can I learn more about Fuchsia?

See fuchsia.dev.