quic/qbox
Loading...
Searching...
No Matches
virtio_mmio_blk.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#include <module_factory_registery.h>
21
23{
24private:
25 std::string blkdev_id;
26 cci::cci_param<std::string> blkdev_str;
27
28public:
29 virtio_mmio_blk(const sc_core::sc_module_name& name, sc_core::sc_object* o)
30 : virtio_mmio_blk(name, *(dynamic_cast<QemuInstance*>(o)))
31 {
32 }
33 virtio_mmio_blk(sc_core::sc_module_name nm, QemuInstance& inst)
34 : QemuVirtioMMIO(nm, inst, "virtio-blk-device")
35 , blkdev_id(std::string(name()) + "-id")
36 , blkdev_str("blkdev_str", "", "blkdev string for QEMU (do not specify ID)")
37 {
38 std::stringstream opts;
39 opts << blkdev_str.get_value();
40 opts << ",id=" << blkdev_id;
41
42 m_inst.add_arg("-drive");
43 m_inst.add_arg(opts.str().c_str());
44 }
45
46 void before_end_of_elaboration() override
47 {
48 QemuVirtioMMIO::before_end_of_elaboration();
49
50 m_dev.set_prop_parse("drive", blkdev_id.c_str());
51 }
52};
53
54extern "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_blk.h:23