Commit graph

337 commits

Author SHA1 Message Date
Unknown W. Brackets
a779645152 Wrap sceKernelGetThreadExitStatus().
So it's usable internally too.
2013-05-26 10:17:59 -07:00
Unknown W. Brackets
2c4254d0c8 Disallow suspend/resume on current thread.
Might be some extra subtle things with callbacks/interrupts here...
2013-05-26 02:25:53 -07:00
Unknown W. Brackets
e6795b1a41 Initial attempt at a suspend/resume thread impl. 2013-05-26 01:01:29 -07:00
Unknown W. Brackets
690e52bc34 Make sure we keep the suspend state around.
I assume it sticks around in this case.
2013-05-25 23:57:04 -07:00
Unknown W. Brackets
084ad5aa53 Wrap the sleep/wakeup HLE funcs. 2013-05-25 20:43:19 -07:00
Unknown W. Brackets
8adf1e9ede Properly return success in sceKernelWakeupThread().
Fixes #1596, fixes #1796, possibly others.  I can't believe how long
I stared at this code and debugged it without noticing such a simple
thing...
2013-05-25 20:28:22 -07:00
Henrik Rydgard
4b15fe3c5e Minor cleanup 2013-05-19 18:45:58 +02:00
raven02
c378af0878 Fix Dragon Ball Z Tenkaichi Tag Team 2013-05-19 19:56:18 +08:00
Unknown W. Brackets
ead70f56d9 Add a safety check to prevent leaks. 2013-05-18 20:21:29 -07:00
Unknown W. Brackets
0fb5877d75 Implement sceKernelExtendThreadStack().
Fixes #1833.  Implemented using fake nids instead of callbacks since
it's simpler to get them (and waits and recursion) right.
2013-05-18 20:21:28 -07:00
Unknown W. Brackets
f91135cedf Prevent some threading related NULL derefs. 2013-05-18 10:19:34 -07:00
Henrik Rydgård
c13a101901 Merge pull request #1765 from unknownbrackets/perf
Eat cycles in sceKernelReferThreadStatus()
2013-05-11 14:31:42 -07:00
Unknown W. Brackets
16fe2c9691 Eat cycles in sceKernelReferThreadStatus().
Improves .hack//Link (demo)'s perf significantly, doesn't hurt anyone
else.
2013-05-11 12:25:55 -07:00
Unknown W. Brackets
5318e97a2e Threads starting better threads should stay at top.
This wasn't correct, I think I must've added it because something else
should've been rescheduling.
2013-05-11 11:28:37 -07:00
Henrik Rydgard
5fc8de091d Make some logging VERBOSE 2013-05-09 11:18:38 +02:00
Unknown W. Brackets
bf826ed9c1 Correct delay for sceKernelDelayThread(0).
It's not 200 for 0, more like 100ish.
2013-05-04 23:42:10 -07:00
Unknown W. Brackets
f1f2cf0603 Replace some hleEatCycles() with actual PSP timing.
Measured several runs at 8 per run with test overhead check.
2013-05-04 23:42:10 -07:00
nachume
2181b76c42 ISO that replaced EBOOT.BIN is playable.
implement LoadExecForUer_362A956B() and sceKernelRegisterExitCallback.
Add some ERROR define on kernel.h. I was referring to the jpcsp.
2013-05-04 20:34:33 +09:00
Unknown W. Brackets
b18235d2e0 Sneak in a quick logging fix. 2013-04-28 11:27:05 -07:00
Unknown W. Brackets
acdd14f0d4 Fix initial thread stack, arg space and alignment.
Anything that used > 256 bytes of args was probably broken...
2013-04-28 00:34:49 -07:00
Unknown W. Brackets
d131588a6d Validate sceKernelStartThread() args better. 2013-04-28 00:34:49 -07:00
Unknown W. Brackets
df62cafe3d Handle a few errors on thread create better.
Especially out of stack space.
2013-04-28 00:34:48 -07:00
Unknown W. Brackets
fb758de3b9 sceKernelWakeupThread() should reschedule on wake.
Otherwise it will have different timing than the PSP.
2013-04-28 00:34:48 -07:00
Unknown W. Brackets
c8958a253d Cleanup some unused / duplicate code in threading. 2013-04-28 00:34:48 -07:00
Unknown W. Brackets
e30dedd46f Allocate thread stack on create, not on start.
Also, don't free and reallocate on thread reset.
2013-04-28 00:34:47 -07:00
Unknown W. Brackets
c089fcec27 Fix size handling in sceKernelReferThreadStatus(). 2013-04-28 00:34:47 -07:00
JimLee168
3ce26e03df Add part sceKernelExtendThreadStack content
Fixes NPJH50624
2013-04-19 22:22:35 +08:00
Unknown W. Brackets
efd71e2444 Make sceKernelNotifyCallback() error if invalid cb.
Which makes Numblast clearly happy.
2013-04-14 23:45:46 -07:00
Henrik Rydgård
d92dbf8f6d Merge pull request #1268 from unknownbrackets/savestates
Bump savestate version, add better error checking
2013-04-13 02:09:12 -07:00
Unknown W. Brackets
fe97fd6fc5 Add better savestate error handling.
Aborts when it can't load.
2013-04-13 01:39:17 -07:00
Unknown W. Brackets
0ad9658eb2 Increment wakeupCount when a thread is pending.
It might've been woken up but just not run yet.  That doesn't mean
it should not have wakeupCount incremented.

