1 /*
2 * Copyright 2018 The ChromiumOS Authors
3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file.
5 */
6
7 #include <errno.h>
8 #include <stdint.h>
9 #include <stdio.h>
10 #include <stdlib.h>
11 #include <string.h>
12
13 #include "crosvm.h"
14
main(int argc,char ** argv)15 int main(int argc, char** argv) {
16 struct crosvm *crosvm;
17 int ret = crosvm_connect(&crosvm);
18 if (ret) {
19 fprintf(stderr, "failed to connect to crosvm: %d\n", ret);
20 return 1;
21 }
22
23 uint32_t msr_indices[256];
24 int n_entries;
25 ret = crosvm_get_msr_index_list(crosvm, 1, msr_indices, &n_entries);
26 if (ret >= 0) {
27 fprintf(stderr,
28 "expected crosvm_get_msr_index_list to fail with E2BIG\n");
29 return 1;
30 }
31
32
33 memset(msr_indices, 0, sizeof(msr_indices));
34 ret = crosvm_get_msr_index_list(crosvm, 256, msr_indices, &n_entries);
35 if (ret < 0) {
36 fprintf(stderr,
37 "unexpected failure of crosvm_get_msr_index_list: %d\n", ret);
38 return 1;
39 }
40
41 if (n_entries <= 1) {
42 fprintf(stderr,
43 "unexpected number of supported msr entries: %d\n",
44 n_entries);
45 return 1;
46 }
47
48 return 0;
49 }
50