aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/address_arbiter.cpp
Commit message (Collapse)AuthorAgeFilesLines
* core: hle: Integrate new KConditionVariable and KAddressArbiter implementations.bunnei2021-01-111-317/+0
|
* hle: kernel: thread: Replace ThreadStatus/ThreadSchedStatus with a single ↵bunnei2021-01-111-2/+2
| | | | | | ThreadState. - This is how the real kernel works, and is more accurate and simpler.
* core: hle: kernel: Update KSynchronizationObject.bunnei2021-01-111-5/+5
|
* hle: kernel: Migrate to KScopedSchedulerLock.bunnei2020-12-061-5/+5
|
* hle: kernel: Separate KScopedSchedulerLockAndSleep from k_scheduler.bunnei2020-12-061-2/+3
|
* hle: kernel: Rewrite scheduler implementation based on Mesopshere.bunnei2020-12-061-3/+3
|
* hle: kernel: AddressArbiter: Remove unused code.bunnei2020-11-291-6/+0
|
* Revert "core: Fix clang build"bunnei2020-10-201-2/+2
|
* core: Fix clang buildLioncash2020-10-171-2/+2
| | | | | | | Recent changes to the build system that made more warnings be flagged as errors caused building via clang to break. Fixes #4795
* address_arbiter: Resolve sign conversion warningLioncash2020-08-051-1/+1
| | | | Makes our type conversion explicit.
* kernel: Remove unused variablesLioncash2020-07-161-1/+0
| | | | Resolves some compiler warnings in the Linux build.
* ARM: Addapt to new Exclusive Monitor Interface.Fernando Sahmkow2020-06-271-6/+3
|
* Kernel: Fixes, corrections and asserts to scheduler and different svcs.Fernando Sahmkow2020-06-271-15/+12
|
* ARM/Memory: Correct Exclusive Monitor and Implement Exclusive Memory Writes.Fernando Sahmkow2020-06-271-3/+3
|
* SVC: Correct svcWaitForAddress and svcSignalToAddress.Fernando Sahmkow2020-06-271-62/+152
|
* address_arbiter: Collapse loops in InsertThread() and RemoveThread()Lioncash2020-02-121-19/+17
| | | | | Same behavior, but without the need to explicitly loop through everything manually.
* address_arbiter: Simplify GetThreadsWaitingOnAddress()Lioncash2020-02-121-9/+8
| | | | | Simplifies the overall function and also allows for it to become a const-qualified member function.
* Core: Refactor CpuCoreManager to CpuManager and Cpu to Core Manager.Fernando Sahmkow2020-01-261-1/+0
| | | | This commit instends on better naming the new purpose of this classes.
* Kernel: Correct behavior of Address Arbiter threads. (#3165)Fernando Sahmkow2019-12-111-20/+46
| | | | | | | | | | | * Kernel: Correct behavior of Address Arbiter threads. This corrects arbitration threads to behave just like in Horizon OS. They are added into a container and released according to what priority they had when added. Horizon OS does not reorder them if their priority changes. * Kernel: Address Feedback.
* kernel: Remove unnecessary includesLioncash2019-12-071-2/+0
| | | | | | Over the course of the changes to the kernel code, a few includes are no longer necessary, particularly with the change over to std::shared_ptr from Boost's intrusive_ptr.
* core/memory: Migrate over Write{8, 16, 32, 64, Block} to the Memory classLioncash2019-11-261-3/+3
| | | | | | | | | The Write functions are used slightly less than the Read functions, which make these a bit nicer to move over. The only adjustments we really need to make here are to Dynarmic's exclusive monitor instance. We need to keep a reference to the currently active memory instance to perform exclusive read/write operations.
* core/memory: Migrate over Read{8, 16, 32, 64, Block} to the Memory classLioncash2019-11-261-9/+19
| | | | | | | | | | | | | | With all of the trivial parts of the memory interface moved over, we can get right into moving over the bits that are used. Note that this does require the use of GetInstance from the global system instance to be used within hle_ipc.cpp and the gdbstub. This is fine for the time being, as they both already rely on the global system instance in other functions. These will be removed in a change directed at both of these respectively. For now, it's sufficient, as it still accomplishes the goal of de-globalizing the memory code.
* core/memory: Migrate over address checking functions to the new Memory classLioncash2019-11-261-4/+4
| | | | | | | | | A fairly straightforward migration. These member functions can just be mostly moved verbatim with minor changes. We already have the necessary plumbing in places that they're used. IsKernelVirtualAddress() can remain a non-member function, since it doesn't rely on class state in any form.
* kernel: Replace usage of boost::intrusive_ptr with std::shared_ptr for ↵bunnei2019-11-241-8/+10
| | | | | | | | kernel objects. (#3154) * kernel: Replace usage of boost::intrusive_ptr with std::shared_ptr for kernel objects. - See https://github.com/citra-emu/citra/pull/4710 for details.
* Kernel: Corrections to ModifyByWaitingCountAndSignalToAddressIfEqualFernando Sahmkow2019-10-151-5/+13
|
* Kernel: Style and CorrectionsFernando Sahmkow2019-10-151-1/+0
|
* Correct PrepareRescheduleFernando Sahmkow2019-10-151-3/+2
|
* Add PrepareReschedule where required.Fernando Sahmkow2019-10-151-16/+12
|
* Small fixes to address_arbiter to better match the IDB.Fernando Sahmkow2019-03-191-3/+3
|
* kernel/svc: Move address arbiter signaling behind a unified API functionLioncash2019-03-071-2/+16
| | | | | | | Similar to how WaitForAddress was isolated to its own function, we can also move the necessary conditional checking into the address arbiter class itself, allowing us to hide the implementation details of it from public use.
* kernel/svc: Move address arbiter waiting behind a unified API functionLioncash2019-03-071-3/+17
| | | | | | Rather than let the service call itself work out which function is the proper one to call, we can make that a behavior of the arbiter itself, so we don't need to directly expose those implementation details.
* kernel/address_arbiter: Pass in system instance to constructorLioncash2019-03-051-7/+7
| | | | | Allows getting rid of reliance on the global accessor functions and instead operating on the provided system instance.
* kernel/address_arbiter: Minor tidying upLioncash2019-03-051-18/+18
| | | | | - Invert conditions into guard clases where applicable. - Mark std::vector parameter of WakeThreads as const
* kernel/address_arbiter: Convert the address arbiter into a classLioncash2019-03-051-59/+58
| | | | | | Places all of the functions for address arbiter operation into a class. This will be necessary for future deglobalizing efforts related to both the memory and system itself.
* address_arbiter: Use nested namespaces where applicableLioncash2019-02-161-4/+2
| | | | | | A fairly trivial change. Other sections of the codebase use nested namespaces instead of separate namespaces here. This one must have just been overlooked.
* core_cpu: Make Cpu scheduler instances unique_ptrs instead of shared_ptrsLioncash2018-10-151-1/+1
|
* kernel/thread: Make all instance variables privateLioncash2018-10-041-10/+10
| | | | | | | | | | | | | | | | | | | | 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-12/+13
|
* core/core: Replace includes with forward declarations where applicableLioncash2018-08-311-0/+2
| | | | | | | | | | | The follow-up to 88597535d629ea9a265f8bf0f00a9ce4dd5dc218, which replaces most of the includes in the core header with forward declarations. This makes it so that if any of the headers the core header was previously including change, then no one will need to rebuild the bulk of the core, due to core.h being quite a prevalent inclusion. This should make turnaround for changes much faster for developers.
* address_arbiter: Return by value from GetThreadsWaitingOnAddress()Lioncash2018-08-051-15/+15
| | | | | In all cases the vector being supplied is empty, so we can just return by value in these instances.
* kernel: Move object class to its own source filesLioncash2018-08-011-1/+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/+4
| | | | | Removes unnecessary direct dependencies in some headers and also gets rid of indirect dependencies that were being relied on to be included.
* thread: Convert ThreadStatus into an enum classLioncash2018-07-191-2/+2
| | | | | Makes the thread status strongly typed, so implicit conversions can't happen. It also makes it easier to catch mistakes at compile time.
* address_arbiter: Correct assignment within an assertion statement in ↵Lioncash2018-07-181-1/+1
| | | | | | | | WakeThreads() This was introduced within d12af72c8f15522d0caa5ae8a7ca80403b054b48, and considering there's no comment indicating that this is intentional, this is very likely a bug.
* Kernel/Arbiter: Fix bug in WaitIfLessThanMichael Scire2018-07-161-2/+4
|
* Kernel/Arbiters: Fix casts, cleanup comments/magic numbersMichael Scire2018-06-221-13/+12
|
* Run clang-format on PR.Michael Scire2018-06-211-156/+157
|
* Kernel/Arbiters: HLE is atomic, adjust code to reflect that.Michael Scire2018-06-211-36/+13
|
* Kernel/Arbiters: Clear WaitAddress in SignalToAddressMichael Scire2018-06-211-0/+1
|
* Kernel/Arbiters: Mostly implement SignalToAddressMichael Scire2018-06-211-6/+104
|