Create a vsock_half_tunnel mode.

This uses native adb/vsock support in the guest, but presents a TCP
connection on the host that can be used across the network. This is a
compromise between the high-performance vsock code and remote access.

Observed behavior with adb push/pull:
$ adb push ~/tmp/100m /data/local/tmp
1 file pushed. 135.9 MB/s (104857600 bytes in 0.736s)
$ adb push ~/tmp/100m /data/local/tmp
1 file pushed. 229.4 MB/s (104857600 bytes in 0.436s)
$ adb pull /data/local/tmp ~/tmp/100m2
1 file pulled. 13.2 MB/s (104857600 bytes in 7.603s)

Push is surprisingly close to the performance of native_vsock, while
pull is still comparable to tunnel and vsock_tunnel.

Test: Run with -adb_mode=vsock_half_tunnel
Bug: 121166534
Change-Id: Ia11ff2915b7799d7dbbc3f6a99de33e5ad9e19b3
2 files changed
tree: a876b2774cbad1e45b615d4c71bff47bfe933b4e
  1. common/
  2. guest/
  3. host/
  4. tests/
  5. tools/
  6. Android.bp
  7. Android.mk
  8. OWNERS