8634b8cb83
Threading: Reworked the way our scheduler works.
...
Threads will now be awakened when the objects they're waiting on are signaled, instead of repeating the WaitSynchronization call every now and then.
The scheduler is now called once after every SVC call, and once after a thread is awakened from sleep by its timeout callback.
This new implementation is based off reverse-engineering of the real kernel.
See https://gist.github.com/Subv/02f29bd9f1e5deb7aceea1e8f019c8f4 for a more detailed description of how the real kernel handles rescheduling.
2016-12-03 22:38:14 -05:00
4ab8692475
Kernel/Events: Log an error when trying to create Pulse events and timers.
...
Related to #1904
2016-11-19 14:00:08 -05:00
84fbbe2629
Use negative priorities to avoid special-casing the self-include
2016-09-21 00:15:56 -07:00
ebdae19fd2
Remove empty newlines in #include blocks.
...
This makes clang-format useful on those.
Also add a bunch of forgotten transitive includes, which otherwise
prevented compilation.
2016-09-21 11:15:47 +09:00
396a8d91a4
Manually tweak source formatting and then re-run clang-format
2016-09-18 21:14:25 -07:00
dc8479928c
Sources: Run clang-format on everything.
2016-09-18 09:38:01 +09:00
12e92f17de
svc: Make ResetType an enum class
2016-03-12 15:06:31 -05:00
6cccc36505
HLE/Timers: Reset OneShot timers when they are acquired instead of when they're triggered.
...
Closes #1139
2015-12-29 20:35:25 -05:00
751fbfdcc3
general: Silence some warnings when using clang
2015-09-16 08:51:53 -04:00
b1503b2020
Remove every trailing whitespace from the project (but externals).
2015-05-29 21:59:29 +01:00
0b7d2941cf
Kernel: Move reschedules from SVCs to actual mechanisms that reschedule.
2015-05-20 18:05:47 -04:00
e1fbac3ca1
Common: Remove common.h
2015-05-07 15:45:22 -03:00
c7dc799e19
Kernel: Properly initialize and shutdown all modules.
2015-05-01 18:27:03 -04:00
0d69b2f7bd
Kernel: Use the correct format string for u64 hex.
2015-04-14 21:18:31 +02:00
8e2b248e05
Build: Fixed some warnings
2015-02-12 09:25:35 -05:00
ef24e72b26
Asserts: break/crash program, fit to style guide; log.h->assert.h
...
Involves making asserts use printf instead of the log functions (log functions are asynchronous and, as such, the log won't be printed in time)
As such, the log type argument was removed (printf obviously can't use it, and it's made obsolete by the file and line printing)
Also removed some GEKKO cruft.
2015-02-10 18:30:31 -08:00
88a4a808c6
Kernel: Stop creating useless Handles during object creation
...
They're finally unnecessary, and will stop cluttering the application's
handle table.
2015-02-02 15:37:09 -02:00
7725256f64
Explicitly instantiate constructors/destructors for Kernel objects
...
This should speed up compile times a bit, as well as enable more liberal
use of forward declarations. (Due to SharedPtr not trying to emit the
destructor anymore.)
2015-02-02 15:37:07 -02:00
a9b86db3cf
Kernel: Use separate Handle tables for CoreTiming userdata
...
This is to support the removal of GetHandle soon
2015-02-02 15:37:03 -02:00
ec9c773251
Kernel: Remove previous scheduled event when a Timer is re-Set
2015-02-02 15:37:02 -02:00
ad80ff1e32
Kernel: Convert Timer to (mostly) not use Handles
2015-01-30 11:47:07 -02:00
9a345de2bd
Kernel: Remove useless/duplicated comments; mark functions static
2015-01-30 11:47:01 -02:00
f09806aed2
Kernel: Renamed some functions for clarity.
...
- ReleaseNextThread->WakeupNextThread
- ReleaseAllWaitingThreads->WakeupAllWaitingThreads.
2015-01-21 20:48:30 -05:00
15b6a4d9ad
Kernel: Changed "ShouldWait" to return bool and "Acquire" to return void.
2015-01-21 20:47:49 -05:00
c68eb15695
WaitObject: Renamed "Wait" to "ShouldWait", made "ShouldWait" and "Acquire" pure virtual.
2015-01-21 20:47:49 -05:00
e5a9f1c644
Kernel: Get rid of WaitTypes and simplify lots of code, removing hacks.
2015-01-21 20:47:38 -05:00
6643673f28
WaitSynchronizationN: Refactor to fix several bugs
...
- Separate wait checking from waiting the current thread
- Resume thread when wait_all=true only if all objects are available at once
- Set output to correct wait object index when there are duplicate handles
2015-01-21 19:11:47 -05:00
aa01c57ae9
Kernel: Separate WaitSynchronization into Wait and Acquire methods.
2015-01-21 19:10:24 -05:00
7faf2d8e06
WaitSynchronizationN: Implement return values
2015-01-21 19:09:03 -05:00
c22bac6398
Kernel: Added WaitObject and changed "waitable" objects inherit from it.
2015-01-21 18:41:00 -05:00
8ad41775cc
Kernel: Start using boost::intrusive_ptr for lifetime management
2015-01-09 19:43:52 -02:00
9bf8462b96
Thread: Reduce use of Handles and move some funcs to inside the class.
2015-01-09 04:02:15 -02:00
07044651ef
SVC: Implemented the Timer service calls.
2015-01-08 21:22:14 -05:00