quic/qbox
Loading...
Searching...
No Matches
virtio_mmio_net.h
1/*
2 * This file is part of libqbox
3 * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All Rights Reserved.
4 * Author: GreenSocs 2022
5 *
6 * SPDX-License-Identifier: BSD-3-Clause
7 */
8
9#pragma once
10
11#include <vector>
12
13#include <cci_configuration>
14
15#include <device.h>
16#include <ports/target.h>
17#include <ports/qemu-initiator-signal-socket.h>
18#include <virtio/virtio-mmio.h>
19#include <qemu-instance.h>
20
21#include <module_factory_registery.h>
22
24{
25private:
26 std::string netdev_id;
27 cci::cci_param<std::string> netdev_str;
28
29public:
30 virtio_mmio_net(const sc_core::sc_module_name& name, sc_core::sc_object* o)
31 : virtio_mmio_net(name, *(dynamic_cast<QemuInstance*>(o)))
32 {
33 }
34 virtio_mmio_net(sc_core::sc_module_name nm, QemuInstance& inst)
35 : QemuVirtioMMIO(nm, inst, "virtio-net-device")
36 , netdev_id(std::string(name()) + "-id")
37 , netdev_str("netdev_str", "user,hostfwd=tcp::2222-:22", "netdev string for QEMU (do not specify ID)")
38 {
39 std::stringstream opts;
40 opts << netdev_str.get_value();
41 opts << ",id=" << netdev_id;
42
43 m_inst.add_arg("-netdev");
44 m_inst.add_arg(opts.str().c_str());
45 }
46
47 void before_end_of_elaboration() override
48 {
49 QemuVirtioMMIO::before_end_of_elaboration();
50
51 m_dev.set_prop_str("netdev", netdev_id.c_str());
52 }
53};
54
55extern "C" void module_register();
This class encapsulates a libqemu-cxx qemu::LibQemu instance. It handles QEMU parameters and instance...
Definition qemu-instance.h:89
void add_arg(const char *arg)
Add a command line argument to the qemu instance.
Definition qemu-instance.h:329
Definition target.h:160
Definition virtio-mmio.h:23
Definition virtio_mmio_net.h:24