base/src: Prepare Unix StreamChannel for Tube use

This CL is one of two CLs in a series that migrate the Unix Tube from
using UnixSeqpackets directly to instead use StreamChannels backed by
UnixSeqpackets. This CL adds some pass-through functions to
StreamChannel that are needed by Tube in the follow-up CL, as well as
a new function to create a StreamChannel directly from a UnixSeqpacket.
Additionally, a test is added for the new constructor-like function.

This migration (Tube from UnixSeqpacket to Stream) is intended to move
the Unix Tube API closer to the Windows API, with the eventual goal of
creating a platform-agnostic API for Tube.

Bug: b:231641496
Change-Id: I8d7da6a0e64d38d8f9833ae8e62ec7a2c4cfda5c
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3818249
Tested-by: Clarissa Garvey <clarissagarvey@chromium.org>
Reviewed-by: Noah Gold <nkgold@google.com>
2 files changed
tree: 4dce8dd304f8b2c9633f55cdd00badd1b09ebd41
  1. .cargo/
  2. .devcontainer/
  3. .github/
  4. aarch64/
  5. acpi_tables/
  6. anti_tamper/
  7. arch/
  8. argh_helpers/
  9. base/
  10. bin/
  11. bit_field/
  12. broker_ipc/
  13. ci/
  14. common/
  15. cros_async/
  16. crosvm-fuzz/
  17. crosvm_control/
  18. crosvm_plugin/
  19. devices/
  20. disk/
  21. docs/
  22. fuse/
  23. gpu_display/
  24. hypervisor/
  25. infra/
  26. integration_tests/
  27. io_uring/
  28. kernel_cmdline/
  29. kernel_loader/
  30. kvm/
  31. kvm_sys/
  32. libcras_stub/
  33. linux_input_sys/
  34. logo/
  35. media/
  36. metrics/
  37. net_sys/
  38. net_util/
  39. power_monitor/
  40. protos/
  41. qcow_utils/
  42. resources/
  43. rutabaga_gfx/
  44. seccomp/
  45. serde_keyvalue/
  46. src/
  47. system_api_stub/
  48. tests/
  49. third_party/
  50. tools/
  51. tpm2/
  52. tpm2-sys/
  53. tracing/
  54. tube_transporter/
  55. usb_sys/
  56. usb_util/
  57. vfio_sys/
  58. vhost/
  59. virtio_sys/
  60. vm_control/
  61. vm_memory/
  62. win_audio/
  63. win_util/
  64. x86_64/
  65. .dockerignore
  66. .gitignore
  67. .gitmodules
  68. .rustfmt.toml
  69. ARCHITECTURE.md
  70. Cargo.lock
  71. Cargo.toml
  72. CONTRIBUTING.md
  73. LICENSE
  74. navbar.md
  75. OWNERS
  76. PRESUBMIT.cfg
  77. README.chromeos.md
  78. README.md
  79. run_tests
  80. rust-toolchain
  81. setup_cros_cargo.sh
  82. test_all
  83. unblocked_terms.txt
README.md

crosvm - The Chrome OS 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 Chrome OS 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 Chrome OS devices.

Logo