No description
Find a file
Josh Gao c51726cbec adbd: implement a nonblocking USB Connection.
Implement a Connection that implements a nonblocking interface to
functionfs, to replace the existing implementation that uses two
threads that loop and call read and write respectively. The existing
implementation is vulnerable to a race condition that can occur when a
connection is terminated, where one thread can notice failure and
complete reinitialization of the USB endpoints before the other thread
noticed anything went wrong, resulting in either the first packet
coming from the other end disappearing in to the void, or the other end
getting a packet of garbage.

As a side benefit, this improves performance on walleye from:

    push 100MiB: 10 runs: median 49.48 MiB/s, mean 50.00 MiB/s, stddev: 2.77 MiB/s
    pull 100MiB: 10 runs: median 75.82 MiB/s, mean 76.18 MiB/s, stddev: 6.60 MiB/s

to:

    push 100MiB: 10 runs: median 73.90 MiB/s, mean 73.51 MiB/s, stddev: 5.26 MiB/s
    pull 100MiB: 10 runs: median 105.90 MiB/s, mean 107.19 MiB/s, stddev: 6.10 MiB/s

Test: python test_device.py
Change-Id: I9b77c1057965edfef739ed9736e5d76613adf60a
2018-10-19 17:53:18 -07:00
adb adbd: implement a nonblocking USB Connection. 2018-10-19 17:53:18 -07:00
adf Make libadf, libsync_recovery recovery_available. 2018-08-07 10:53:07 -07:00
base Merge changes from topic "windows-libcxx" 2018-10-11 17:00:53 +00:00
bootstat bootstat: smpl -> reboot,powerloss 2018-09-26 13:02:16 -07:00
cpio Possible null pointer miss on realloc 2017-03-23 22:41:14 +01:00
debuggerd Fix two clang-tidy issues in crasher.cpp. 2018-09-24 13:18:22 -07:00
demangle Build adbd for recovery 2018-05-24 14:11:11 +09:00
diagnose_usb Build adbd for recovery 2018-05-24 14:11:11 +09:00
fastboot Merge "fastboot: use constants.h values" 2018-10-18 14:27:33 +00:00
fs_mgr Merge "fs_mgr: fs_mgr_overlayfs_mount_scratch try alternate" 2018-10-18 19:21:41 +00:00
gatekeeperd Move system/core/ off NO_ERROR. 2018-10-08 11:15:52 -07:00
healthd Move system/core/ off NO_ERROR. 2018-10-08 11:15:52 -07:00
include Move android_filesystem_config.h => fs_config.h 2017-08-02 16:31:19 -07:00
init Merge "init: separate init packaging for mainline" 2018-10-16 20:29:47 +00:00
libappfuse Stop using SO_SNDBUFFORCE 2018-03-15 14:22:27 +09:00
libasyncio Build adbd for recovery 2018-05-24 14:11:11 +09:00
libbacktrace Implement support for linker rosegment option. 2018-10-03 20:48:45 -07:00
libbinderwrapper Make libbinderwrapper available in /vendor partition 2018-04-06 08:41:21 +09:00
libcrypto_utils Build adbd for recovery 2018-05-24 14:11:11 +09:00
libcutils fs_mgr: fix incorrect parameter type 2018-10-09 10:49:44 -07:00
libdiskconfig Rename target.linux[_x86[_64]] to target.linux_glibc[_x86[_64]] 2017-10-02 10:44:29 -07:00
libgrallocusage Merge "Build both static and shared lib." 2018-09-25 22:29:31 +00:00
libion libion: cleanup logging 2018-03-07 10:56:06 -08:00
libkeyutils Build adbd for recovery 2018-05-24 14:11:11 +09:00
liblog Add noexcept to move constructors and assignment operators. 2018-10-05 16:43:47 +00:00
libmemtrack Add OWNERS. 2017-12-07 13:30:03 -08:00
libmemunreachable Add noexcept to move constructors and assignment operators. 2018-10-05 16:43:47 +00:00
libmetricslogger Make native metrics logger write to statsd socket 2018-10-18 10:39:40 -07:00
libnativebridge Add error_msg argument to CloseNativeLibrary 2018-09-12 01:36:06 +02:00
libnativeloader Add error_msg argument to CloseNativeLibrary 2018-09-12 01:36:06 +02:00
libnetutils Merge "Add OWNERS." am: 3289b9c928 2017-12-07 23:51:13 +00:00
libpackagelistparser Mark as recovery_available: true 2018-05-15 09:47:04 +09:00
libpixelflinger Move system/core/ off NO_ERROR. 2018-10-08 11:15:52 -07:00
libprocessgroup Merge "Add OWNERS for libprocessgroup" 2018-09-14 21:08:32 +00:00
libprocinfo Remove ashmem from system/core 2018-08-24 12:30:09 -07:00
libqtaguid Redirect qtaguid native call to netd fwmark client 2017-11-09 18:02:22 -08:00
libsparse Revert "libsparse: Add sparse typed callback" 2018-07-26 05:23:45 +00:00
libstats Make native metrics logger write to statsd socket 2018-10-18 10:39:40 -07:00
libsuspend Remove libsuspend from VNDK. 2018-08-14 13:39:55 -07:00
libsync Merge libsync_recovery rules into libsync. 2018-08-07 11:00:50 -07:00
libsystem Move system/core/ off NO_ERROR. 2018-10-08 11:15:52 -07:00
libsysutils Suppress implicit-fallthrough warning. 2018-10-10 14:39:02 -07:00
libunwindstack Fix which maps to search for globals. 2018-10-17 14:23:10 -07:00
libusbhost Merge "Remove urb request size maximum." am: 1cb765c867 am: 1ab6e9d018 2018-02-13 09:02:38 +00:00
libutils "utils/Errors.h": include <stdint.h> for int32_t. 2018-10-16 13:17:15 -07:00
libvndksupport bpfmt. 2018-02-16 17:58:14 -08:00
libziparchive Merge "Change ZipArchiveHandle from void* to ZipArchive*" 2018-10-15 23:23:29 +00:00
llkd llkd: Do not check apexd by default for stack 2018-10-15 09:17:40 -07:00
lmkd lmkd: increase the soft limit for keyboard 2018-10-16 18:58:01 +00:00
logcat Suppress implicit-fallthrough warnings. 2018-09-17 16:50:11 +00:00
logd logd: rework logic for LogTimeEntry 2018-10-12 18:28:59 -07:00
logwrapper Build adbd for recovery 2018-05-24 14:11:11 +09:00
mkbootimg Revert "Revert "mkbootimg: Build mkbootimg with Soong."" 2018-09-27 14:11:51 +00:00
property_service Add recovery_available: true to init dependencies 2018-07-24 13:45:50 -07:00
qemu_pipe Build adbd for recovery 2018-05-24 14:11:11 +09:00
reboot reboot: only pause indefinitely for non-shutdown operations 2017-09-29 16:29:52 +00:00
rootdir Start logd and service managers during the 'init' trigger 2018-10-17 14:21:37 -07:00
run-as run-as: Migrate to blueprint 2018-06-27 11:15:23 -07:00
sdcard Add support for esdfs mounting 2018-01-19 12:58:42 -08:00
shell_and_utilities Make unzip available. 2018-09-04 13:33:30 -07:00
storaged Move system/core/ off NO_ERROR. 2018-10-08 11:15:52 -07:00
toolbox getevent: O_RDWR -> O_RDONLY | O_CLOEXEC 2018-08-24 12:16:17 -07:00
trusty Add noexcept to move constructors and assignment operators. 2018-10-05 16:43:47 +00:00
usbd bpfmt. 2018-02-16 17:58:14 -08:00
watchdogd Move watchdogd out of init 2018-08-02 12:25:58 -07:00
.clang-format Add a 2 width option of clang format. 2017-03-10 13:01:39 -08:00
.clang-format-2 Remove PenaltyExcessCharacter from clang-formats. 2018-07-19 13:50:41 -07:00
.clang-format-4 Remove PenaltyExcessCharacter from clang-formats. 2018-07-19 13:50:41 -07:00
.gitignore Ignore adb/*.pyc files 2015-08-11 12:59:58 -07:00
Android.bp Export android_filesystem_config.h as a filegroup 2017-01-17 18:20:28 -08:00
Android.mk Remove the simulator target from all makefiles. 2011-07-11 22:12:32 -07:00
CleanSpec.mk Shared libs are supported in recovery mode 2018-06-10 08:32:24 +09:00
MODULE_LICENSE_APACHE2 auto import from //depot/cupcake/@135843 2013-07-30 13:56:49 -07:00
NOTICE Fix omission in NOTICE file. 2013-07-30 13:56:55 -07:00
OWNERS Move per-file OWNERS directives to their directories. 2018-06-06 11:49:40 +09:00
PREUPLOAD.cfg Add a PREUPLOAD.cfg file to run git-clang-format on every commit 2017-03-08 16:51:26 +08:00