Use PvClockState struct for storing serializable part at runtime

Create and use PvClockState struct. Before this CL, PvClockSnapshot
had been created by hand because of Arc is used for total_suspend_ns.
However, it can be serialized when rc feature is enabled for serde crate
so enable it and share the common struct to make the code clean.

c.f. https://docs.rs/serde/latest/serde/trait.Serialize.html#impl-Serialize-for-Arc%3CT%3E

BUG=None
TEST=cargo build -F pvclock
TEST=cargo test -p devices -F pvclock -- pvclock
TEST=cargo test -p e2e_tests -- pvclock

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