bunnei
d49e29d866
hle: kernel: Move single core "phantom mode" out of KThread.
- This is a workaround that does not belong in a kernel primitive.
5 years ago
bunnei
e74f682506
hle: kernel: KThread: Remove thread types that do not exist.
5 years ago
bunnei
3d70b4a4ea
core: hle: kernel: Rename Thread to KThread.
5 years ago
bunnei
e89be18c79
hle: kernel: thread: Preserve thread wait reason for debugging only.
- This is decoupled from core functionality and used for debugging only.
5 years ago
bunnei
818ff3901a
hle: kernel: Rename thread "status" to "state".
5 years ago
bunnei
9744afa8b1
hle: kernel: thread: Replace ThreadStatus/ThreadSchedStatus with a single ThreadState.
- This is how the real kernel works, and is more accurate and simpler.
5 years ago
bunnei
2feb4d56e9
core: hle: kernel: Update KSynchronizationObject.
5 years ago
bunnei
407d3b7374
hle: kernel: Manage service threads on another thread.
- This is to allow service threads to defer destruction of themselves.
5 years ago
bunnei
127bb064f7
hle: kernel: Manage host thread IDs using TLS.
- Avoids the need to have a large map of host to guest thread IDs.
5 years ago
bunnei
67051cf10c
hle: kernel: Move ServiceThread ownership to KernelCore.
- Fixes a circular dependency which prevented threads from being released on shutdown.
5 years ago
bunnei
5d4fa58af2
core: hle: kernel: Clear process list on boot.
5 years ago
bunnei
838c266e82
core: kernel: Clear process list earlier.
5 years ago
bunnei
56be5d7ba9
core: hle: server_session: Use separate threads for each service connection.
5 years ago
bunnei
de522657dd
hle: kernel: Migrate to KScopedSchedulerLock.
5 years ago
bunnei
039844bbb9
hle: kernel: Rewrite scheduler implementation based on Mesopshere.
5 years ago
bunnei
a5b73195c9
core: arm: Implement InvalidateCacheRange for CPU cache invalidation.
5 years ago
bunnei
b92d8acd2f
common: fiber: Use boost::context instead of native fibers on Windows.
5 years ago
bunnei
aaffe73f47
hle: kernel: multicore: Replace n-JITs impl. with 4 JITs.
5 years ago
ReinUsesLisp
1a1ca86eb5
hle/kernel: Remove unused registered_core_threads to fix data races
This member was only used on asserts and it triggered data races.
Remove it to fix them.
5 years ago
bunnei
deb3536936
Revert "core: Fix clang build"
5 years ago
Lioncash
1367e8fb75
kernel: Fix build with recent compiler flag changes
This slipped through the cracks due to another change being merged
before the compiler flag changes.
5 years ago
Lioncash
18636013c9
core: Fix clang build
Recent changes to the build system that made more warnings be flagged as
errors caused building via clang to break.
Fixes #4795
5 years ago
ReinUsesLisp
a13623c68b
kernel: Implement host thread register methods without locking
Locks on GetCurrentHostThreadID were causing performance issues
according to Visual Studio's profiler. It was consuming twice the time
as arm_interface.Run(). The cost was not in the function itself but in
the lockinig it required.
Reimplement these functions using atomics and static storage instead of
an unordered_map. This is a side effect to avoid locking and using linked
lists for reads.
Replace unordered_map with a linear search.
5 years ago
ReinUsesLisp
6bf10ea8cf
hle/kernel: Fix data race in GetCurrentHostThreadID
As reported by tsan, host_thread_ids could be read while
any of the RegisterHostThread variants were called.
To fix this, lock the register mutex when yuzu is running in multicore
mode and GetCurrentHostThreadID is called.
5 years ago
Lioncash
7decda6bc2
core_timing: Make use of uintptr_t to represent user_data
Makes the interface future-proofed for supporting other platforms in the event we ever support platforms with differing pointer sizes. This way, we have a type in place that is always guaranteed to be able to represent a pointer exactly.
5 years ago
Lioncash
02ff5e8d81
cpu_manager: Mark function getters as static
All these do are return std::function instances of static functions, so
these can be used without an instance of the CPU manager.
6 years ago
Lioncash
56054fe86d
core_timing: Make TimedCallback take std::chrono::nanoseconds
Enforces our desired time units directly with a concrete type.
6 years ago
Lioncash
9e113a2b67
core_timing: Make use of std::chrono with ScheduleEvent
6 years ago
Lioncash
9346d1e257
kernel/handle_table: Remove usages of the global system instance
Removes even more usages of the global system instance, trimming away
more dependencies on global variables and making them explicit in the
interface.
6 years ago
Fernando Sahmkow
94a51e6b21
Core/Common: Address Feedback.
6 years ago
Fernando Sahmkow
6f0c873d48
General: Cleanup legacy code.
6 years ago
Fernando Sahmkow
e95444c05a
Kernel/svcBreak: Implement CacheInvalidation for Singlecore and correct svcBreak.
6 years ago
Fernando Sahmkow
21235cdab1
Scheduler: Correct Reload/Unload
6 years ago
Fernando Sahmkow
db60ca2704
General: Move ARM_Interface into Threads.
6 years ago
Fernando Sahmkow
7b3b33a2e6
Core: Refactor ARM Interface.
6 years ago
Fernando Sahmkow
287ea2d3b4
SingleCore: Move Host Timing from a sepparate thread to main cpu thread.
6 years ago
Fernando Sahmkow
b121009e03
General: Fix microprofile on dynarmic/svc, fix wait tree showing which threads were running.
6 years ago
Fernando Sahmkow
cb974be3ce
General: Fix Stop function
6 years ago
Fernando Sahmkow
0963ff1ae9
Kernel: Preempt Single core on redudant yields.
6 years ago
Fernando Sahmkow
cc2f7dcd08
General: Initial Setup for Single Core.
6 years ago
Fernando Sahmkow
24bc1f020a
Kernel: Fixes, corrections and asserts to scheduler and different svcs.
6 years ago
Fernando Sahmkow
7ee76003ad
General: Recover Prometheus project from harddrive failure
This commit: Implements CPU Interrupts, Replaces Cycle Timing for Host
Timing, Reworks the Kernel's Scheduler, Introduce Idle State and
Suspended State, Recreates the bootmanager, Initializes Multicore
system.
6 years ago
bunnei
15e751e36c
kernel: resource_limit: Reserve physical memory.
6 years ago
bunnei
76a040f50d
kernel: Initialize memory layout for new VMM.
6 years ago
Lioncash
6ea751d910
CMakeLists: Make -Wreorder a compile-time error
This can result in silent logic bugs within code, and given the amount
of times these kind of warnings are caused, they should be flagged at
compile-time so no new code is submitted with them.
6 years ago
bunnei
048ac77adc
core: Implement separate A32/A64 ARM interfaces.
6 years ago
Fernando Sahmkow
78f01601d0
Kernel: Address Feedback.
6 years ago
Fernando Sahmkow
fe53ac3e33
Kernel: Implement Time Manager.
6 years ago
Fernando Sahmkow
e6cc0a48e0
Kernel: Rename ThreadCallbackHandleTable and Setup Thread Ids on Kernel.
6 years ago
Fernando Sahmkow
f5da504663
Kernel: Make global scheduler depend on KernelCore
6 years ago