364 Commits

Author SHA1 Message Date
Henrik Rydgard
bf89c01215 When atrac3+ decoding fails, stop decoding silently-ish instead of decoding garbage, spamming the log 2013-10-21 23:10:30 +02:00
Unknown W. Brackets
f5e0d80ead Pass arguments to root threads same as regular.
Before it would have issues or crash if the args were > 256 bytes.
Fixes Ys 1 & 2 Chronicles.
2013-10-16 01:31:58 -07:00
Unknown W. Brackets
e06889069c Don't use the destructor to free thread stacks.
If we do, kernelObjects.clear() will trash perfectly good memory on
loading a state.  I guess it also makes shutdown slower.

Fixes #4186.
2013-10-14 22:09:16 -07:00
Unknown W. Brackets
a194006aad Fix crash deleting a never started thread.
Fixes #4069.
2013-10-08 22:39:49 -07:00
Unknown W. Brackets
5be30fb857 Add support for the clear stack thread attr. 2013-10-06 12:16:58 -07:00
Unknown W. Brackets
b928f50353 Cleanup sceKernelRegisterExitCallback() per tests. 2013-09-29 01:10:07 -07:00
Unknown W. Brackets
a7ec139b5a Savestate the exit callback, reporting.
Seems like LoadExecForUser_362A956B() uses it, so we need to save it.
I have no confidence that function works correctly, so let's report it.
2013-09-29 00:19:54 -07:00
Unknown W. Brackets
50e9e45d65 Check version in each DoState() func.
They bail on PointerWrap error or bad version.
2013-09-14 20:23:03 -07:00
Unknown W. Brackets
ca6491ea22 Auto resume dispatch at thread start/create. 2013-09-12 08:02:43 -07:00
Unknown W. Brackets
b898e397aa Correct sceKernelGetThreadStackFreeSize().
It was always returning 0.
2013-09-10 01:31:03 -07:00
Unknown W. Brackets
0f7ac377cd Offset the root thread's stack by arg size.
Otherwise it'll just overwrite, right?
2013-09-10 01:12:51 -07:00
Unknown W. Brackets
ada492febe Fix really stupid heap corruption mistake. 2013-09-09 22:33:17 -07:00
Unknown W. Brackets
ccf021cef0 Return a negative error code in __KernelGetWaitID.
This way we can use 0 as a proper wait id.
2013-09-09 21:39:56 -07:00
Unknown W. Brackets
2577f65b80 Reset waits when terminating a thread.
Terminated threads can't be waiting.
2013-09-09 21:39:38 -07:00
Unknown W. Brackets
e19fdef0fd Reset thread priority on terminate. 2013-09-09 21:31:04 -07:00
Unknown W. Brackets
a3637a1cad Set the low mystery bits of the thread attr.
Tests on PSP show this, and I can't find a way to not have them set.
But I don't really know what they mean.

