Subv
933df2606a
Kernel: Removed the priority boost code for starved threads.
After hwtesting and reverse engineering the kernel, it was found that the CTROS scheduler performs no priority boosting for threads like this, although some other forms of scheduling priority-starved threads might take place.
For example, it was found that hardware interrupts might cause low-priority threads to run if the CPU is preempted in the middle of an SVC handler that deschedules the current (high priority) thread before scheduling it again.
9 years ago
Subv
e52ca85711
Kernel: Implemented Pulse event and timers.
Closes #1904
9 years ago
Subv
4251eb26ec
Kernel/Semaphore: Fixed a regression in semaphore waits.
The regression was caused by a missing check in #2260 .
The new behavior is consistent with the real kernel.
9 years ago
Subv
dda4ec93be
Kernel: Add some asserts to enforce the invariants in the scheduler.
9 years ago
Subv
7f1dca8cd2
Kernel: Remove a thread from all of its waiting objects' waiting_threads list when it is awoken.
This fixes a potential bug where threads would not get removed from said list if they awoke after waiting with WaitSynchronizationN with wait_all = false
9 years ago
Subv
fd95b6ee26
Kernel: Remove Thread::wait_objects_index and use wait_objects to hold all the objects that a thread is waiting on.
9 years ago
Subv
cef5f45de2
Kernel: Use different thread statuses when a thread calls WaitSynchronization1 and WaitSynchronizationN with wait_all = true.
This commit removes the overly general THREADSTATUS_WAIT_SYNCH and replaces it with two more granular statuses:
THREADSTATUS_WAIT_SYNCH_ANY when a thread waits on objects via WaitSynchronization1 or WaitSynchronizationN with wait_all = false.
THREADSTATUS_WAIT_SYNCH_ALL when a thread waits on objects via WaitSynchronizationN with wait_all = true.
9 years ago
Subv
d3ff5b91e1
Kernel/Mutex: Propagate thread priority changes to other threads inheriting the priority via mutexes
9 years ago
Subv
b6a0355568
Kernel/Mutex: Update a mutex priority when a thread stops waiting on it.
9 years ago
Subv
7abf185390
Kernel/Mutex: Implemented priority inheritance.
The implementation is based on reverse engineering of the 3DS's kernel.
A mutex holder's priority will be temporarily boosted to the best priority among any threads that want to acquire any of its held mutexes.
When the holder releases the mutex, it's priority will be boosted to the best priority among the threads that want to acquire any of its remaining held mutexes.
9 years ago
Subv
e6a7723f2f
Kernel: Object ShouldWait and Acquire calls now take a thread as a parameter.
This will be useful when implementing mutex priority inheritance.
9 years ago
Subv
38a90882a4
Kernel/Synch: Do not attempt a reschedule on every syscall.
Not all syscalls should cause reschedules, this commit attempts to remedy that, however, it still does not cover all cases.
9 years ago
Jonathan Hao
c18cb1b192
Fix some warnings ( #2399 )
9 years ago
Lectem
ee6e88fdb5
fix comments alignment
9 years ago
mailwl
f2985f7080
Service/NFC: stub GetTagInRangeEvent
Fix Fatal Error in Mini-Mario & Friends - amiibo Challenge
9 years ago
mailwl
c6f4b93f2e
Service/AC: add ac:i service
9 years ago
wwylele
f927beb5e2
Core: remove unused hle.cpp
9 years ago
Lectem
f91c51467a
move Pop methods out of class body
9 years ago
Lectem
8baae9d982
IPC helpers example
9 years ago
Lectem
8f2b642415
IPC helpers
9 years ago
MerryMage
64f98f4d0f
core: Move emu_window and key_map into core
* Removes circular dependences (common should not depend on core)
9 years ago
mailwl
069a88dad7
Service/NWM: add nwm services
9 years ago
bunnei
8b1e269e58
ThreadContext: Move from "core" to "arm_interface".
9 years ago
bunnei
e26fbfd1d7
core: Replace "AppCore" nomenclature with just "CPU".
9 years ago
bunnei
5ac5cbeab7
Address clang-format issues.
9 years ago
bunnei
4fc8b8229e
core: Remove HLE module, consolidate code & various cleanups.
9 years ago
bunnei
232ef55c1a
core: Consolidate core and system state, remove system module & cleanups.
9 years ago
wwylele
5728e42634
Thread: remove the thread from the thread list when exiting
9 years ago
wwylele
4c9b80cee3
Kernel: remove object's waiting thread if it is dead
9 years ago
wwylele
a7cd452ea1
FS: fix debug build from #2249
9 years ago
Lioncash
3faa675d6b
hid: Get rid of a double -> float truncation warning
float literals need to have the 'f' prefix.
9 years ago
Lioncash
2f3c1bdfb4
core: Add missing #pragma once directives where applicable
9 years ago
Lioncash
d467b5ce4f
act: Fix docstring typo
These aren't the AM services.
9 years ago
mailwl
7f27be1521
Service/CECD: Add cecd:ndm service
9 years ago
Subv
016307ae65
Fixed the codestyle to match our clang-format rules.
9 years ago
Subv
5b1edc6ae7
Fixed the codestyle to match our clang-format rules.
9 years ago
mailwl
5dea1faedd
Service/ACT: move ACT services to folder
9 years ago
JamePeng
ac2ed18a3b
Minor amendment of GSP_GPU::ImportDisplayCaptureInfo code
9 years ago
mailwl
1238e48c58
csnd:SND reformat source code
9 years ago
mailwl
e53cd12c42
APT::GetStartupArgument: force clear startup argument
9 years ago
Lioncash
963aedd8cc
Add all services to the Service namespace
Previously there was a split where some of the services were in the
Service namespace and others were not.
9 years ago
Subv
406907d570
Properly remove a thread from its wait_objects' waitlist when it is awoken by a timeout.
9 years ago
Subv
ebbb55ec8f
Moved the HLE command buffer translation task to ServerSession instead of the HLE handler superclass.
9 years ago
Subv
deb83c9fc5
Kernel/IPC: Small codestyle cleanup
9 years ago
Subv
17b29d8865
WaitSynch: Removed unused variables and reduced SharedPtr copies.
Define a variable with the value of the sync timeout error code.
Use a boost::flat_map instead of an unordered_map to hold the equivalence of objects and wait indices in a WaitSynchN call.
9 years ago
Lioncash
a2d69adad1
service: Add cfg:nor service
9 years ago
Lioncash
934b8ffcf8
ptm: Use boolean instead of integral value
The third parameter of Write is actually a bool type, not an int.
9 years ago
Lioncash
823d58ac9b
service: Drop '_Interface' from cfg service names
9 years ago
Subv
386112da32
Added a framework for partially handling Session disconnections.
Further implementation will happen in a future commit.
Fixes a regression.
9 years ago
Subv
f9bcf89510
Use std::move where appropriate.
9 years ago