From 2c7e88199ea4f7e8a9486c1c76ecaeababad4d49 Mon Sep 17 00:00:00 2001 From: Dmitry Torokhov Date: Thu, 17 Jan 2019 16:20:33 -0800 Subject: plugin: allow retrieving and setting VM clock Add crossvm plugin API to allow reading and setting guest clock. BUG=b:122878975 TEST=cargo test -p kvm; cargo test --features=plugin Change-Id: I3fd656c06b0e7e43ac88a337ac5d0caec8c59dba Signed-off-by: Dmitry Torokhov Reviewed-on: https://chromium-review.googlesource.com/1419373 Tested-by: kokoro Reviewed-by: Zach Reizner --- tests/plugin_vm_state.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'tests') diff --git a/tests/plugin_vm_state.c b/tests/plugin_vm_state.c index 6026e29..450d324 100644 --- a/tests/plugin_vm_state.c +++ b/tests/plugin_vm_state.c @@ -115,5 +115,33 @@ int main(int argc, char** argv) { return 1; } + // Test retrieving and setting clock state. + struct kvm_clock_data clock_data = { .clock = 0, .flags = -1U, }; + ret = crosvm_get_clock(crosvm, &clock_data); + if (ret < 0) { + fprintf(stderr, "failed to get initial clock state: %d\n", ret); + return 1; + } + + if (clock_data.clock == 0 || clock_data.flags != 0) { + fprintf(stderr, "invalid clock data returned (%llu, %u)\n", + clock_data.clock, clock_data.flags); + } + + clock_data.clock += 10000000; + + ret = crosvm_set_clock(crosvm, &clock_data); + if (ret < 0) { + fprintf(stderr, "failed to update clock: %d\n", ret); + return 1; + } + + clock_data.flags = -1U; + ret = crosvm_set_clock(crosvm, &clock_data); + if (ret >= 0) { + fprintf(stderr, "unexpected success updating clock\n"); + return 1; + } + return 0; } -- cgit 1.4.1