/* * Copyright (c) 2021, the SerenityOS developers. * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include namespace Kernel::VirtIO { #define REQUESTQ 0 class RNG final : public AtomicRefCounted , public VirtIO::Device { public: static NonnullLockRefPtr must_create(PCI::DeviceIdentifier const&); virtual StringView purpose() const override { return class_name(); } virtual ~RNG() override = default; virtual void initialize() override; private: virtual StringView class_name() const override { return "VirtIORNG"sv; } explicit RNG(PCI::DeviceIdentifier const&); virtual bool handle_device_config_change() override; virtual void handle_queue_update(u16 queue_index) override; void request_entropy_from_host(); OwnPtr m_entropy_buffer; EntropySource m_entropy_source; }; }