[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 2/4] qtest/ahci: export generate_pattern
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH 2/4] qtest/ahci: export generate_pattern |
Date: |
Thu, 10 Sep 2015 11:18:53 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
John Snow <address@hidden> writes:
> Share the pattern function for ide and ahci test.
>
> Signed-off-by: John Snow <address@hidden>
> ---
> tests/ahci-test.c | 26 --------------------------
> tests/libqos/libqos.c | 26 ++++++++++++++++++++++++++
> tests/libqos/libqos.h | 1 +
> 3 files changed, 27 insertions(+), 26 deletions(-)
>
> diff --git a/tests/ahci-test.c b/tests/ahci-test.c
> index b1a785c..59d387c 100644
> --- a/tests/ahci-test.c
> +++ b/tests/ahci-test.c
> @@ -71,32 +71,6 @@ static void string_bswap16(uint16_t *s, size_t bytes)
> }
> }
>
> -static void generate_pattern(void *buffer, size_t len, size_t cycle_len)
> -{
> - int i, j;
> - unsigned char *tx = (unsigned char *)buffer;
> - unsigned char p;
> - size_t *sx;
> -
> - /* Write an indicative pattern that varies and is unique per-cycle */
> - p = rand() % 256;
> - for (i = 0; i < len; i++) {
> - tx[i] = p++ % 256;
> - if (i % cycle_len == 0) {
> - p = rand() % 256;
> - }
> - }
> -
> - /* force uniqueness by writing an id per-cycle */
> - for (i = 0; i < len / cycle_len; i++) {
> - j = i * cycle_len;
> - if (j + sizeof(*sx) <= len) {
> - sx = (size_t *)&tx[j];
> - *sx = i;
> - }
> - }
> -}
> -
> /**
> * Verify that the transfer did not corrupt our state at all.
> */
> diff --git a/tests/libqos/libqos.c b/tests/libqos/libqos.c
> index fce625b..8d7c5a9 100644
> --- a/tests/libqos/libqos.c
> +++ b/tests/libqos/libqos.c
> @@ -212,3 +212,29 @@ void prepare_blkdebug_script(const char *debug_fn, const
> char *event)
> ret = fclose(debug_file);
> g_assert(ret == 0);
> }
> +
> +void generate_pattern(void *buffer, size_t len, size_t cycle_len)
> +{
> + int i, j;
> + unsigned char *tx = (unsigned char *)buffer;
> + unsigned char p;
> + size_t *sx;
> +
> + /* Write an indicative pattern that varies and is unique per-cycle */
> + p = rand() % 256;
> + for (i = 0; i < len; i++) {
> + tx[i] = p++ % 256;
> + if (i % cycle_len == 0) {
> + p = rand() % 256;
> + }
> + }
> +
> + /* force uniqueness by writing an id per-cycle */
> + for (i = 0; i < len / cycle_len; i++) {
> + j = i * cycle_len;
> + if (j + sizeof(*sx) <= len) {
> + sx = (size_t *)&tx[j];
Relies on cycle_len being a multiple of size_t's alignment. So far,
it's always AHCI_SECTOR_SIZE, which should do.
> + *sx = i;
> + }
> + }
> +}
Looks like overkill to me, but since it's working code... :)
> diff --git a/tests/libqos/libqos.h b/tests/libqos/libqos.h
> index e1f14ea..492a651 100644
> --- a/tests/libqos/libqos.h
> +++ b/tests/libqos/libqos.h
> @@ -24,6 +24,7 @@ void mkqcow2(const char *file, unsigned size_mb);
> void set_context(QOSState *s);
> void migrate(QOSState *from, QOSState *to, const char *uri);
> void prepare_blkdebug_script(const char *debug_fn, const char *event);
> +void generate_pattern(void *buffer, size_t len, size_t cycle_len);
>
> static inline uint64_t qmalloc(QOSState *q, size_t bytes)
> {
- Re: [Qemu-devel] [PATCH 2/4] qtest/ahci: export generate_pattern,
Markus Armbruster <=