gdb_server: refactor and unify function gdb_get_char_inner
The old implementation of gdb socket error handling in the gdb_get_char_inner() differs between Windows and *nix platforms. This patch simplifies it by using an existing function log_socket_error() which handles most of the platform specific things. It also provides better error messages. Change-Id: Iec871c4965b116dc7cfb03c3565bab66c8b41958 Signed-off-by: Marek Vrbka <marek.vrbka@codasip.com> Reviewed-on: https://review.openocd.org/c/openocd/+/7724 Tested-by: jenkins Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
This commit is contained in:
parent
0854c83076
commit
71180e6753
|
@ -235,39 +235,20 @@ static int gdb_get_char_inner(struct connection *connection, int *next_char)
|
|||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
errno = WSAGetLastError();
|
||||
|
||||
switch (errno) {
|
||||
case WSAEWOULDBLOCK:
|
||||
usleep(1000);
|
||||
break;
|
||||
case WSAECONNABORTED:
|
||||
gdb_con->closed = true;
|
||||
return ERROR_SERVER_REMOTE_CLOSED;
|
||||
case WSAECONNRESET:
|
||||
gdb_con->closed = true;
|
||||
return ERROR_SERVER_REMOTE_CLOSED;
|
||||
default:
|
||||
LOG_ERROR("read: %d", errno);
|
||||
exit(-1);
|
||||
}
|
||||
bool retry = (WSAGetLastError() == WSAEWOULDBLOCK);
|
||||
#else
|
||||
switch (errno) {
|
||||
case EAGAIN:
|
||||
usleep(1000);
|
||||
break;
|
||||
case ECONNABORTED:
|
||||
gdb_con->closed = true;
|
||||
return ERROR_SERVER_REMOTE_CLOSED;
|
||||
case ECONNRESET:
|
||||
gdb_con->closed = true;
|
||||
return ERROR_SERVER_REMOTE_CLOSED;
|
||||
default:
|
||||
LOG_ERROR("read: %s", strerror(errno));
|
||||
gdb_con->closed = true;
|
||||
return ERROR_SERVER_REMOTE_CLOSED;
|
||||
}
|
||||
bool retry = (errno == EAGAIN);
|
||||
#endif
|
||||
|
||||
if (retry) {
|
||||
// Try again after a delay
|
||||
usleep(1000);
|
||||
} else {
|
||||
// Print error and close the socket
|
||||
log_socket_error("GDB");
|
||||
gdb_con->closed = true;
|
||||
return ERROR_SERVER_REMOTE_CLOSED;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef _DEBUG_GDB_IO_
|
||||
|
|
Loading…
Reference in New Issue