[zx] Split mexec functionality out from devmgr.

Introduce new fuchsia.kernel.MexecBroker that will live in svchost,
similar to f.k.DebugBroker. It will take over responsibility for
providing the service that is used to mexec the system.

This also changes slighly how the Suspend call works for devmgr. The
suspend call will now wait until the suspend operation is done before
returning a result to the fidl caller. The mexec process now uses this
functionality to allow a caller to call the mexec syscall after all
devices are suspended instead of relying on a special case in devmgr to
do it.

Re-apply of change: I84fb42a70de039b32b71db08242701d2a66e1c53 but
includes fix of use-after-free bug.

Issue: ZX-3403 #Mexec on its own.
Test: Added unit tests and manual testing:
On astro:
1) fx set smart_display.astro --release
2) (flash astro command)
3) fx serve (paving)
4) fx reboot -r (paving more)

On vim2:
1) fx set core.vim2
2) fx serve (paving)
3) fx reboot -r (2 times to pave on new zedboot and one more for good
measure).

On eve:
1) fx set workstation.chromebook-x64
2) fx mkzedboot ...
3) fx serve (pave/mexec)

Repeat with "--variant clang"

Change-Id: I50c677ad2c8c5f34576a2722bb9a86c1d9582a97
14 files changed
tree: 022114fd5bddc139229fa93d5cde3d5e280920a5
  1. boards/
  2. build/
  3. buildtools/
  4. bundles/
  5. docs/
  6. examples/
  7. garnet/
  8. peridot/
  9. products/
  10. scripts/
  11. sdk/
  12. src/
  13. third_party/
  14. tools/
  15. zircon/
  16. .clang-format
  17. .clang-tidy
  18. .dir-locals.el
  19. .gitattributes
  20. .gitignore
  21. .gn
  22. AUTHORS
  23. BUILD.gn
  24. CODE_OF_CONDUCT.md
  25. CONTRIBUTING.md
  26. LICENSE
  27. OWNERS
  28. PATENTS
  29. README.md
  30. 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.

How can I build and run Fuchsia?

See Getting Started.

Where can I learn more about Fuchsia?

See the documentation.