diff options
author | Subv <subv2112@gmail.com> | 2015-01-07 10:10:58 -0500 |
---|---|---|
committer | Subv <subv2112@gmail.com> | 2015-01-07 20:31:31 -0500 |
commit | 60a373a7862a85b8b030ea1b18d01d364ddf8a8b (patch) | |
tree | e9e6288406b16f2a8dd10236c96567a895af3410 /src/core/hle/kernel/thread.h | |
parent | b659cac2dc67ee97297049fcfb02c1ce186ffcb0 (diff) |
Threads: Use a dummy idle thread when no other are ready.
This thread will not actually execute instructions, it will only advance the timing/events and try to yield immediately to the next ready thread, if there aren't any ready threads then it will be rescheduled and start its job again.
Diffstat (limited to 'src/core/hle/kernel/thread.h')
-rw-r--r-- | src/core/hle/kernel/thread.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/core/hle/kernel/thread.h b/src/core/hle/kernel/thread.h index 0e1397cd..dfe92d16 100644 --- a/src/core/hle/kernel/thread.h +++ b/src/core/hle/kernel/thread.h @@ -104,6 +104,17 @@ ResultVal<u32> GetThreadPriority(const Handle handle); /// Set the priority of the thread specified by handle ResultCode SetThreadPriority(Handle handle, s32 priority); +/** + * Sets up the idle thread, this is a thread that is intended to never execute instructions, + * only to advance the timing. It is scheduled when there are no other ready threads in the thread queue + * and will try to yield on every call. + * @returns The handle of the idle thread + */ +Handle SetupIdleThread(); + +/// Whether the current thread is an idle thread +bool IsIdleThread(Handle thread); + /// Initialize threading void ThreadingInit(); |