Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Mike Frysinger <vapier@gentoo.org>
To: gdb-patches@sourceware.org
Subject: [PATCH] sim: dv-sockser: add a write buffer variant
Date: Tue, 16 Nov 2010 02:45:00 -0000	[thread overview]
Message-ID: <1289875473-11392-1-git-send-email-vapier@gentoo.org> (raw)

Rather than having to bang out chunks of data one byte at a time over
the socket interface, add a write variant that accepts an arbitrarily
long buffer.  This speeds things up considerably when we have many
chars to send out at once.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>

2010-11-16  Mike Frysinger  <vapier@gentoo.org>

	* dv-sockser.c (dv_sockser_write_buffer): New function.
	(dv_sockser_write): Rewrite to use dv_sockser_write_buffer.
	* dv-sockser.h (dv_sockser_write_buffer): New prototype.
---
 sim/common/dv-sockser.c |   15 +++++++++++----
 sim/common/dv-sockser.h |    1 +
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/sim/common/dv-sockser.c b/sim/common/dv-sockser.c
index 640f869..647237d 100644
--- a/sim/common/dv-sockser.c
+++ b/sim/common/dv-sockser.c
@@ -347,13 +347,14 @@ dv_sockser_status (SIM_DESC sd)
 }
 
 int
-dv_sockser_write (SIM_DESC sd, unsigned char c)
+dv_sockser_write_buffer (SIM_DESC sd, const unsigned char *buffer,
+			 unsigned nr_bytes)
 {
   int n;
 
   if (! connected_p (sd))
     return -1;
-  n = write (sockser_fd, &c, 1);
+  n = write (sockser_fd, buffer, nr_bytes);
   if (n == -1)
     {
       if (errno == EPIPE)
@@ -363,9 +364,15 @@ dv_sockser_write (SIM_DESC sd, unsigned char c)
 	}
       return -1;
     }
-  if (n != 1)
+  if (n != nr_bytes)
     return -1;
-  return 1;
+  return nr_bytes;
+}
+
+int
+dv_sockser_write (SIM_DESC sd, unsigned char c)
+{
+  return dv_sockser_write_buffer (sd, &c, 1);
 }
 
 int
diff --git a/sim/common/dv-sockser.h b/sim/common/dv-sockser.h
index 209cf46..0ad071a 100644
--- a/sim/common/dv-sockser.h
+++ b/sim/common/dv-sockser.h
@@ -27,6 +27,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* FIXME: later add a device ptr arg */
 extern int dv_sockser_status (SIM_DESC);
 int dv_sockser_write (SIM_DESC, unsigned char);
+int dv_sockser_write_buffer (SIM_DESC, const unsigned char *, unsigned);
 int dv_sockser_read (SIM_DESC);
 
 #endif /* DV_SOCKSER_H */
-- 
1.7.3.1


             reply	other threads:[~2010-11-16  2:45 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-11-16  2:45 Mike Frysinger [this message]
2010-11-16 16:08 ` Frank Ch. Eigler
2010-11-16 19:12   ` Mike Frysinger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1289875473-11392-1-git-send-email-vapier@gentoo.org \
    --to=vapier@gentoo.org \
    --cc=gdb-patches@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox