crosvm: Use handle_eintr_errno for non-reentrant libc functions

EINTR might be returned when device goes to suspend mode.
Retry the syscall after device resumes back from suspend
instead of failing the I/O requests from the VM.

Bug: 445996801
Test: CI/CD
Signed-off-by: Akilesh Kailash <akailash@google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/6967030
Reviewed-by: Jiyong Park <jiyong@google.com>
Reviewed-by: Frederick Mayle <fmayle@google.com>
Cherrypick-From: https://googleplex-android-review.googlesource.com/q/commit:0d6086bd3e1fd970a3771703748265d4c05fa55f
Merged-In: I1da78b315338432e040dbdee7a25422405df0bcd
Change-Id: I1da78b315338432e040dbdee7a25422405df0bcd
1 file changed
tree: 9130d36a425771b915503b9df73dc9740d4b8cfa
  1. .cargo/
  2. .config/
  3. .devcontainer/
  4. .github/
  5. .vscode/
  6. aarch64/
  7. aarch64_sys_reg/
  8. acpi_tables/
  9. android_audio/
  10. arch/
  11. argh_helpers/
  12. audio_streams_conformance_test/
  13. audio_util/
  14. base/
  15. base_tokio/
  16. bit_field/
  17. common/
  18. cros_async/
  19. cros_fdt/
  20. cros_tracing/
  21. cros_tracing_types/
  22. crosvm_cli/
  23. crosvm_control/
  24. crosvm_plugin/
  25. cuttlefish/
  26. devices/
  27. disk/
  28. docs/
  29. e2e_tests/
  30. ext2/
  31. fuse/
  32. fuzz/
  33. gpu_display/
  34. hypervisor/
  35. infra/
  36. io_uring/
  37. jail/
  38. kernel_cmdline/
  39. kernel_loader/
  40. kvm/
  41. kvm_sys/
  42. libcras_stub/
  43. linux_input_sys/
  44. logo/
  45. media/
  46. metrics/
  47. metrics_events/
  48. net_sys/
  49. net_util/
  50. patches/
  51. perfetto/
  52. power_monitor/
  53. prebuilts/
  54. proc_init/
  55. proto_build_tools/
  56. protos/
  57. resources/
  58. riscv64/
  59. rutabaga_gfx/
  60. sandbox/
  61. serde_keyvalue/
  62. snapshot/
  63. src/
  64. swap/
  65. system_api/
  66. tests/
  67. third_party/
  68. tools/
  69. tube_transporter/
  70. usb_sys/
  71. usb_util/
  72. vendor/
  73. vfio_sys/
  74. vhost/
  75. virtio_sys/
  76. vm_control/
  77. vm_memory/
  78. win_audio/
  79. win_util/
  80. x86_64/
  81. .dockerignore
  82. .envrc
  83. .gitattributes
  84. .gitignore
  85. .rustfmt.toml
  86. android-fork-stats.sh
  87. android-merge-1-setup.sh
  88. android-merge-2-cargo-embargo.sh
  89. Android.bp
  90. ARCHITECTURE.md
  91. Cargo.lock
  92. Cargo.toml
  93. cargo2android_defaults.bp
  94. cargo2android_module.bp.patch
  95. cargo_embargo.json
  96. CONTRIBUTING.md
  97. DIR_METADATA
  98. LICENSE
  99. METADATA
  100. mypy.ini
  101. OWNERS
  102. OWNERS.android
  103. OWNERS_COUNCIL
  104. PRESUBMIT.cfg
  105. PREUPLOAD.cfg
  106. pyproject.toml
  107. README.chromeos.md
  108. README.md
  109. rust-toolchain
  110. TEST_MAPPING
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