xref: /aosp_15_r20/external/crosvm/tests/plugin_msr_index_list.c (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
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