* remote-mips.c (mips_initialize): Clear mips_initializing via
cleanup chain, not directly. * ser-unix.c (wait_for) [HAVE_TERMIO, HAVE_TERMIOS]: Make a timeout of -1 mean forever, like in the HAVE_SGTTY case. Warn if we are munging the timeout due to the limited range of c_cc[VTIME].
This commit is contained in:
parent
08f74b9271
commit
864df7e6f3
@ -1,5 +1,12 @@
|
||||
Sat Jan 22 08:30:42 1994 Jim Kingdon (kingdon@deneb.cygnus.com)
|
||||
|
||||
* remote-mips.c (mips_initialize): Clear mips_initializing via
|
||||
cleanup chain, not directly.
|
||||
|
||||
* ser-unix.c (wait_for) [HAVE_TERMIO, HAVE_TERMIOS]: Make a timeout
|
||||
of -1 mean forever, like in the HAVE_SGTTY case. Warn if we are
|
||||
munging the timeout due to the limited range of c_cc[VTIME].
|
||||
|
||||
* fork-child.c, inferior.h (fork_inferior): New argument shell_file.
|
||||
* procfs.c (procfs_create_inferior), inftarg.c (child_create_inferior),
|
||||
m3-nat.c (m3_create_inferior): Pass it.
|
||||
|
@ -888,6 +888,13 @@ mips_request (cmd, addr, data, perr, timeout)
|
||||
return rresponse;
|
||||
}
|
||||
|
||||
static void
|
||||
mips_initialize_cleanups (arg)
|
||||
PTR arg;
|
||||
{
|
||||
mips_initializing = 0;
|
||||
}
|
||||
|
||||
/* Initialize a new connection to the MIPS board, and make sure we are
|
||||
really connected. */
|
||||
|
||||
@ -897,9 +904,16 @@ mips_initialize ()
|
||||
char cr;
|
||||
char buff[DATA_MAXLEN + 1];
|
||||
int err;
|
||||
struct cleanup *old_cleanups = make_cleanup (mips_initialize_cleanups, NULL);
|
||||
|
||||
/* What is this code doing here? I don't see any way it can happen, and
|
||||
it might mean mips_initializing didn't get cleared properly.
|
||||
So I'll make it a warning. */
|
||||
if (mips_initializing)
|
||||
return;
|
||||
{
|
||||
warning ("internal error: mips_initialize called twice");
|
||||
return;
|
||||
}
|
||||
|
||||
mips_initializing = 1;
|
||||
|
||||
@ -929,7 +943,7 @@ mips_initialize ()
|
||||
}
|
||||
mips_receive_packet (buff, 1, 3);
|
||||
|
||||
mips_initializing = 0;
|
||||
do_cleanups (old_cleanups);
|
||||
|
||||
/* If this doesn't call error, we have connected; we don't care if
|
||||
the request itself succeeds or fails. */
|
||||
|
@ -435,11 +435,41 @@ wait_for(scb, timeout)
|
||||
fprintf_unfiltered(gdb_stderr, "get_tty_state failed: %s\n", safe_strerror(errno));
|
||||
|
||||
#ifdef HAVE_TERMIOS
|
||||
state.termios.c_cc[VTIME] = timeout * 10;
|
||||
if (timeout < 0)
|
||||
{
|
||||
/* No timeout. */
|
||||
state.termios.c_cc[VTIME] = 0;
|
||||
state.termios.c_cc[VMIN] = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
state.termios.c_cc[VMIN] = 0;
|
||||
state.termios.c_cc[VTIME] = timeout * 10;
|
||||
if (state.termios.c_cc[VTIME] != timeout * 10)
|
||||
{
|
||||
warning ("Timeout value %d too large, using %d", timeout,
|
||||
state.termios.c_cc[VTIME] / 10);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_TERMIO
|
||||
state.termio.c_cc[VTIME] = timeout * 10;
|
||||
if (timeout < 0)
|
||||
{
|
||||
/* No timeout. */
|
||||
state.termio.c_cc[VTIME] = 0;
|
||||
state.termio.c_cc[VMIN] = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
state.termio.c_cc[VMIN] = 0;
|
||||
state.termio.c_cc[VTIME] = timeout * 10;
|
||||
if (state.termio.c_cc[VTIME] != timeout * 10)
|
||||
{
|
||||
warning ("Timeout value %d too large, using %d", timeout,
|
||||
state.termio.c_cc[VTIME] / 10);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
scb->current_timeout = timeout;
|
||||
|
Loading…
Reference in New Issue
Block a user