aboutsummaryrefslogtreecommitdiff
path: root/src/yuzu/debugger/wait_tree.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Merge pull request #2492 from lioncash/debuggerHexagon122019-05-191-14/+17
|\ | | | | yuzu/debugger: Specify string conversions explicitly
| * yuzu/debugger/wait_tree: Specify string conversions explicitlyLioncash2019-05-191-14/+17
| | | | | | | | | | Allows compiling the wait tree widget with implicit string conversions disabled.
* | core/kernel/object: Rename ResetType enum membersLioncash2019-05-181-4/+4
|/ | | | | | | | | | | | | Renames the members to more accurately indicate what they signify. "OneShot" and "Sticky" are kind of ambiguous identifiers for the reset types, and can be kind of misleading. Automatic and Manual communicate the kind of reset type in a clearer manner. Either the event is automatically reset, or it isn't and must be manually cleared. The "OneShot" and "Sticky" terminology is just a hold-over from Citra where the kernel had a third type of event reset type known as "Pulse". Given the Switch kernel only has two forms of event reset types, we don't need to keep the old terminology around anymore.
* kernel/thread: Unify wait synchronization typesLioncash2019-04-171-7/+4
| | | | | | | | | | | | | | | | This is a holdover from Citra, where the 3DS has both WaitSynchronization1 and WaitSynchronizationN. The switch only has one form of wait synchronizing (literally WaitSynchonization). This allows us to throw out code that doesn't apply at all to the Switch kernel. Because of this unnecessary dichotomy within the wait synchronization utilities, we were also neglecting to properly handle waiting on multiple objects. While we're at it, we can also scrub out any lingering references to WaitSynchronization1/WaitSynchronizationN in comments, and change them to WaitSynchronization (or remove them if the mention no longer applies).
* Add CondVar Thread State.Fernando Sahmkow2019-03-191-0/+4
|
* yuzu/debugger/wait_tree: Remove use of global CurrentProcess accessorLioncash2019-03-051-4/+4
| | | | | | We already have the thread instance that was created under the current process, so we can just pass the handle table of it along to retrieve the owner of the mutex.
* kernel: Remove the Timer classLioncash2019-01-311-20/+0
| | | | | | | | | | | | A holdover from citra, the Horizon kernel on the switch has no prominent kernel object that functions as a timer. At least not to the degree of sophistication that this class provided. As such, this can be removed entirely. This class also wasn't used at all in any meaningful way within the core, so this was just code sitting around doing nothing. This also allows removing a few things from the main KernelCore class that allows it to use slightly less resources overall (though very minor and not anything really noticeable).
* Removed pulse event typeDavid Marcec2019-01-041-2/+0
| | | | Pulse is considered a hack and nothing should be using it. We should completely remove it
* kernel: Rename 'default' CPU core to 'ideal' coreLioncash2018-12-271-2/+2
| | | | | | This makes the naming more closely match its meaning. It's just a preferred core, not a required default core. This also makes the usages of this term consistent across the thread and process implementations.
* Merge pull request #1849 from encounter/svcSetThreadActivitybunnei2018-12-261-0/+5
|\ | | | | svc: Implement SetThreadActivity (thread suspension)
| * debugger: Set paused thread colorLuke Street2018-12-041-1/+2
| |
| * svc: Implement SetThreadActivity (thread suspension)Luke Street2018-12-041-0/+4
| |
* | yuzu/wait_tree: Pass QString by value and std::move in the initializer list ↵Lioncash2018-12-051-1/+1
| | | | | | | | | | | | for WaitTreeText Just a trivial modernization that potentially avoids copying strings in certain scenarios.
* | kernel/object: Amend handle types to distinguish between readable and ↵Lioncash2018-12-041-1/+1
|/ | | | | | | | | | | | | writable events Two kernel object should absolutely never have the same handle ID type. This can cause incorrect behavior when it comes to retrieving object types from the handle table. In this case it allows converting a WritableEvent into a ReadableEvent and vice-versa, which is undefined behavior, since the object types are not the same. This also corrects ClearEvent() to check both kernel types like the kernel itself does.
* kernel/event: Reference ReadableEvent from WritableEventZach Hilman2018-11-291-4/+4
|
* core: Port all current usages of Event to Readable/WritableEventZach Hilman2018-11-291-4/+5
|
* kernel/process: Make the handle table per-processLioncash2018-10-201-2/+2
| | | | | | | | In the kernel, there isn't a singular handle table that everything gets tossed into or used, rather, each process gets its own handle table that it uses. This currently isn't an issue for us, since we only execute one process at the moment, but we may as well get this out of the way so it's not a headache later on.
* core_cpu: Make Cpu scheduler instances unique_ptrs instead of shared_ptrsLioncash2018-10-151-4/+5
|
* kernel/thread: Make all instance variables privateLioncash2018-10-041-21/+26
| | | | | | | | | | | | | | | | | | | | 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.
* arm_interface: Replace kernel vm_manager include with a forward declarationLioncash2018-09-201-0/+1
| | | | | | Avoids an unnecessary inclusion and also uncovers three places where indirect inclusions were relied upon, which allows us to also resolve those.
* Port #4182 from Citra: "Prefix all size_t with std::"fearlessTobi2018-09-151-1/+1
|
* kernel/thread: Include thread-related enums within the kernel namespaceLioncash2018-09-131-29/+29
| | | | | | Previously, these were sitting outside of the Kernel namespace, which doesn't really make sense, given they're related to the Thread class which is within the Kernel namespace.
* core/core: Replace includes with forward declarations where applicableLioncash2018-08-311-0/+20
| | | | | | | | | | | 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.
* kernel: Eliminate kernel global stateLioncash2018-08-281-1/+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.
* Merge pull request #942 from lioncash/defaultbunnei2018-08-061-1/+1
|\ | | | | qt: Minor cleanup-related changes
| * qt: Default destructors where applicableLioncash2018-08-061-1/+1
| | | | | | | | | | Makes code consistent with our style of defaulting special member functions where applicable.
* | kernel/event: Make data members privateLioncash2018-08-061-1/+1
|/ | | | | Instead we can simply provide accessors to the required data instead of giving external read/write access to the variables directly.
* kernel/timer: Make data members private where applicableLioncash2018-07-261-3/+3
| | | | | Instead, we can just expose functions that return the queryable state instead of letting anything modify it.
* wait_tree: Add missing switch case for WaitTreeThread::GetText()Lioncash2018-07-251-0/+4
| | | | We were missing the enum entry for WaitIPC
* wait_tree: Silence warning about all code paths not returning a valueLioncash2018-07-241-0/+3
| | | | | If code execution hits this spot, something has gone very wrong, so mark the path as unreachable. This silences a warning on MSVC.
* thread: Convert ThreadStatus into an enum classLioncash2018-07-191-22/+22
| | | | | Makes the thread status strongly typed, so implicit conversions can't happen. It also makes it easier to catch mistakes at compile time.
* Kernel/Arbiters: Mostly implement SignalToAddressMichael Scire2018-06-211-1/+1
|
* Kernel/Arbiters: Implement WaitForAddressMichael Scire2018-06-211-0/+4
|
* Qt/WaitTree: Display the callstack for each thread in the wait tree widget.Subv2018-05-191-0/+26
|
* thread: Rename mask to affinity_masks.bunnei2018-05-101-1/+2
|
* wait_tree: Add ideal core and affinity mask.bunnei2018-05-101-0/+2
|
* wait_tree: Show all threads on all schedulers.bunnei2018-05-101-6/+14
|
* core: Implement multicore support.bunnei2018-05-101-1/+1
|
* Qt: Update the WaitTree widget to show info about the current mutex of each ↵Subv2018-04-201-53/+33
| | | | thread.
* thread: Add THREADSTATUS_WAIT_HLE_EVENT, remove THREADSTATUS_WAIT_ARB.bunnei2018-03-181-3/+3
|
* kernel: Use Scheduler class for threading.bunnei2018-02-181-1/+2
|
* debugger: Fix wait_tree crash.bunnei2018-02-141-1/+1
|
* Remove gpu debugger and get yuzu qt to compileJames Rowe2018-01-121-2/+2
|
* Massive removal of unused modulesJames Rowe2018-01-121-0/+417