// Copyright 2014 Citra Emulator Project / PPSSPP Project // Licensed under GPLv2 or any later version // Refer to the license.txt file included. #pragma once #include #include #include "common/common_types.h" namespace Kernel { class AddressArbiter; class Event; enum class ResetType { OneShot, Sticky, Pulse, }; template using SharedPtr = boost::intrusive_ptr; class KernelSystem { public: explicit KernelSystem(u32 system_mode); ~KernelSystem(); /** * Creates an address arbiter. * * @param name Optional name used for debugging. * @returns The created AddressArbiter. */ SharedPtr CreateAddressArbiter(std::string name = "Unknown"); /** * Creates an event * @param reset_type ResetType describing how to create event * @param name Optional name of event */ SharedPtr CreateEvent(ResetType reset_type, std::string name = "Unknown"); }; } // namespace Kernel