pound-emu_pound/src/common/Logging/Backend.h
Ronald Caesar c6706dd8a0 kvm: Add framework for machine types and MMIO dispatch
The core of the machine-type support is the new operations table,
kvm_ops_t. This acts as a standard C-style virtual table decoupling the
generic KVM core logic from target specific hardware emualtion. The
kvm_t VM instance now points to an ops table, which defines the
"personality" of the guest. A kvm_probe() factory function has been
added to initialize a kvm_t instance with the correct ops table for a
given machine type (eg, Switch 1).

The ops table's .mmio_read and .mmio_write function pointers are the
link between the armv8 CPU core and this new MMIO dispatcher. When a
physical memory access is determined to be MMIO, the VM will call the
appropriate function pointer, which in turn will use the MMIO dispatcher
to find and execute the correct device handler.

The initial implementation for the Switch 1 target
(targets/switch1/hardware/probe.cpp) is a stub. The bootstrapping
logic will be added in subsequent patches.

Signed-off-by: Ronald Caesar <github43132@proton.me>
2025-08-24 21:45:32 -04:00

37 lines
871 B
C++

// Copyright 2025 Xenon Emulator Project. All rights reserved.
#pragma once
#include <string_view>
#include <filesystem>
#include "common/PathUtil.h"
#include "Filter.h"
namespace Base {
namespace Log {
class Filter;
/// Cleans up logs from previous days, and any logs within the desired limit
void CleanupOldLogs(const std::string_view &logFileBase, const fs::path &logDir, const u16 logLimit = 50);
/// Initializes the logging system
void Initialize(const std::string_view &logFile = {});
bool IsActive();
/// Starts the logging threads
void Start();
/// Explictily stops the logger thread and flushes the buffers
void Stop();
/// The global filter will prevent any messages from even being processed if they are filtered
void SetGlobalFilter(const Filter &filter);
void SetColorConsoleBackendEnabled(bool enabled);
} // namespace Log
} // namespace Base