9046d4a548
kernel: Replace usage of boost::intrusive_ptr with std::shared_ptr for 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.
2019-11-24 20:15:51 -05:00
63248f4edd
Update svc.cpp
2019-11-23 16:01:06 -05:00
6eaf7ab55f
svc: GetSystemTick should return cntpct_el0, not core ticks.
2019-11-23 15:29:15 -05:00
6a3fc5d2ff
Merge pull request #3114 from FernandoS27/cond-var
...
Kernel: Correct behavior of Condition Variables to be more similar to real hardware.
2019-11-23 13:24:39 -05:00
6e4d46908a
Merge pull request #3130 from FernandoS27/cancel-sync
...
Kernel: Correct Cancel Synchronization.
2019-11-23 13:23:23 -05:00
46bb609981
Kernel: Optimize condition variable threads management.
2019-11-21 11:13:29 -04:00
2ab41ceff4
Kernel: Correct SignalProcessWideKey
...
When the target is 0, all threads must be processed.
2019-11-21 10:46:55 -04:00
2d16507f9f
Kernel: Correct behavior of Condition Variables to be more similar to real hardware.
...
This commit ensures cond var threads act exactly as they do in the real
console. The original implementation uses an RBTree and the behavior of
cond var threads is that at the same priority level they act like a
FIFO.
2019-11-21 10:46:55 -04:00
7d16b2d2dd
Kernel: Correct Cancel Synchronization.
...
This commit corrects the behavior of cancel synchronization when the
thread is running/ready and ensures the next wait is cancelled as it's
suppose to.
2019-11-16 12:41:51 -04:00
12dc918937
kernel: Resolve sign conversion warnings
...
Uncovered a bug within Thread's SetCoreAndAffinityMask() where an
unsigned variable (ideal_core) was being compared against "< 0", which
would always be a false condition.
We can also get rid of an unused function (GetNextProcessorId) which contained a sign
mismatch warning.
2019-11-12 07:55:39 -05:00
ece5287843
kernel: readable_event: Signal only once.
2019-11-03 04:25:41 -05:00
b0ab803ce8
kernel: events: Remove ResetType::Automatic.
...
- This does not actually seem to exist in the real kernel - games reset these automatically.
# Conflicts:
# src/core/hle/service/am/applets/applets.cpp
# src/core/hle/service/filesystem/fsp_srv.cpp
2019-11-03 04:22:45 -05:00
28bb248db6
kernel: readable_event: Initialize members.
2019-11-03 04:18:39 -05:00
6c8f28813c
scheduler: Mark parameter of AskForReselectionOrMarkRedundant() as const
...
This is only compared against, so it can be made const.
2019-10-27 23:35:50 -04:00
f19c1a7cda
scheduler: Silence sign conversion warnings
2019-10-27 22:44:52 -04:00
2fb0bbff29
scheduler: Initialize class members directly where applicable
...
Reduces the overall amount of code.
2019-10-27 22:13:55 -04:00
2dc469ceba
scheduler: Amend documentation comments
...
Adjusts the formatting of a few of the comments an ensures they get
recognized as proper Doxygen comments.
2019-10-27 22:12:32 -04:00
64e652d8cb
Kernel Thread: Cleanup THREADPROCESSORID_DONT_UPDATE.
2019-10-15 11:55:30 -04:00
e28c7f5217
Kernel: Address Feedback 2
2019-10-15 11:55:28 -04:00
a3524879be
Kernel: Clang Format
2019-10-15 11:55:27 -04:00
c32520ceb7
Kernel: Reverse global accessor removal.
2019-10-15 11:55:26 -04:00
3073615dbc
Kernel: Address Feedback.
2019-10-15 11:55:25 -04:00
25f8606a6d
Kernel Scheduler: Make sure the global scheduler shutdowns correctly.
2019-10-15 11:55:24 -04:00
b3c1deba49
Kernel_Thread: Eliminate most global accessors.
2019-10-15 11:55:23 -04:00
0b72b34d89
KernelSVC: Assert that condition variable address is aligned to 4 bytes.
2019-10-15 11:55:22 -04:00
96b1b144af
Kernel: Correct Paused scheduling
2019-10-15 11:55:21 -04:00
1c6a11ab14
Kernel: Corrections to Wait Objects clearing in which a thread could still be signalled after a timeout or a cancel.
2019-10-15 11:55:20 -04:00
27d571c084
Kernel: Correct redundant yields to only advance time forward.
2019-10-15 11:55:20 -04:00
7176857177
Kernel: Corrections to ModifyByWaitingCountAndSignalToAddressIfEqual
2019-10-15 11:55:19 -04:00
44e09e5f21
Kernel: Correct Results in Condition Variables and Mutexes
2019-10-15 11:55:18 -04:00
1ec1e81373
Kernel: Clang Format
2019-10-15 11:55:17 -04:00
e05a8c2385
Kernel: Remove global system accessor from WaitObject
2019-10-15 11:55:16 -04:00
0cf26cee59
Scheduler: Implement Yield Count and Core migration on Thread Preemption.
2019-10-15 11:55:16 -04:00
2d382de6fa
Scheduler: Corrections to YieldAndBalanceLoad and Yield bombing protection.
2019-10-15 11:55:15 -04:00
b49c0dab87
Kernel: Initial implementation of thread preemption.
2019-10-15 11:55:14 -04:00
103f3a2fe5
Scheduler: Add protections for Yield bombing
...
In case of redundant yields, the scheduler will now idle the core for
it's timeslice, in order to avoid continuously yielding the same thing
over and over.
2019-10-15 11:55:13 -04:00
82218c925a
Kernel: Style and Corrections
2019-10-15 11:55:12 -04:00
fcc6b34fff
Correct PrepareReschedule
2019-10-15 11:55:12 -04:00
3a94e7ea33
Comment and reorganize the scheduler
2019-10-15 11:55:11 -04:00
b5d1e44782
Add PrepareReschedule where required.
2019-10-15 11:55:10 -04:00
b8b7ebcece
Correct compiling errors and addapt to the new interface.
2019-10-15 11:55:09 -04:00
9031502974
Correct Supervisor Calls to work with the new scheduler,
2019-10-15 11:55:08 -04:00
57a71f899a
Add interfacing to the Global Scheduler
2019-10-15 11:55:07 -04:00
a1ac0c6cb4
Addapt thread class to the new Scheduler
2019-10-15 11:55:06 -04:00
b164d8ee53
Implement a new Core Scheduler
2019-10-15 11:55:04 -04:00
f1382cf0e7
core: Remove Core::CurrentProcess()
...
This only encourages the use of the global system instance (which will
be phased out long-term). Instead, we use the direct system function
call directly to remove the appealing but discouraged short-hand.
2019-10-06 13:53:12 -04:00
f763e23083
kernel/vm_manager: Correct doxygen comment parameter tags for MapPhysicalMemory/UnmapPhysicalMemory
...
Corrects the parameter names within the doxygen comments so that they
resolve properly.
2019-09-04 19:58:55 -04:00
b0da7e4262
kernel/vm_manager: Move variables closer to usage spots in MapPhysicalMemory/UnmapPhysicalMemory
...
Narrows the scope of variables down to where they're only necessary.
2019-09-04 19:58:52 -04:00
96cc9a9279
kernel/vm_manager: Correct behavior in failure case of UnmapPhysicalMemory()
...
If an unmapping operation fails, we shouldn't be decrementing the amount
of memory mapped and returning that the operation was successful. We
should actually be returning the error code in this case.
2019-08-29 19:29:43 -04:00
56c6f767ae
kernel/vm_manager: Reserve memory ahead of time for slow path in MergeAdjacentVMA
...
Avoids potentially expensive (depending on the size of the memory block)
allocations by reserving the necessary memory before performing both
insertions. This avoids scenarios where the second insert may cause a
reallocation to occur.
2019-08-29 19:29:43 -04:00