summary refs log tree commit diff stats
path: root/tests/libqos/libqos.c
diff options
context:
space:
mode:
authorJohn Snow <jsnow@redhat.com>2015-09-17 14:17:04 -0400
committerJohn Snow <jsnow@redhat.com>2015-09-18 10:58:56 -0400
commitab4f705751c39d59e5039a145cf4703320e4207e (patch)
treed8de5b6b2fb5b1e629c06d20976e96e574f31d17 /tests/libqos/libqos.c
parentd7531638db73396c9e89ade086bbeab6023656f9 (diff)
downloadfocaccia-qemu-ab4f705751c39d59e5039a145cf4703320e4207e.tar.gz
focaccia-qemu-ab4f705751c39d59e5039a145cf4703320e4207e.zip
qtest/ahci: export generate_pattern
Share the pattern function for ide and ahci test.

Signed-off-by: John Snow <jsnow@redhat.com>
Message-id: 1441926555-19471-3-git-send-email-jsnow@redhat.com
Diffstat (limited to 'tests/libqos/libqos.c')
-rw-r--r--tests/libqos/libqos.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/libqos/libqos.c b/tests/libqos/libqos.c
index fce625b18a..8d7c5a9db8 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];
+            *sx = i;
+        }
+    }
+}