This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFA] new tcp_open


On Tuesday 18 December 2001 02:40 am, Orjan Friberg wrote:
> "Martin M. Hunt" wrote:
> > Problem:  Using "target remote" to open a tcp connection to a target
> > board doesn't timeout properly if the target isn't running or you mistype
> > the name or port number. The tcp_open function tries to connect 15 times,
> > each of which can take a couple of minutes to timeout.  You can't
> > interrupt the connect from the GUI, which is not updated, or from the
> > command line with a ^C.
> >
> > I propose replacing tcp_open with a new function that does a non-blocking
> > connect with a maximum timeout of 15 seconds.  This is easily
> > interruptable by typing ^C or clicking on the stop button. I have tested
> > this with Linux, Solaris, and Cygwin.
>
> In my setup, this patch makes the testsuite run an order of a magnitude
> slower (I downgraded only this file from an otherwise updated tree, and
> it fixes the problem).  My target board runs an unsubmitted port (for
> various reasons) of the gdbserver on a Linux 2.4.14 kernel, and my host
> is a Linux 2.2.19.  I don't see any recent gdbserver changes that should
> be related to this change.  Anyone else seeing this slowdown?

Please give this patch a try and see if it fixes the problem.

Index: ser-tcp.c
===================================================================
RCS file: /cvs/src/src/gdb/ser-tcp.c,v
retrieving revision 1.9
diff -u -p -r1.9 ser-tcp.c
--- ser-tcp.c   2001/12/07 17:57:05     1.9
+++ ser-tcp.c   2001/12/18 10:54:31
@@ -165,6 +165,10 @@ tcp_open (struct serial *scb, const char
   tmp = 0;
   ioctl (scb->fd, FIONBIO, &tmp);

+  tmp = 1;
+  setsockopt (scb->fd, IPPROTO_TCP, TCP_NODELAY,
+             (char *)&tmp, sizeof (tmp));
+
   /* If we don't do this, then GDB simply exits
      when the remote side dies.  */
   signal (SIGPIPE, SIG_IGN);

-- 
Martin Hunt
GDB Engineer
Red Hat, Inc.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]