From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5279 invoked by alias); 16 Nov 2010 02:45:43 -0000 Received: (qmail 5271 invoked by uid 22791); 16 Nov 2010 02:45:42 -0000 X-SWARE-Spam-Status: No, hits=-2.0 required=5.0 tests=AWL,BAYES_00,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from smtp.gentoo.org (HELO smtp.gentoo.org) (140.211.166.183) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 16 Nov 2010 02:45:37 +0000 Received: from localhost.localdomain (localhost [127.0.0.1]) by smtp.gentoo.org (Postfix) with ESMTP id D881E1B41E3 for ; Tue, 16 Nov 2010 02:45:35 +0000 (UTC) From: Mike Frysinger To: gdb-patches@sourceware.org Subject: [PATCH] sim: dv-sockser: add a write buffer variant Date: Tue, 16 Nov 2010 02:45:00 -0000 Message-Id: <1289875473-11392-1-git-send-email-vapier@gentoo.org> X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2010-11/txt/msg00188.txt.bz2 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 2010-11-16 Mike Frysinger * 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 . */ /* 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