1*7ab1a32cSRuslan Bukin /*-
2*7ab1a32cSRuslan Bukin * SPDX-License-Identifier: BSD-2-Clause
3*7ab1a32cSRuslan Bukin *
4*7ab1a32cSRuslan Bukin * Copyright (c) 2024 Mark Johnston <markj@FreeBSD.org>
5*7ab1a32cSRuslan Bukin *
6*7ab1a32cSRuslan Bukin * This software was developed by the University of Cambridge Computer
7*7ab1a32cSRuslan Bukin * Laboratory (Department of Computer Science and Technology) under Innovate
8*7ab1a32cSRuslan Bukin * UK project 105694, "Digital Security by Design (DSbD) Technology Platform
9*7ab1a32cSRuslan Bukin * Prototype".
10*7ab1a32cSRuslan Bukin *
11*7ab1a32cSRuslan Bukin * Redistribution and use in source and binary forms, with or without
12*7ab1a32cSRuslan Bukin * modification, are permitted provided that the following conditions
13*7ab1a32cSRuslan Bukin * are met:
14*7ab1a32cSRuslan Bukin * 1. Redistributions of source code must retain the above copyright
15*7ab1a32cSRuslan Bukin * notice, this list of conditions and the following disclaimer.
16*7ab1a32cSRuslan Bukin * 2. Redistributions in binary form must reproduce the above copyright
17*7ab1a32cSRuslan Bukin * notice, this list of conditions and the following disclaimer in the
18*7ab1a32cSRuslan Bukin * documentation and/or other materials provided with the distribution.
19*7ab1a32cSRuslan Bukin *
20*7ab1a32cSRuslan Bukin * THIS SOFTWARE IS PROVIDED BY NETAPP, INC ``AS IS'' AND
21*7ab1a32cSRuslan Bukin * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22*7ab1a32cSRuslan Bukin * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23*7ab1a32cSRuslan Bukin * ARE DISCLAIMED. IN NO EVENT SHALL NETAPP, INC OR CONTRIBUTORS BE LIABLE
24*7ab1a32cSRuslan Bukin * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25*7ab1a32cSRuslan Bukin * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26*7ab1a32cSRuslan Bukin * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27*7ab1a32cSRuslan Bukin * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28*7ab1a32cSRuslan Bukin * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29*7ab1a32cSRuslan Bukin * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30*7ab1a32cSRuslan Bukin * SUCH DAMAGE.
31*7ab1a32cSRuslan Bukin */
32*7ab1a32cSRuslan Bukin
33*7ab1a32cSRuslan Bukin #include <sys/types.h>
34*7ab1a32cSRuslan Bukin
35*7ab1a32cSRuslan Bukin #include <err.h>
36*7ab1a32cSRuslan Bukin #include <fcntl.h>
37*7ab1a32cSRuslan Bukin #include <getopt.h>
38*7ab1a32cSRuslan Bukin #include <stdbool.h>
39*7ab1a32cSRuslan Bukin #include <stdio.h>
40*7ab1a32cSRuslan Bukin #include <stdlib.h>
41*7ab1a32cSRuslan Bukin #include <string.h>
42*7ab1a32cSRuslan Bukin #include <unistd.h>
43*7ab1a32cSRuslan Bukin
44*7ab1a32cSRuslan Bukin #include <vmmapi.h>
45*7ab1a32cSRuslan Bukin
46*7ab1a32cSRuslan Bukin #include "bhyvectl.h"
47*7ab1a32cSRuslan Bukin
48*7ab1a32cSRuslan Bukin void
bhyvectl_dump_vm_run_exitcode(struct vm_exit * vmexit __unused,int vcpu __unused)49*7ab1a32cSRuslan Bukin bhyvectl_dump_vm_run_exitcode(struct vm_exit *vmexit __unused,
50*7ab1a32cSRuslan Bukin int vcpu __unused)
51*7ab1a32cSRuslan Bukin {
52*7ab1a32cSRuslan Bukin }
53*7ab1a32cSRuslan Bukin
54*7ab1a32cSRuslan Bukin struct option *
bhyvectl_opts(const struct option * options,size_t count)55*7ab1a32cSRuslan Bukin bhyvectl_opts(const struct option *options, size_t count)
56*7ab1a32cSRuslan Bukin {
57*7ab1a32cSRuslan Bukin struct option *all_opts;
58*7ab1a32cSRuslan Bukin
59*7ab1a32cSRuslan Bukin all_opts = calloc(count + 1, sizeof(struct option));
60*7ab1a32cSRuslan Bukin if (all_opts == NULL)
61*7ab1a32cSRuslan Bukin err(1, "calloc");
62*7ab1a32cSRuslan Bukin memcpy(all_opts, options, count * sizeof(struct option));
63*7ab1a32cSRuslan Bukin return (all_opts);
64*7ab1a32cSRuslan Bukin }
65*7ab1a32cSRuslan Bukin
66*7ab1a32cSRuslan Bukin void
bhyvectl_handle_opt(const struct option * opts __unused,int opt __unused)67*7ab1a32cSRuslan Bukin bhyvectl_handle_opt(const struct option *opts __unused, int opt __unused)
68*7ab1a32cSRuslan Bukin {
69*7ab1a32cSRuslan Bukin }
70*7ab1a32cSRuslan Bukin
71*7ab1a32cSRuslan Bukin const char *
bhyvectl_opt_desc(int opt __unused)72*7ab1a32cSRuslan Bukin bhyvectl_opt_desc(int opt __unused)
73*7ab1a32cSRuslan Bukin {
74*7ab1a32cSRuslan Bukin /* No riscv-specific options yet. */
75*7ab1a32cSRuslan Bukin return ("???");
76*7ab1a32cSRuslan Bukin }
77*7ab1a32cSRuslan Bukin
78*7ab1a32cSRuslan Bukin void
bhyvectl_md_main(struct vmctx * ctx __unused,struct vcpu * vcpu __unused,int vcpuid __unused,bool get_all __unused)79*7ab1a32cSRuslan Bukin bhyvectl_md_main(struct vmctx *ctx __unused, struct vcpu *vcpu __unused,
80*7ab1a32cSRuslan Bukin int vcpuid __unused, bool get_all __unused)
81*7ab1a32cSRuslan Bukin {
82*7ab1a32cSRuslan Bukin }
83