Commit Graph

83 Commits

Author SHA1 Message Date
Unknown W. Brackets
00ca9d8dc7 Make the UMD wait funcs actually wait. 2012-12-01 23:29:24 -08:00
Unknown W. Brackets
998104e2eb Consider threads still waiting until they wake.
This seems to match the actual behavior of timeouts much better.
2012-11-30 23:04:24 -08:00
Unknown W. Brackets
48c5efd0c2 Match hw timing of mutex/sema timeouts better.
Affects some tests passing/not passing due to minor timing issues, ugh.
2012-11-30 22:58:42 -08:00
Unknown W. Brackets
3ab41e515d Mutexes and semaphores don't always reschedule.
It's just the normal rescheduling happening.  Previous tests weren't
correct.

Also some minor cleanup.
2012-11-30 22:58:41 -08:00
Henrik Rydgard
980d13fe50 Assorted GPU fixes: Advance vertex pointer, fixes missing triangles in SPT. More logging. Separate proj matrices for through and normal mode (through matrix don't need to get updated as often). Some cleanup. 2012-11-28 13:45:22 +01:00
Unknown W. Brackets
d3f2d9d10b Use u64 here to avoid warnings, better precision.
The timeout value is u32 anyway, so an int was already a loss.
2012-11-22 16:40:26 -08:00
Unknown W. Brackets
c2c2b77792 Fix threads locking more than one mutex at a time.
Duh, of course they can.  Even my test did, I'm stupid.
2012-11-22 16:33:16 -08:00
Unknown W. Brackets
1bf04790e9 Darn, buildfix for debug. 2012-11-21 07:28:54 -08:00
Unknown W. Brackets
879efb25cc Don't allow unlocking someone else's mutex. 2012-11-21 00:28:29 -08:00
Unknown W. Brackets
fa9b9840d0 Implement LwMutex locking and unlocking. 2012-11-21 00:21:25 -08:00
Unknown W. Brackets
db16f9309e Don't crash if something goes wrong with mutexes.
Probably can't happen but being defensive is good.
2012-11-20 22:57:14 -08:00
Unknown W. Brackets
b71d998a20 Broadcast a threadend event to wake mutexes. 2012-11-20 02:20:16 -08:00
Unknown W. Brackets
dd3db71b61 Forget mutex waiting threads when they timeout. 2012-11-20 02:20:16 -08:00
Unknown W. Brackets
8da2fb074c For mutexes/semaphores, register a global timer.
Instead of leaking one per each.  Should be faster.
Since we can only wait on one thing per thread at a time, this is fine.
2012-11-20 02:20:16 -08:00
Unknown W. Brackets
a81c138004 Create and Delete LwMutex funcs. 2012-11-20 02:20:15 -08:00
Unknown W. Brackets
fd41851503 Implement timeouts on semaphores too. 2012-11-20 02:20:14 -08:00
Unknown W. Brackets
4d71e32193 Update the value when mutexes timeout. 2012-11-20 02:20:14 -08:00
Unknown W. Brackets
aad7e48a1a Oops, turns out mutex timeouts are in micro.
Found it documented as milli somewhere, but it was wrong.
2012-11-20 02:20:14 -08:00
Unknown W. Brackets
d88fa153b7 Implement timeouts on mutexes.
Still need to set timeoutPtr after they expire.
Pretty sure I did this the right way, seems CoreTiming does already
allow/use multiple events for the same type?
2012-11-20 02:20:13 -08:00
Unknown W. Brackets
7b9a8bf766 Minor correctness on create mutex. 2012-11-20 02:20:12 -08:00
Unknown W. Brackets
7fa388952e Refactor mutex locking to simplify. 2012-11-20 02:20:12 -08:00
Unknown W. Brackets
0681c8e5c5 Add overflow error to mutex locking. 2012-11-20 02:20:12 -08:00
Unknown W. Brackets
2290397b94 sceKernelTryLockMutex() and fix other locking. 2012-11-20 02:19:21 -08:00
Unknown W. Brackets
4bfa24eca8 Fix sceKernelCreateMutex() to match tests.
Still have an issue where reusing threads doesn't work.
2012-11-20 02:19:21 -08:00
Unknown W. Brackets
a539580195 Reschedule after acquiring a lock.
This matches the actual test results.
2012-11-20 02:19:20 -08:00