Fixes Tales of Eternia freezing before world map.
2013-04-13 00:35:24 -07:00
Henrik Rydgård
b5b13c6ab5 Merge pull request #1251 from unknownbrackets/module-minor
Cleanup sceKernelGetModuleIdByAddress()
2013-04-11 00:45:42 -07:00
Unknown W. Brackets
5aceceecd3 Remove global module id var hacks.
Nothing needs them anymore.
2013-04-10 21:16:31 -07:00
Unknown W. Brackets
1f1560a9d6 Don't mark sceKernelExitThread() as an error.
Also, add some reporting and make the sceKernelCreateThread log message
shorter.
2013-04-09 23:23:10 -07:00
Unknown W. Brackets
5e14cab945 Don't save vregs for threads that don't use them. 2013-04-07 11:47:00 -07:00
Unknown W. Brackets
c7020d4872 Optimize resched with a running thread.
Esp. if it would go back to itself.
2013-04-07 11:47:00 -07:00
Unknown W. Brackets
68f5596dee Fix crash if queue is empty during savestate.
On load it would then crash.
2013-04-07 10:32:39 -07:00
Unknown W. Brackets
da2d5f0692 Dynamically size the thread queue, explicitly alloc. 2013-04-07 10:27:29 -07:00
Unknown W. Brackets
2ee611de09 Replace the thread ready queue with non-STL.
It seems much faster.
2013-04-07 03:10:14 -07:00
Unknown W. Brackets
4cd260a2fc Centralize the thread ready queue logic.
This makes it slower for now, but should make it easier to optimize correctly.
2013-04-07 03:09:23 -07:00
Unknown W. Brackets
65ac7389d7 Don't get stuck on idle when interrupts run.
This was happening when the dispatch thread was disabled.
2013-04-06 17:04:20 -07:00
Unknown W. Brackets
2367c17735 Don't suspend/resume dispatch while interrupts off. 2013-04-06 17:04:18 -07:00
Unknown W. Brackets
8f17cef95b Stop threadend timeout when the thread ends.
Fixes threads waking up early in tests.
2013-04-06 17:04:16 -07:00
Unknown W. Brackets
c57954a72e Implement sceGeDrawSync(). 2013-04-06 02:30:37 -07:00
Unknown W. Brackets
72921e0a3c If the mipscall id doesn't match, don't create.
Fixes a crash when savestating.
2013-03-31 12:09:59 -07:00
Unknown W. Brackets
2a9c640739 When starting a thread, put old thread at end.
This matters so the right thread is run later when scheduling switches
back.
2013-03-31 09:45:41 -07:00
Unknown W. Brackets
fe60677f75 Make mutexes handle callbacks better + before.
Mutex and semaphores (but NOT lwmutexes) call callbacks before attempting
the lock, but only if it would not generate errors.

Have not yet tested other wait types.
2013-03-30 16:12:38 -07:00
Unknown W. Brackets
eace0e75c1 sceKernelWaitSemaCB() should run callbacks first.
Patapon 2 gets back to the menu with this.
2013-03-30 16:12:38 -07:00
Unknown W. Brackets
d2abdf17be Add a waittype registry to handle callbacks right. 2013-03-30 16:12:37 -07:00
Unknown W. Brackets
e4223dbcb0 Simplify adding report messages, add a bunch more. 2013-03-26 00:54:00 -07:00