Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 505bd6e5 authored by Mike Lockwood's avatar Mike Lockwood
Browse files

adb: Add five second timeout for USB writes on Linux host.



This helps us recover when things go wrong during automated testing.

Change-Id: I006dbfaff7f70d51398ff12fbddcaee751453b78
Signed-off-by: default avatarMike Lockwood <lockwood@android.com>
parent 805c4a70
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -33,7 +33,7 @@
#define ADB_VERSION_MAJOR 1         // Used for help/version information
#define ADB_VERSION_MINOR 0         // Used for help/version information

#define ADB_SERVER_VERSION    25    // Increment this when we want to force users to start a new adb server
#define ADB_SERVER_VERSION    26    // Increment this when we want to force users to start a new adb server

typedef struct amessage amessage;
typedef struct apacket apacket;
+9 −2
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@

#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/time.h>
#include <dirent.h>
#include <fcntl.h>
#include <errno.h>
@@ -287,6 +288,8 @@ static int usb_bulk_write(usb_handle *h, const void *data, int len)
{
    struct usbdevfs_urb *urb = &h->urb_out;
    int res;
    struct timeval tv;
    struct timespec ts;

    memset(urb, 0, sizeof(*urb));
    urb->type = USBDEVFS_URB_TYPE_BULK;
@@ -313,8 +316,12 @@ static int usb_bulk_write(usb_handle *h, const void *data, int len)
    res = -1;
    h->urb_out_busy = 1;
    for(;;) {
        adb_cond_wait(&h->notify, &h->lock);
        if(h->dead) {
        /* time out after five seconds */
        gettimeofday(&tv, NULL);
        ts.tv_sec = tv.tv_sec + 5;
        ts.tv_nsec = tv.tv_usec * 1000L;
        res = pthread_cond_timedwait(&h->notify, &h->lock, &ts);
        if(res < 0 || h->dead) {
            break;
        }
        if(h->urb_out_busy == 0) {