summaryrefslogtreecommitdiffstats
path: root/src/core/hle/kernel/wait_object.cpp (follow)
Commit message (Collapse)AuthorAgeFilesLines
* kernel/thread: Make all instance variables privateLioncash2018-10-041-16/+15
| | | | | | | | | | | | | | | | | | | | Many of the member variables of the thread class aren't even used outside of the class itself, so there's no need to make those variables public. This change follows in the steps of the previous changes that made other kernel types' members private. The main motivation behind this is that the Thread class will likely change in the future as emulation becomes more accurate, and letting random bits of the emulator access data members of the Thread class directly makes it a pain to shuffle around and/or modify internals. Having all data members public like this also makes it difficult to reason about certain bits of behavior without first verifying what parts of the core actually use them. Everything being public also generally follows the tendency for changes to be introduced in completely different translation units that would otherwise be better introduced as an addition to the Thread class' public interface.
* Port #4182 from Citra: "Prefix all size_t with std::"fearlessTobi2018-09-151-1/+1
|
* kernel: Eliminate kernel global stateLioncash2018-08-291-0/+3
| | | | | | | | | | | | | | | | | | | | | | As means to pave the way for getting rid of global state within core, This eliminates kernel global state by removing all globals. Instead this introduces a KernelCore class which acts as a kernel instance. This instance lives in the System class, which keeps its lifetime contained to the lifetime of the System class. This also forces the kernel types to actually interact with the main kernel instance itself instead of having transient kernel state placed all over several translation units, keeping everything together. It also has a nice consequence of making dependencies much more explicit. This also makes our initialization a tad bit more correct. Previously we were creating a kernel process before the actual kernel was initialized, which doesn't really make much sense. The KernelCore class itself follows the PImpl idiom, which allows keeping all the implementation details sealed away from everything else, which forces the use of the exposed API and allows us to avoid any unnecessary inclusions within the main kernel header.
* kernel: Move object class to its own source filesLioncash2018-08-021-2/+1
| | | | | | General moving to keep kernel object types separate from the direct kernel code. Also essentially a preliminary cleanup before eliminating global kernel state in the kernel code.
* kernel: Remove unnecessary includesLioncash2018-07-311-2/+0
| | | | | Removes unnecessary direct dependencies in some headers and also gets rid of indirect dependencies that were being relied on to be included.
* hle: Remove config_mem.h/.cppLioncash2018-07-231-1/+0
| | | | | This is just an unused hold-over from citra, so we can get rid of this to trim off an exposed global, among other things.
* hle: Remove shared_page.h/.cppLioncash2018-07-231-1/+0
| | | | This is a holdover from citra that's essentially unused.
* thread: Convert ThreadStatus into an enum classLioncash2018-07-201-6/+6
| | | | | Makes the thread status strongly typed, so implicit conversions can't happen. It also makes it easier to catch mistakes at compile time.
* thread: Add THREADSTATUS_WAIT_HLE_EVENT, remove THREADSTATUS_WAIT_ARB.bunnei2018-03-191-1/+2
|
* Kernel: Allow chaining WaitSynchronization calls inside a wakeup callback.Subv2018-01-091-4/+13
|
* wait_object: Refactor to allow waking up a single thread.bunnei2018-01-071-15/+22
|
* Merge pull request #2967 from Subv/thread_wakeup_callbacksSebastian Valle2017-09-301-7/+4
|\ | | | | Kernel/Threads: When putting a thread to wait, specify a function to execute when it is awoken
| * Kernel/Threads: When putting a thread to wait, specify a function to execute when it is awoken.Subv2017-09-281-7/+4
| | | | | | | | | | | | This change makes for a clearer (less confusing) path of execution in the scheduler, now the code to execute when a thread awakes is closer to the code that puts the thread to sleep (WaitSynch1, WaitSynchN). It also allows us to implement the special wake up behavior of ReplyAndReceive without hacking up WaitObject::WakeupAllWaitingThreads. If savestates are desired in the future, we can change this implementation to one similar to the CoreTiming event system, where we first register the callback functions at startup and assign their identifiers to the Thread callback variable instead of directly assigning a lambda to the wake up callback variable.
* | Fixed type conversion ambiguityHuw Pascoe2017-09-301-1/+1
|/
* Kernel: Move WaitObject to a separate fileYuri Kunde Schlesner2017-05-301-0/+99
Now that HandleTable doesn't directly depend on WaitObject anymore, this can be separated from the main kernel.h header.