2022-12-27 02:29:18

by Shunsuke Mie

[permalink] [raw]
Subject: [RFC PATCH 5/9] tools/virtio: convert to use new unified vringh APIs

vringh_*_user APIs is being removed without vringh_init_user(). so change
to use new APIs.

Signed-off-by: Shunsuke Mie <[email protected]>
---
tools/virtio/vringh_test.c | 89 +++++++++++++++++++-------------------
1 file changed, 44 insertions(+), 45 deletions(-)

diff --git a/tools/virtio/vringh_test.c b/tools/virtio/vringh_test.c
index 6c9533b8a2ca..068c6d5aa4fd 100644
--- a/tools/virtio/vringh_test.c
+++ b/tools/virtio/vringh_test.c
@@ -187,7 +187,7 @@ static int parallel_test(u64 features,

vring_init(&vrh.vring, RINGSIZE, host_map, ALIGN);
vringh_init_user(&vrh, features, RINGSIZE, true,
- vrh.vring.desc, vrh.vring.avail, vrh.vring.used);
+ vrh.vring.desc, vrh.vring.avail, vrh.vring.used, getrange);
CPU_SET(first_cpu, &cpu_set);
if (sched_setaffinity(getpid(), sizeof(cpu_set), &cpu_set))
errx(1, "Could not set affinity to cpu %u", first_cpu);
@@ -202,9 +202,9 @@ static int parallel_test(u64 features,
err = vringh_get_head(&vrh, &head);
if (err != 0)
break;
- err = vringh_need_notify_user(&vrh);
+ err = vringh_need_notify(&vrh);
if (err < 0)
- errx(1, "vringh_need_notify_user: %i",
+ errx(1, "vringh_need_notify: %i",
err);
if (err) {
write(to_guest[1], "", 1);
@@ -223,46 +223,45 @@ static int parallel_test(u64 features,
host_wiov,
ARRAY_SIZE(host_wiov));

- err = vringh_getdesc_user(&vrh, &riov, &wiov,
- getrange, &head);
+ err = vringh_getdesc(&vrh, &riov, &wiov, &head);
}
if (err == 0) {
- err = vringh_need_notify_user(&vrh);
+ err = vringh_need_notify(&vrh);
if (err < 0)
- errx(1, "vringh_need_notify_user: %i",
+ errx(1, "vringh_need_notify: %i",
err);
if (err) {
write(to_guest[1], "", 1);
notifies++;
}

- if (!vringh_notify_enable_user(&vrh))
+ if (!vringh_notify_enable(&vrh))
continue;

/* Swallow all notifies at once. */
if (read(to_host[0], buf, sizeof(buf)) < 1)
break;

- vringh_notify_disable_user(&vrh);
+ vringh_notify_disable(&vrh);
receives++;
continue;
}
if (err != 1)
- errx(1, "vringh_getdesc_user: %i", err);
+ errx(1, "vringh_getdesc: %i", err);

/* We simply copy bytes. */
if (riov.used) {
- rlen = vringh_iov_pull_user(&riov, rbuf,
+ rlen = vringh_iov_pull(&vrh, &riov, rbuf,
sizeof(rbuf));
if (rlen != 4)
- errx(1, "vringh_iov_pull_user: %i",
+ errx(1, "vringh_iov_pull: %i",
rlen);
assert(riov.i == riov.used);
written = 0;
} else {
- err = vringh_iov_push_user(&wiov, rbuf, rlen);
+ err = vringh_iov_push(&vrh, &wiov, rbuf, rlen);
if (err != rlen)
- errx(1, "vringh_iov_push_user: %i",
+ errx(1, "vringh_iov_push: %i",
err);
assert(wiov.i == wiov.used);
written = err;
@@ -270,14 +269,14 @@ static int parallel_test(u64 features,
complete:
xfers++;

- err = vringh_complete_user(&vrh, head, written);
+ err = vringh_complete(&vrh, head, written);
if (err != 0)
- errx(1, "vringh_complete_user: %i", err);
+ errx(1, "vringh_complete: %i", err);
}

- err = vringh_need_notify_user(&vrh);
+ err = vringh_need_notify(&vrh);
if (err < 0)
- errx(1, "vringh_need_notify_user: %i", err);
+ errx(1, "vringh_need_notify: %i", err);
if (err) {
write(to_guest[1], "", 1);
notifies++;
@@ -493,12 +492,12 @@ int main(int argc, char *argv[])
/* Set up host side. */
vring_init(&vrh.vring, RINGSIZE, __user_addr_min, ALIGN);
vringh_init_user(&vrh, vdev.features, RINGSIZE, true,
- vrh.vring.desc, vrh.vring.avail, vrh.vring.used);
+ vrh.vring.desc, vrh.vring.avail, vrh.vring.used, getrange);

/* No descriptor to get yet... */
- err = vringh_getdesc_user(&vrh, &riov, &wiov, getrange, &head);
+ err = vringh_getdesc(&vrh, &riov, &wiov, &head);
if (err != 0)
- errx(1, "vringh_getdesc_user: %i", err);
+ errx(1, "vringh_getdesc: %i", err);

/* Guest puts in a descriptor. */
memcpy(__user_addr_max - 1, "a", 1);
@@ -520,9 +519,9 @@ int main(int argc, char *argv[])
vringh_kiov_init(&riov, host_riov, ARRAY_SIZE(host_riov));
vringh_kiov_init(&wiov, host_wiov, ARRAY_SIZE(host_wiov));

- err = vringh_getdesc_user(&vrh, &riov, &wiov, getrange, &head);
+ err = vringh_getdesc(&vrh, &riov, &wiov, &head);
if (err != 1)
- errx(1, "vringh_getdesc_user: %i", err);
+ errx(1, "vringh_getdesc: %i", err);

assert(riov.used == 1);
assert(riov.iov[0].iov_base == __user_addr_max - 1);
@@ -539,25 +538,25 @@ int main(int argc, char *argv[])
assert(wiov.iov[1].iov_len == 1);
}

- err = vringh_iov_pull_user(&riov, buf, 5);
+ err = vringh_iov_pull(&vrh, &riov, buf, 5);
if (err != 1)
- errx(1, "vringh_iov_pull_user: %i", err);
+ errx(1, "vringh_iov_pull: %i", err);
assert(buf[0] == 'a');
assert(riov.i == 1);
- assert(vringh_iov_pull_user(&riov, buf, 5) == 0);
+ assert(vringh_iov_pull(&vrh, &riov, buf, 5) == 0);

memcpy(buf, "bcdef", 5);
- err = vringh_iov_push_user(&wiov, buf, 5);
+ err = vringh_iov_push(&vrh, &wiov, buf, 5);
if (err != 2)
- errx(1, "vringh_iov_push_user: %i", err);
+ errx(1, "vringh_iov_push: %i", err);
assert(memcmp(__user_addr_max - 3, "bc", 2) == 0);
assert(wiov.i == wiov.used);
- assert(vringh_iov_push_user(&wiov, buf, 5) == 0);
+ assert(vringh_iov_push(&vrh, &wiov, buf, 5) == 0);

/* Host is done. */
- err = vringh_complete_user(&vrh, head, err);
+ err = vringh_complete(&vrh, head, err);
if (err != 0)
- errx(1, "vringh_complete_user: %i", err);
+ errx(1, "vringh_complete: %i", err);

/* Guest should see used token now. */
__kfree_ignore_start = __user_addr_min + vring_size(RINGSIZE, ALIGN);
@@ -589,9 +588,9 @@ int main(int argc, char *argv[])
vringh_kiov_init(&riov, host_riov, ARRAY_SIZE(host_riov));
vringh_kiov_init(&wiov, host_wiov, ARRAY_SIZE(host_wiov));

- err = vringh_getdesc_user(&vrh, &riov, &wiov, getrange, &head);
+ err = vringh_getdesc(&vrh, &riov, &wiov, &head);
if (err != 1)
- errx(1, "vringh_getdesc_user: %i", err);
+ errx(1, "vringh_getdesc: %i", err);

assert(riov.max_num & VRINGH_IOV_ALLOCATED);
assert(riov.iov != host_riov);
@@ -605,9 +604,9 @@ int main(int argc, char *argv[])

/* Pull data back out (in odd chunks), should be as expected. */
for (i = 0; i < RINGSIZE * USER_MEM/4; i += 3) {
- err = vringh_iov_pull_user(&riov, buf, 3);
+ err = vringh_iov_pull(&vrh, &riov, buf, 3);
if (err != 3 && i + err != RINGSIZE * USER_MEM/4)
- errx(1, "vringh_iov_pull_user large: %i", err);
+ errx(1, "vringh_iov_pulllarge: %i", err);
assert(buf[0] == (char)i);
assert(err < 2 || buf[1] == (char)(i + 1));
assert(err < 3 || buf[2] == (char)(i + 2));
@@ -619,9 +618,9 @@ int main(int argc, char *argv[])
/* Complete using multi interface, just because we can. */
used[0].id = head;
used[0].len = 0;
- err = vringh_complete_multi_user(&vrh, used, 1);
+ err = vringh_complete_multi(&vrh, used, 1);
if (err)
- errx(1, "vringh_complete_multi_user(1): %i", err);
+ errx(1, "vringh_complete_multi(1): %i", err);

/* Free up those descriptors. */
ret = virtqueue_get_buf(vq, &i);
@@ -642,17 +641,17 @@ int main(int argc, char *argv[])
vringh_kiov_init(&wiov, host_wiov, ARRAY_SIZE(host_wiov));

for (i = 0; i < RINGSIZE; i++) {
- err = vringh_getdesc_user(&vrh, &riov, &wiov, getrange, &head);
+ err = vringh_getdesc(&vrh, &riov, &wiov, &head);
if (err != 1)
- errx(1, "vringh_getdesc_user: %i", err);
+ errx(1, "vringh_getdesc: %i", err);
used[i].id = head;
used[i].len = 0;
}
/* Make sure it wraps around ring, to test! */
assert(vrh.vring.used->idx % RINGSIZE != 0);
- err = vringh_complete_multi_user(&vrh, used, RINGSIZE);
+ err = vringh_complete_multi(&vrh, used, RINGSIZE);
if (err)
- errx(1, "vringh_complete_multi_user: %i", err);
+ errx(1, "vringh_complete_multi: %i", err);

/* Free those buffers. */
for (i = 0; i < RINGSIZE; i++) {
@@ -726,19 +725,19 @@ int main(int argc, char *argv[])
vringh_kiov_init(&riov, host_riov, ARRAY_SIZE(host_riov));
vringh_kiov_init(&wiov, host_wiov, ARRAY_SIZE(host_wiov));

- err = vringh_getdesc_user(&vrh, &riov, &wiov, getrange, &head);
+ err = vringh_getdesc(&vrh, &riov, &wiov, &head);
if (err != 1)
- errx(1, "vringh_getdesc_user: %i", err);
+ errx(1, "vringh_getdesc: %i", err);

if (head != 0)
- errx(1, "vringh_getdesc_user: head %i not 0", head);
+ errx(1, "vringh_getdesc: head %i not 0", head);

assert(riov.max_num & VRINGH_IOV_ALLOCATED);
if (getrange != getrange_slow)
assert(riov.used == 7);
else
assert(riov.used == 28);
- err = vringh_iov_pull_user(&riov, buf, 29);
+ err = vringh_iov_pull(&vrh, &riov, buf, 29);
assert(err == 28);

/* Data should be linear. */
--
2.25.1