/** ****************************************************************************** * Xenia : Xbox 360 Emulator Research Project * ****************************************************************************** * Copyright 2013 Ben Vanik. All rights reserved. * * Released under the BSD license - see LICENSE in the root for more details. * ****************************************************************************** */ #ifndef XENIA_KERNEL_RUNTIME_H_ #define XENIA_KERNEL_RUNTIME_H_ #include #include #include #include #include #include namespace xe { namespace cpu { class Processor; } } namespace xe { namespace kernel { class KernelModule; class Runtime { public: Runtime(xe_pal_ref pal, shared_ptr processor, const xechar_t* command_line); ~Runtime(); xe_pal_ref pal(); xe_memory_ref memory(); shared_ptr processor(); shared_ptr export_resolver(); const xechar_t* command_line(); int LoadModule(const xechar_t* path); void LaunchModule(UserModule* user_module); UserModule* GetModule(const xechar_t* path); void UnloadModule(UserModule* user_module); private: xe_pal_ref pal_; xe_memory_ref memory_; shared_ptr processor_; xechar_t command_line_[2048]; shared_ptr export_resolver_; std::vector kernel_modules_; std::map user_modules_; }; } // namespace kernel } // namespace xe #endif // XENIA_KERNEL_RUNTIME_H_