diff options
| author | 2020-07-18 01:45:10 -0400 | |
|---|---|---|
| committer | 2020-07-18 01:45:10 -0400 | |
| commit | 4a8cb9a70671db5684dadf10061f3c3cf1d27741 (patch) | |
| tree | 76ff712dc903f71245bd6108519b125ca6fac99e /src/core/hle/kernel | |
| parent | Merge pull request #4373 from lioncash/allocator (diff) | |
| parent | core_timing: Remove unused data member (diff) | |
| download | yuzu-4a8cb9a70671db5684dadf10061f3c3cf1d27741.tar.gz yuzu-4a8cb9a70671db5684dadf10061f3c3cf1d27741.tar.xz yuzu-4a8cb9a70671db5684dadf10061f3c3cf1d27741.zip | |
Merge pull request #4348 from lioncash/nano
core_timing: Make usage of nanoseconds more consistent in the interface
Diffstat (limited to 'src/core/hle/kernel')
| -rw-r--r-- | src/core/hle/kernel/kernel.cpp | 8 | ||||
| -rw-r--r-- | src/core/hle/kernel/server_session.cpp | 6 | ||||
| -rw-r--r-- | src/core/hle/kernel/time_manager.cpp | 5 |
3 files changed, 11 insertions, 8 deletions
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp index e1c7a0f3b..8dd4a2637 100644 --- a/src/core/hle/kernel/kernel.cpp +++ b/src/core/hle/kernel/kernel.cpp | |||
| @@ -145,16 +145,18 @@ struct KernelCore::Impl { | |||
| 145 | 145 | ||
| 146 | void InitializePreemption(KernelCore& kernel) { | 146 | void InitializePreemption(KernelCore& kernel) { |
| 147 | preemption_event = Core::Timing::CreateEvent( | 147 | preemption_event = Core::Timing::CreateEvent( |
| 148 | "PreemptionCallback", [this, &kernel](u64 userdata, s64 cycles_late) { | 148 | "PreemptionCallback", [this, &kernel](u64, std::chrono::nanoseconds) { |
| 149 | { | 149 | { |
| 150 | SchedulerLock lock(kernel); | 150 | SchedulerLock lock(kernel); |
| 151 | global_scheduler.PreemptThreads(); | 151 | global_scheduler.PreemptThreads(); |
| 152 | } | 152 | } |
| 153 | s64 time_interval = Core::Timing::msToCycles(std::chrono::milliseconds(10)); | 153 | const auto time_interval = std::chrono::nanoseconds{ |
| 154 | Core::Timing::msToCycles(std::chrono::milliseconds(10))}; | ||
| 154 | system.CoreTiming().ScheduleEvent(time_interval, preemption_event); | 155 | system.CoreTiming().ScheduleEvent(time_interval, preemption_event); |
| 155 | }); | 156 | }); |
| 156 | 157 | ||
| 157 | s64 time_interval = Core::Timing::msToCycles(std::chrono::milliseconds(10)); | 158 | const auto time_interval = |
| 159 | std::chrono::nanoseconds{Core::Timing::msToCycles(std::chrono::milliseconds(10))}; | ||
| 158 | system.CoreTiming().ScheduleEvent(time_interval, preemption_event); | 160 | system.CoreTiming().ScheduleEvent(time_interval, preemption_event); |
| 159 | } | 161 | } |
| 160 | 162 | ||
diff --git a/src/core/hle/kernel/server_session.cpp b/src/core/hle/kernel/server_session.cpp index 7b23a6889..af22f4c33 100644 --- a/src/core/hle/kernel/server_session.cpp +++ b/src/core/hle/kernel/server_session.cpp | |||
| @@ -34,7 +34,7 @@ ResultVal<std::shared_ptr<ServerSession>> ServerSession::Create(KernelCore& kern | |||
| 34 | std::shared_ptr<ServerSession> session{std::make_shared<ServerSession>(kernel)}; | 34 | std::shared_ptr<ServerSession> session{std::make_shared<ServerSession>(kernel)}; |
| 35 | 35 | ||
| 36 | session->request_event = Core::Timing::CreateEvent( | 36 | session->request_event = Core::Timing::CreateEvent( |
| 37 | name, [session](u64 userdata, s64 cycles_late) { session->CompleteSyncRequest(); }); | 37 | name, [session](u64, std::chrono::nanoseconds) { session->CompleteSyncRequest(); }); |
| 38 | session->name = std::move(name); | 38 | session->name = std::move(name); |
| 39 | session->parent = std::move(parent); | 39 | session->parent = std::move(parent); |
| 40 | 40 | ||
| @@ -184,8 +184,8 @@ ResultCode ServerSession::CompleteSyncRequest() { | |||
| 184 | 184 | ||
| 185 | ResultCode ServerSession::HandleSyncRequest(std::shared_ptr<Thread> thread, | 185 | ResultCode ServerSession::HandleSyncRequest(std::shared_ptr<Thread> thread, |
| 186 | Core::Memory::Memory& memory) { | 186 | Core::Memory::Memory& memory) { |
| 187 | ResultCode result = QueueSyncRequest(std::move(thread), memory); | 187 | const ResultCode result = QueueSyncRequest(std::move(thread), memory); |
| 188 | const u64 delay = kernel.IsMulticore() ? 0U : 20000U; | 188 | const auto delay = std::chrono::nanoseconds{kernel.IsMulticore() ? 0 : 20000}; |
| 189 | Core::System::GetInstance().CoreTiming().ScheduleEvent(delay, request_event, {}); | 189 | Core::System::GetInstance().CoreTiming().ScheduleEvent(delay, request_event, {}); |
| 190 | return result; | 190 | return result; |
| 191 | } | 191 | } |
diff --git a/src/core/hle/kernel/time_manager.cpp b/src/core/hle/kernel/time_manager.cpp index 941305e8e..88b01b751 100644 --- a/src/core/hle/kernel/time_manager.cpp +++ b/src/core/hle/kernel/time_manager.cpp | |||
| @@ -16,7 +16,7 @@ namespace Kernel { | |||
| 16 | 16 | ||
| 17 | TimeManager::TimeManager(Core::System& system_) : system{system_} { | 17 | TimeManager::TimeManager(Core::System& system_) : system{system_} { |
| 18 | time_manager_event_type = Core::Timing::CreateEvent( | 18 | time_manager_event_type = Core::Timing::CreateEvent( |
| 19 | "Kernel::TimeManagerCallback", [this](u64 thread_handle, [[maybe_unused]] s64 cycles_late) { | 19 | "Kernel::TimeManagerCallback", [this](u64 thread_handle, std::chrono::nanoseconds) { |
| 20 | SchedulerLock lock(system.Kernel()); | 20 | SchedulerLock lock(system.Kernel()); |
| 21 | Handle proper_handle = static_cast<Handle>(thread_handle); | 21 | Handle proper_handle = static_cast<Handle>(thread_handle); |
| 22 | if (cancelled_events[proper_handle]) { | 22 | if (cancelled_events[proper_handle]) { |
| @@ -34,7 +34,8 @@ void TimeManager::ScheduleTimeEvent(Handle& event_handle, Thread* timetask, s64 | |||
| 34 | ASSERT(timetask); | 34 | ASSERT(timetask); |
| 35 | ASSERT(timetask->GetStatus() != ThreadStatus::Ready); | 35 | ASSERT(timetask->GetStatus() != ThreadStatus::Ready); |
| 36 | ASSERT(timetask->GetStatus() != ThreadStatus::WaitMutex); | 36 | ASSERT(timetask->GetStatus() != ThreadStatus::WaitMutex); |
| 37 | system.CoreTiming().ScheduleEvent(nanoseconds, time_manager_event_type, event_handle); | 37 | system.CoreTiming().ScheduleEvent(std::chrono::nanoseconds{nanoseconds}, |
| 38 | time_manager_event_type, event_handle); | ||
| 38 | } else { | 39 | } else { |
| 39 | event_handle = InvalidHandle; | 40 | event_handle = InvalidHandle; |
| 40 | } | 41 | } |