balloon: add event registration mechanism for sidecar processes.

this patch introduces a mechanism for so-called 'sidecar processes' to
register as event listeners, consuming events that are generated in
various parts of crosvm. in this patch we focus on events that enable
roziere cooperative ballooning, but lay the groundwork for a more
general framework.

the general idea is that a sidecar process would open a listening socket
and register the path with crosvm for a specific event. crosvm will pass
along a handle to a registered event tube to the appropriate device (or
other internal component) which would then be responsible for passing
along events. once events arrive back in the crosvm control loop, an
attempt is made to dispatch the events to any registered sockets.

BUG=b:269609274
TEST=sidecar program that performs registration and receives events

Change-Id: Iaff41aad8f862ed99a104c75623caaabc53e9e88
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4237140
Commit-Queue: Maciek Swiech <drmasquatch@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
7 files changed
tree: 28221c667cc021ddfe7f2ad500919ecb1538f250
  1. .cargo/
  2. .config/
  3. .devcontainer/
  4. .github/
  5. .vscode/
  6. aarch64/
  7. acpi_tables/
  8. anti_tamper/
  9. arch/
  10. argh_helpers/
  11. base/
  12. bit_field/
  13. broker_ipc/
  14. common/
  15. crash_report/
  16. cros_async/
  17. cros_fdt/
  18. cros_tracing/
  19. crosvm-fuzz/
  20. crosvm_cli/
  21. crosvm_control/
  22. crosvm_plugin/
  23. devices/
  24. disk/
  25. docs/
  26. e2e_tests/
  27. fuse/
  28. gpu_display/
  29. hypervisor/
  30. infra/
  31. io_uring/
  32. jail/
  33. kernel_cmdline/
  34. kernel_loader/
  35. kvm/
  36. kvm_sys/
  37. libcras_stub/
  38. linux_input_sys/
  39. logo/
  40. media/
  41. metrics/
  42. net_sys/
  43. net_util/
  44. power_monitor/
  45. prebuilts/
  46. proto_build_tools/
  47. protos/
  48. qcow_utils/
  49. resources/
  50. rutabaga_gfx/
  51. sandbox/
  52. serde_keyvalue/
  53. src/
  54. swap/
  55. system_api/
  56. tests/
  57. third_party/
  58. tools/
  59. tpm2/
  60. tpm2-sys/
  61. tube_transporter/
  62. usb_sys/
  63. usb_util/
  64. vfio_sys/
  65. vhost/
  66. virtio_sys/
  67. vm_control/
  68. vm_memory/
  69. win_audio/
  70. win_util/
  71. x86_64/
  72. .dockerignore
  73. .gitignore
  74. .gitmodules
  75. .rustfmt.toml
  76. ARCHITECTURE.md
  77. Cargo.lock
  78. Cargo.toml
  79. CONTRIBUTING.md
  80. DIR_METADATA
  81. LICENSE
  82. mypy.ini
  83. OWNERS
  84. OWNERS_COUNCIL
  85. PRESUBMIT.cfg
  86. pyproject.toml
  87. README.chromeos.md
  88. README.md
  89. rust-toolchain
README.md

crosvm - The ChromeOS Virtual Machine Monitor

crosvm is a virtual machine monitor (VMM) based on Linux’s KVM hypervisor, with a focus on simplicity, security, and speed. crosvm is intended to run Linux guests, originally as a security boundary for running native applications on the ChromeOS platform. Compared to QEMU, crosvm doesn’t emulate architectures or real hardware, instead concentrating on paravirtualized devices, such as the virtio standard.

crosvm is currently used to run Linux/Android guests on ChromeOS devices.

Logo