Merge pull request #2397 from lioncash/thread-unused

kernel/thread: Remove unused guest_handle member variable
master
bunnei 2019-04-17 21:46:46 +07:00 committed by GitHub
commit 83b830eb2f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 18 deletions

@ -40,9 +40,8 @@ void SetupMainThread(Process& owner_process, KernelCore& kernel, VAddr entry_poi
SharedPtr<Thread> thread = std::move(thread_res).Unwrap(); SharedPtr<Thread> thread = std::move(thread_res).Unwrap();
// Register 1 must be a handle to the main thread // Register 1 must be a handle to the main thread
const Handle guest_handle = owner_process.GetHandleTable().Create(thread).Unwrap(); const Handle thread_handle = owner_process.GetHandleTable().Create(thread).Unwrap();
thread->SetGuestHandle(guest_handle); thread->GetContext().cpu_registers[1] = thread_handle;
thread->GetContext().cpu_registers[1] = guest_handle;
// Threads by default are dormant, wake up the main thread so it runs when the scheduler fires // Threads by default are dormant, wake up the main thread so it runs when the scheduler fires
thread->ResumeFromWait(); thread->ResumeFromWait();

@ -1380,20 +1380,22 @@ static ResultCode CreateThread(Core::System& system, Handle* out_handle, VAddr e
return ERR_INVALID_THREAD_PRIORITY; return ERR_INVALID_THREAD_PRIORITY;
} }
const std::string name = fmt::format("thread-{:X}", entry_point);
auto& kernel = system.Kernel(); auto& kernel = system.Kernel();
CASCADE_RESULT(SharedPtr<Thread> thread, CASCADE_RESULT(SharedPtr<Thread> thread,
Thread::Create(kernel, name, entry_point, priority, arg, processor_id, stack_top, Thread::Create(kernel, "", entry_point, priority, arg, processor_id, stack_top,
*current_process)); *current_process));
const auto new_guest_handle = current_process->GetHandleTable().Create(thread); const auto new_thread_handle = current_process->GetHandleTable().Create(thread);
if (new_guest_handle.Failed()) { if (new_thread_handle.Failed()) {
LOG_ERROR(Kernel_SVC, "Failed to create handle with error=0x{:X}", LOG_ERROR(Kernel_SVC, "Failed to create handle with error=0x{:X}",
new_guest_handle.Code().raw); new_thread_handle.Code().raw);
return new_guest_handle.Code(); return new_thread_handle.Code();
} }
thread->SetGuestHandle(*new_guest_handle); *out_handle = *new_thread_handle;
*out_handle = *new_guest_handle;
// Set the thread name for debugging purposes.
thread->SetName(
fmt::format("thread[entry_point={:X}, handle={:X}]", entry_point, *new_thread_handle));
system.CpuCore(thread->GetProcessorID()).PrepareReschedule(); system.CpuCore(thread->GetProcessorID()).PrepareReschedule();

@ -102,6 +102,11 @@ public:
std::string GetName() const override { std::string GetName() const override {
return name; return name;
} }
void SetName(std::string new_name) {
name = std::move(new_name);
}
std::string GetTypeName() const override { std::string GetTypeName() const override {
return "Thread"; return "Thread";
} }
@ -339,10 +344,6 @@ public:
arb_wait_address = address; arb_wait_address = address;
} }
void SetGuestHandle(Handle handle) {
guest_handle = handle;
}
bool HasWakeupCallback() const { bool HasWakeupCallback() const {
return wakeup_callback != nullptr; return wakeup_callback != nullptr;
} }
@ -436,9 +437,6 @@ private:
/// If waiting for an AddressArbiter, this is the address being waited on. /// If waiting for an AddressArbiter, this is the address being waited on.
VAddr arb_wait_address{0}; VAddr arb_wait_address{0};
/// Handle used by guest emulated application to access this thread
Handle guest_handle = 0;
/// Handle used as userdata to reference this object when inserting into the CoreTiming queue. /// Handle used as userdata to reference this object when inserting into the CoreTiming queue.
Handle callback_handle = 0; Handle callback_handle = 0;