Browse Source

Merge pull request #1372 from lioncash/thread

kernel/thread: Use owner_process when setting the page table in SetupMainThread()
nce_cpp
bunnei 7 years ago
committed by GitHub
parent
commit
19ff245ffe
  1. 2
      src/core/hle/kernel/process.cpp
  2. 6
      src/core/hle/kernel/thread.cpp
  3. 2
      src/core/hle/kernel/thread.h

2
src/core/hle/kernel/process.cpp

@ -125,7 +125,7 @@ void Process::Run(VAddr entry_point, s32 main_thread_priority, u32 stack_size) {
vm_manager.LogLayout(); vm_manager.LogLayout();
status = ProcessStatus::Running; status = ProcessStatus::Running;
Kernel::SetupMainThread(kernel, entry_point, main_thread_priority, this);
Kernel::SetupMainThread(kernel, entry_point, main_thread_priority, *this);
} }
void Process::LoadModule(SharedPtr<CodeSet> module_, VAddr base_addr) { void Process::LoadModule(SharedPtr<CodeSet> module_, VAddr base_addr) {

6
src/core/hle/kernel/thread.cpp

@ -311,13 +311,13 @@ void Thread::BoostPriority(u32 priority) {
} }
SharedPtr<Thread> SetupMainThread(KernelCore& kernel, VAddr entry_point, u32 priority, SharedPtr<Thread> SetupMainThread(KernelCore& kernel, VAddr entry_point, u32 priority,
SharedPtr<Process> owner_process) {
Process& owner_process) {
// Setup page table so we can write to memory // Setup page table so we can write to memory
SetCurrentPageTable(&Core::CurrentProcess()->vm_manager.page_table);
SetCurrentPageTable(&owner_process.vm_manager.page_table);
// Initialize new "main" thread // Initialize new "main" thread
auto thread_res = Thread::Create(kernel, "main", entry_point, priority, 0, THREADPROCESSORID_0, auto thread_res = Thread::Create(kernel, "main", entry_point, priority, 0, THREADPROCESSORID_0,
Memory::STACK_AREA_VADDR_END, std::move(owner_process));
Memory::STACK_AREA_VADDR_END, &owner_process);
SharedPtr<Thread> thread = std::move(thread_res).Unwrap(); SharedPtr<Thread> thread = std::move(thread_res).Unwrap();

2
src/core/hle/kernel/thread.h

@ -281,7 +281,7 @@ private:
* @return A shared pointer to the main thread * @return A shared pointer to the main thread
*/ */
SharedPtr<Thread> SetupMainThread(KernelCore& kernel, VAddr entry_point, u32 priority, SharedPtr<Thread> SetupMainThread(KernelCore& kernel, VAddr entry_point, u32 priority,
SharedPtr<Process> owner_process);
Process& owner_process);
/** /**
* Gets the current thread * Gets the current thread

Loading…
Cancel
Save