[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH-for-5.0] gdbstub: Do not use memset() on GByteArray
From: |
Peter Maydell |
Subject: |
Re: [PATCH-for-5.0] gdbstub: Do not use memset() on GByteArray |
Date: |
Tue, 14 Apr 2020 11:52:41 +0100 |
On Tue, 14 Apr 2020 at 11:24, Philippe Mathieu-Daudé <address@hidden> wrote:
>
> Introduce gdb_get_zeroes() to fill a GByteArray with zeroes.
>
> Fixes: a010bdbe719 ("extend GByteArray to read register helpers")
> Signed-off-by: Philippe Mathieu-Daudé <address@hidden>
> ---
> include/exec/gdbstub.h | 9 +++++++++
> target/arm/gdbstub.c | 3 +--
> target/xtensa/gdbstub.c | 6 ++----
> 3 files changed, 12 insertions(+), 6 deletions(-)
>
> diff --git a/include/exec/gdbstub.h b/include/exec/gdbstub.h
> index 30b909ebd2..b52d9933ee 100644
> --- a/include/exec/gdbstub.h
> +++ b/include/exec/gdbstub.h
> @@ -125,6 +125,15 @@ static inline int gdb_get_reg128(GByteArray *buf,
> uint64_t val_hi,
> return 16;
> }
>
> +static inline int gdb_get_zeroes(GByteArray *array, size_t len)
> +{
> + for (size_t i = 0; i < len; i++) {
> + gdb_get_reg8(array, '\0');
> + }
> +
> + return len;
> +}
The other implementation option here would be
guint oldlen = array->len;
g_byte_array_set_size(array, oldlen + len);
memset(array->data + oldlen, 0, len);
For length values < 16 my guess is the perf difference is
not going to be noticeable though.
thanks
-- PMM