summaryrefslogtreecommitdiffstats
path: root/tests/libqos/libqos.c
diff options
context:
space:
mode:
authorJohn Snow2015-09-17 20:17:04 +0200
committerJohn Snow2015-09-18 16:58:56 +0200
commitab4f705751c39d59e5039a145cf4703320e4207e (patch)
treed8de5b6b2fb5b1e629c06d20976e96e574f31d17 /tests/libqos/libqos.c
parentqtest/ahci: use generate_pattern everywhere (diff)
downloadqemu-ab4f705751c39d59e5039a145cf4703320e4207e.tar.gz
qemu-ab4f705751c39d59e5039a145cf4703320e4207e.tar.xz
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;
+ }
+ }
+}