Anyway, since you can refer the status, you can see them, may improve
compatibility.
2013-09-09 20:51:52 -07:00
Unknown W. Brackets
0af3c50924 Eat cycles after creating a thread.
Improves things on some tests, should be more accurate.
Creating a thread sure takes a long time.
2013-09-09 20:49:30 -07:00
Unknown W. Brackets
1481bbdd3b Validate and report some thread attributes. 2013-09-09 20:48:23 -07:00
Unknown W. Brackets
ce4c0d85bb Support some thread stack attr options.
May improve memory management in some games.
2013-09-09 20:46:19 -07:00
Unknown W. Brackets
1040123a97 Delete callbacks when their thread is deleted. 2013-09-09 00:22:00 -07:00
Unknown W. Brackets
4bba276696 Run callbacks in creation order, not notify order. 2013-09-09 00:21:59 -07:00
Unknown W. Brackets
87bd8d59e2 Clean up umd bad callback id errors, oops. 2013-09-09 00:21:53 -07:00
Unknown W. Brackets
64b75ed3ff Decentralize callback registration.
Callbacks are always tied to THEIR thread, and the registration was all
based on the current thread which is just not the right way.
2013-09-09 00:21:15 -07:00
Unknown W. Brackets
94e88943d8 Keep a single list of pending callbacks.
Doing it per type only meant that we'd incorrectly call a callback twice
if it was notified by e.g. scePowerRegisterCallback() and
sceKernelNotifyThread(), which isn't what's supposed to happen.
2013-09-09 00:21:14 -07:00
Unknown W. Brackets
f1b62983b5 Add callback wait handlers for threadend as well. 2013-09-08 12:14:07 -07:00
Unknown W. Brackets
6d8213b0c5 Always specify retval when resuming a thread. 2013-09-08 12:02:18 -07:00
Unknown W. Brackets
4c828cd9a0 Remove __KernelTriggerWait(), no longer used. 2013-09-08 11:58:40 -07:00
Unknown W. Brackets
3fb2c8f654 Use a waitingThreads list for threadend.
The timeout wasn't being correctly written before, actually.
2013-09-08 11:15:09 -07:00
Unknown W. Brackets
b03be16fa6 Refactor thread end/delete a bit. 2013-09-08 10:50:55 -07:00
Henrik Rydgard
8c88dff5a4 More log categories, use them (and existing ones). Improve log config. 2013-09-07 22:02:55 +02:00
Unknown W. Brackets
d8d8d3b0ec Use a different wait type for async io. 2013-09-07 11:04:42 -07:00
Unknown W. Brackets
2a7e9a5afc Cleanup sceKernelCreateCallback().
And tweak sceKernelReferCallbackStatus().
2013-09-03 22:18:15 -07:00
Unknown W. Brackets
b20bb3b609 Refactor down the begin/end callback stuff. 2013-09-03 01:21:52 -07:00
Unknown W. Brackets
1bf974aff6 Implement VPL/FPL callback handlers.
Smells like time to refactor, there are less differences than I expected.
2013-09-03 01:21:51 -07:00
Unknown W. Brackets
648dd5f154 Don't allow sceKernelWakeupThread() on cur thread.
I don't know why you wouldn't allow this, but the PSP firmware doesn't.
2013-09-03 01:21:50 -07:00
Unknown W. Brackets
722b878428 Fix sceKernelReferThreadRunStatus() layout.
Was missing size, so all fields were wrong.
2013-09-03 01:21:50 -07:00
Unknown W. Brackets
8bf1ef2616 Add handlers for delay and sleep callbacks. 2013-09-03 01:21:49 -07:00
Unknown W. Brackets
15a0f39fa1 Return yet more errors while inside interrupts. 2013-08-28 23:15:13 -07:00
Unknown W. Brackets
17a5a42a14 Disable some common waits inside interrupts. 2013-08-27 23:55:37 -07:00
Unknown W. Brackets
61fae4e920 Return proper errors while dispatch disabled.
In at least the majority of waits.
2013-08-27 23:55:37 -07:00
Unknown W. Brackets
252bf04c64 sceKernelDelaySysClockThread() cleanup.
It doesn't wait either of course.
2013-08-27 23:55:35 -07:00
Unknown W. Brackets
1c51564896 Stop practicing thread necromancy. 2013-08-27 23:55:34 -07:00
Unknown W. Brackets
fa57e23305 Implement volatile memory lock waiting. 2013-08-26 01:04:37 -07:00
Unknown W. Brackets
8d7eb265be Log context switch time, shorten logging a bit.
This is really useful for seeing why games are slow or hanging.
2013-08-25 10:25:49 -07:00
Unknown W. Brackets
1ed8edb0d3 Avoid some dangerous hex constant widths. 2013-08-22 23:23:48 -07:00
Unknown W. Brackets
83bc12ea08 Reschedule in sceKernelReferThreadStatus().
It's often called in loops waiting for a thread to wake up.

Fixes .hack//Link's sluggish performance.
2013-08-15 07:56:35 -07:00
Unknown W. Brackets
846178a588 Optimize thread switching a bit.
~2.5% improvement in Zettai Hero Project (while multithreading.)
2013-08-15 01:26:16 -07:00
Unknown W. Brackets
0d5c66676d Correct result of sceKernelGetThreadExitStatus(0).
Fixes Zettai Hero Project's options menu.
2013-08-14 23:58:23 -07:00
Unknown W. Brackets
c8716d9a02 Fix a few minor typos + small reporting change. 2013-08-12 23:02:39 -07:00
Unknown W. Brackets
7ac67a8931 Add a function to walk the stack, not yet perfect.
Could use improvements, but with a decent symbol table does very well so
far in the games I tested it in.
2013-08-12 01:54:14 -07:00