aboutsummaryrefslogtreecommitdiff
path: root/src/core/core.cpp
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2019-04-09 15:27:44 -0400
committerLioncash <mathew1800@gmail.com>2019-04-11 22:11:40 -0400
commit3cfaddba857ebf24507b9c4dd50d47c88f5ddaef (patch)
tree86091344830176ec100212ca90d956cced8611b3 /src/core/core.cpp
parente0962940a2e70b8fa4a4ccc50aab12845a41f881 (diff)
core/core: Move main process creation into Load()
Now that we have dependencies on the initialization order, we can move the creation of the main process to a more sensible area: where we actually load in the executable data. This allows localizing the creation and loading of the process in one location, making the initialization of the process much nicer to trace.
Diffstat (limited to 'src/core/core.cpp')
-rw-r--r--src/core/core.cpp7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/core/core.cpp b/src/core/core.cpp
index eb300eef73..265ac2835c 100644
--- a/src/core/core.cpp
+++ b/src/core/core.cpp
@@ -117,9 +117,6 @@ struct System::Impl {
if (web_browser == nullptr)
web_browser = std::make_unique<Core::Frontend::DefaultWebBrowserApplet>();
- auto main_process = Kernel::Process::Create(system, "main");
- kernel.MakeCurrentProcess(main_process.get());
-
telemetry_session = std::make_unique<Core::TelemetrySession>();
service_manager = std::make_shared<Service::SM::ServiceManager>();
@@ -170,7 +167,8 @@ struct System::Impl {
return init_result;
}
- const Loader::ResultStatus load_result{app_loader->Load(*kernel.CurrentProcess())};
+ auto main_process = Kernel::Process::Create(system, "main");
+ const Loader::ResultStatus load_result{app_loader->Load(*main_process)};
if (load_result != Loader::ResultStatus::Success) {
LOG_CRITICAL(Core, "Failed to load ROM (Error {})!", static_cast<int>(load_result));
Shutdown();
@@ -178,6 +176,7 @@ struct System::Impl {
return static_cast<ResultStatus>(static_cast<u32>(ResultStatus::ErrorLoader) +
static_cast<u32>(load_result));
}
+ kernel.MakeCurrentProcess(main_process.get());
// Main process has been loaded and been made current.
// Begin GPU and CPU execution.