diff options
| author | bunnei <bunneidev@gmail.com> | 2020-02-22 22:32:21 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-02-22 22:32:21 -0500 |
| commit | 3ef5f2017dba35742b32500e95744512dd5ef630 (patch) | |
| tree | ca5359a2ae4e34608e5564e43bdefe4946e413c8 /src/core/hle/kernel/time_manager.h | |
| parent | d4da52bbd9dea4dc65c92e9b94ec3a2442d4ccae (diff) | |
| parent | 3d0a2375ca73ae73d2ed4ee382aa0bb0378242d0 (diff) | |
Merge pull request #3416 from FernandoS27/schedule
Kernel: Refactors and Implement a TimeManager and SchedulerLocks
Diffstat (limited to 'src/core/hle/kernel/time_manager.h')
| -rw-r--r-- | src/core/hle/kernel/time_manager.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/core/hle/kernel/time_manager.h b/src/core/hle/kernel/time_manager.h new file mode 100644 index 000000000..eaec486d1 --- /dev/null +++ b/src/core/hle/kernel/time_manager.h @@ -0,0 +1,43 @@ +// Copyright 2020 yuzu Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include <memory> + +#include "core/hle/kernel/object.h" + +namespace Core { +class System; +} // namespace Core + +namespace Core::Timing { +struct EventType; +} // namespace Core::Timing + +namespace Kernel { + +class Thread; + +/** + * The `TimeManager` takes care of scheduling time events on threads and executes their TimeUp + * method when the event is triggered. + */ +class TimeManager { +public: + explicit TimeManager(Core::System& system); + + /// Schedule a time event on `timetask` thread that will expire in 'nanoseconds' + /// returns a non-invalid handle in `event_handle` if correctly scheduled + void ScheduleTimeEvent(Handle& event_handle, Thread* timetask, s64 nanoseconds); + + /// Unschedule an existing time event + void UnscheduleTimeEvent(Handle event_handle); + +private: + Core::System& system; + std::shared_ptr<Core::Timing::EventType> time_manager_event_type; +}; + +} // namespace Kernel |
