diff options
| author | bunnei <bunneidev@gmail.com> | 2018-08-30 10:02:50 -0400 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-08-30 10:02:50 -0400 | 
| commit | 5094dfa081c7275e35496374a42996b11f0f6005 (patch) | |
| tree | 8cdfb8c270c6299a1b172fb9c14856684bedf084 /src/core/loader | |
| parent | 42ef40884f222bfd0dfa08cd56e01e89b0e2ab0f (diff) | |
| parent | 0cbcd6ec9aeeafc298fe2e6e4ac10d68bb7267c5 (diff) | |
Merge pull request #1198 from lioncash/kernel
kernel: Eliminate kernel global state
Diffstat (limited to 'src/core/loader')
| -rw-r--r-- | src/core/loader/deconstructed_rom_directory.cpp | 4 | ||||
| -rw-r--r-- | src/core/loader/elf.cpp | 7 | ||||
| -rw-r--r-- | src/core/loader/nro.cpp | 6 | ||||
| -rw-r--r-- | src/core/loader/nso.cpp | 6 | 
4 files changed, 16 insertions, 7 deletions
| diff --git a/src/core/loader/deconstructed_rom_directory.cpp b/src/core/loader/deconstructed_rom_directory.cpp index 4c79d7902..a53fa6e00 100644 --- a/src/core/loader/deconstructed_rom_directory.cpp +++ b/src/core/loader/deconstructed_rom_directory.cpp @@ -6,6 +6,7 @@  #include "common/common_funcs.h"  #include "common/file_util.h"  #include "common/logging/log.h" +#include "core/core.h"  #include "core/file_sys/content_archive.h"  #include "core/file_sys/control_metadata.h"  #include "core/file_sys/romfs_factory.h" @@ -117,10 +118,11 @@ ResultStatus AppLoader_DeconstructedRomDirectory::Load(          }      } +    auto& kernel = Core::System::GetInstance().Kernel();      process->program_id = metadata.GetTitleID();      process->svc_access_mask.set();      process->resource_limit = -        Kernel::ResourceLimit::GetForCategory(Kernel::ResourceLimitCategory::APPLICATION); +        kernel.ResourceLimitForCategory(Kernel::ResourceLimitCategory::APPLICATION);      process->Run(Memory::PROCESS_IMAGE_VADDR, metadata.GetMainThreadPriority(),                   metadata.GetMainThreadStackSize()); diff --git a/src/core/loader/elf.cpp b/src/core/loader/elf.cpp index 6420a7f11..3702a8478 100644 --- a/src/core/loader/elf.cpp +++ b/src/core/loader/elf.cpp @@ -9,6 +9,7 @@  #include "common/common_types.h"  #include "common/file_util.h"  #include "common/logging/log.h" +#include "core/core.h"  #include "core/hle/kernel/process.h"  #include "core/hle/kernel/resource_limit.h"  #include "core/loader/elf.h" @@ -300,7 +301,8 @@ SharedPtr<CodeSet> ElfReader::LoadInto(u32 vaddr) {      std::vector<u8> program_image(total_image_size);      size_t current_image_position = 0; -    SharedPtr<CodeSet> codeset = CodeSet::Create(""); +    auto& kernel = Core::System::GetInstance().Kernel(); +    SharedPtr<CodeSet> codeset = CodeSet::Create(kernel, "");      for (unsigned int i = 0; i < header->e_phnum; ++i) {          Elf32_Phdr* p = &segments[i]; @@ -400,8 +402,9 @@ ResultStatus AppLoader_ELF::Load(Kernel::SharedPtr<Kernel::Process>& process) {      process->svc_access_mask.set();      // Attach the default resource limit (APPLICATION) to the process +    auto& kernel = Core::System::GetInstance().Kernel();      process->resource_limit = -        Kernel::ResourceLimit::GetForCategory(Kernel::ResourceLimitCategory::APPLICATION); +        kernel.ResourceLimitForCategory(Kernel::ResourceLimitCategory::APPLICATION);      process->Run(codeset->entrypoint, 48, Memory::DEFAULT_STACK_SIZE); diff --git a/src/core/loader/nro.cpp b/src/core/loader/nro.cpp index 2179cf2ea..00205d1d2 100644 --- a/src/core/loader/nro.cpp +++ b/src/core/loader/nro.cpp @@ -136,7 +136,8 @@ bool AppLoader_NRO::LoadNro(FileSys::VirtualFile file, VAddr load_base) {      }      // Build program image -    Kernel::SharedPtr<Kernel::CodeSet> codeset = Kernel::CodeSet::Create(""); +    auto& kernel = Core::System::GetInstance().Kernel(); +    Kernel::SharedPtr<Kernel::CodeSet> codeset = Kernel::CodeSet::Create(kernel, "");      std::vector<u8> program_image = file->ReadBytes(PageAlignSize(nro_header.file_size));      if (program_image.size() != PageAlignSize(nro_header.file_size)) {          return {}; @@ -185,9 +186,10 @@ ResultStatus AppLoader_NRO::Load(Kernel::SharedPtr<Kernel::Process>& process) {          return ResultStatus::ErrorLoadingNRO;      } +    auto& kernel = Core::System::GetInstance().Kernel();      process->svc_access_mask.set();      process->resource_limit = -        Kernel::ResourceLimit::GetForCategory(Kernel::ResourceLimitCategory::APPLICATION); +        kernel.ResourceLimitForCategory(Kernel::ResourceLimitCategory::APPLICATION);      process->Run(base_addr, THREADPRIO_DEFAULT, Memory::DEFAULT_STACK_SIZE);      is_loaded = true; diff --git a/src/core/loader/nso.cpp b/src/core/loader/nso.cpp index a94558ac5..0c992d662 100644 --- a/src/core/loader/nso.cpp +++ b/src/core/loader/nso.cpp @@ -100,7 +100,8 @@ VAddr AppLoader_NSO::LoadModule(FileSys::VirtualFile file, VAddr load_base) {          return {};      // Build program image -    Kernel::SharedPtr<Kernel::CodeSet> codeset = Kernel::CodeSet::Create(""); +    auto& kernel = Core::System::GetInstance().Kernel(); +    Kernel::SharedPtr<Kernel::CodeSet> codeset = Kernel::CodeSet::Create(kernel, "");      std::vector<u8> program_image;      for (std::size_t i = 0; i < nso_header.segments.size(); ++i) {          const std::vector<u8> compressed_data = @@ -151,9 +152,10 @@ ResultStatus AppLoader_NSO::Load(Kernel::SharedPtr<Kernel::Process>& process) {      LoadModule(file, Memory::PROCESS_IMAGE_VADDR);      LOG_DEBUG(Loader, "loaded module {} @ 0x{:X}", file->GetName(), Memory::PROCESS_IMAGE_VADDR); +    auto& kernel = Core::System::GetInstance().Kernel();      process->svc_access_mask.set();      process->resource_limit = -        Kernel::ResourceLimit::GetForCategory(Kernel::ResourceLimitCategory::APPLICATION); +        kernel.ResourceLimitForCategory(Kernel::ResourceLimitCategory::APPLICATION);      process->Run(Memory::PROCESS_IMAGE_VADDR, THREADPRIO_DEFAULT, Memory::DEFAULT_STACK_SIZE);      is_loaded = true; | 
