summary refs log tree commit diff
path: root/tests
diff options
context:
space:
mode:
authorDmitry Torokhov <dtor@chromium.org>2019-01-17 16:20:33 -0800
committerchrome-bot <chrome-bot@chromium.org>2019-01-22 21:05:18 -0800
commit2c7e88199ea4f7e8a9486c1c76ecaeababad4d49 (patch)
tree814f2b2a341f34917b5492a7832771fd883a2575 /tests
parent5d471b454a04dbb38e8338017b204f1a403aadb9 (diff)
downloadcrosvm-2c7e88199ea4f7e8a9486c1c76ecaeababad4d49.tar
crosvm-2c7e88199ea4f7e8a9486c1c76ecaeababad4d49.tar.gz
crosvm-2c7e88199ea4f7e8a9486c1c76ecaeababad4d49.tar.bz2
crosvm-2c7e88199ea4f7e8a9486c1c76ecaeababad4d49.tar.lz
crosvm-2c7e88199ea4f7e8a9486c1c76ecaeababad4d49.tar.xz
crosvm-2c7e88199ea4f7e8a9486c1c76ecaeababad4d49.tar.zst
crosvm-2c7e88199ea4f7e8a9486c1c76ecaeababad4d49.zip
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 <dtor@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1419373
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Zach Reizner <zachr@chromium.org>
Diffstat (limited to 'tests')
-rw-r--r--tests/plugin_vm_state.c28
1 files changed, 28 insertions, 0 deletions
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;
 }