summaryrefslogtreecommitdiffstats
path: root/adb
diff options
context:
space:
mode:
authorKenny Root <kroot@google.com>2012-10-12 23:59:22 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2012-10-12 23:59:22 -0700
commit1dc92bacb8cbf052438e0b1af4030a57901d6e94 (patch)
treeb494f7845abb05194f43aa93d61a74df39a4dbff /adb
parent657cd83899355c7f488dcd3294a523ec120f840f (diff)
parent207c17ff1f48d0db3c69628bb036a14db40b5887 (diff)
downloadsystem_core-1dc92bacb8cbf052438e0b1af4030a57901d6e94.zip
system_core-1dc92bacb8cbf052438e0b1af4030a57901d6e94.tar.gz
system_core-1dc92bacb8cbf052438e0b1af4030a57901d6e94.tar.bz2
am 207c17ff: Merge "Make adb robust against EINTR"
* commit '207c17ff1f48d0db3c69628bb036a14db40b5887': Make adb robust against EINTR
Diffstat (limited to 'adb')
-rw-r--r--adb/services.c2
-rw-r--r--adb/sysdeps.h17
2 files changed, 10 insertions, 9 deletions
diff --git a/adb/services.c b/adb/services.c
index 495a083..54d21a8 100644
--- a/adb/services.c
+++ b/adb/services.c
@@ -202,7 +202,7 @@ static void echo_service(int fd, void *cookie)
int c;
for(;;) {
- r = read(fd, buf, 4096);
+ r = adb_read(fd, buf, 4096);
if(r == 0) goto done;
if(r < 0) {
if(errno == EINTR) continue;
diff --git a/adb/sysdeps.h b/adb/sysdeps.h
index 66b60cc..ee7cd49 100644
--- a/adb/sysdeps.h
+++ b/adb/sysdeps.h
@@ -275,6 +275,7 @@ extern char* adb_strtok_r(char *str, const char *delim, char **saveptr);
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <string.h>
+#include <unistd.h>
#define OS_PATH_SEPARATOR '/'
#define OS_PATH_SEPARATOR_STR "/"
@@ -310,7 +311,7 @@ static __inline__ int unix_open(const char* path, int options,...)
{
if ((options & O_CREAT) == 0)
{
- return open(path, options);
+ return TEMP_FAILURE_RETRY( open(path, options) );
}
else
{
@@ -319,19 +320,19 @@ static __inline__ int unix_open(const char* path, int options,...)
va_start( args, options );
mode = va_arg( args, int );
va_end( args );
- return open(path, options, mode);
+ return TEMP_FAILURE_RETRY( open( path, options, mode ) );
}
}
static __inline__ int adb_open_mode( const char* pathname, int options, int mode )
{
- return open( pathname, options, mode );
+ return TEMP_FAILURE_RETRY( open( pathname, options, mode ) );
}
static __inline__ int adb_open( const char* pathname, int options )
{
- int fd = open( pathname, options );
+ int fd = TEMP_FAILURE_RETRY( open( pathname, options ) );
if (fd < 0)
return -1;
close_on_exec( fd );
@@ -357,7 +358,7 @@ static __inline__ int adb_close(int fd)
static __inline__ int adb_read(int fd, void* buf, size_t len)
{
- return read(fd, buf, len);
+ return TEMP_FAILURE_RETRY( read( fd, buf, len ) );
}
#undef read
@@ -365,7 +366,7 @@ static __inline__ int adb_read(int fd, void* buf, size_t len)
static __inline__ int adb_write(int fd, const void* buf, size_t len)
{
- return write(fd, buf, len);
+ return TEMP_FAILURE_RETRY( write( fd, buf, len ) );
}
#undef write
#define write ___xxx_write
@@ -386,7 +387,7 @@ static __inline__ int adb_unlink(const char* path)
static __inline__ int adb_creat(const char* path, int mode)
{
- int fd = creat(path, mode);
+ int fd = TEMP_FAILURE_RETRY( creat( path, mode ) );
if ( fd < 0 )
return -1;
@@ -401,7 +402,7 @@ static __inline__ int adb_socket_accept(int serverfd, struct sockaddr* addr,
{
int fd;
- fd = accept(serverfd, addr, addrlen);
+ fd = TEMP_FAILURE_RETRY( accept( serverfd, addr, addrlen ) );
if (fd >= 0)
close_on_exec(fd);