Commit Graph

87 Commits

Author SHA1 Message Date
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
7164638799 Allow semaphores with waiters to signal.
If the max is 1, but there's 1 waiting, it's okay to signal 2.
Really, the final result is what matters.
2012-11-30 22:58:41 -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
Ced2911
6db4ea2ad1 less Memory::GetPointer 2012-11-27 10:18:36 +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
b71d998a20 Broadcast a threadend event to wake mutexes. 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
619a9906de Remove threads from semaphores when they timeout.
This makes wait tests *almost* pass.  There's some timing
related issues left, though.
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
40a6ebfabe Fix sceKernelCancelSema() to handle any negative.
So the test isn't failing.
2012-11-20 02:19:21 -08:00
Unknown W. Brackets
157858819b Additional semaphore fixes with updated tests. 2012-11-17 01:43:01 -08:00
Unknown W. Brackets
2e9e61dfc6 CancelSema: adjust scheduling to match PSP. 2012-11-16 01:50:26 -08:00
Unknown W. Brackets
8517fbe761 PollSema: don't allow values <= 0. 2012-11-16 01:41:54 -08:00
Unknown W. Brackets
71e57043e8 SignalSema: throw an error on overflow.
This is what the PSP does.
2012-11-16 01:32:00 -08:00
Unknown W. Brackets
dd14450424 CreateSema: Truncate and validate like the PSP. 2012-11-16 01:26:04 -08:00
Unknown W. Brackets
0ab19c18e5 Wrap sceKernelCreateSema(). 2012-11-16 00:06:44 -08:00
Unknown W. Brackets
4191d40187 Add notes about PRIORITY attribute.
Not supported yet.
2012-11-15 23:55:23 -08:00
Unknown W. Brackets
306274ffdf Fix iterator in sceKernelSignalSema().
I'm sure we dont' want to change s.
2012-11-14 07:42:21 -08:00
Unknown W. Brackets
5c69d6169f Use WriteStruct() in sceKernelReferSemaStatus(). 2012-11-14 00:13:17 -08:00
Unknown W. Brackets
f37dd7fefe Fix $v0 on wrong thread in semaphore funcs.
Need to RETURN() prior to switching threads or it will write to the
wrong thread, oops.
2012-11-12 07:24:40 -08:00
Unknown W. Brackets
33559d23db sceKernelDeleteSema() not returning 0?
Seems to be a bug outside this func, adding a comment at least.
2012-11-11 19:03:37 -08:00
Unknown W. Brackets
b58032039b Cleanup sceKernel semaphore funcs.
Remove some duplication of code so it's cleaner.
2012-11-11 18:54:06 -08:00
Unknown W. Brackets
a69fd56573 Implement sceKernelCancelSema() based on jpcsp.
Don't have any tests/users, but this jpcsp's behavior seems sane.
2012-11-11 18:33:13 -08:00
Unknown W. Brackets
e7b6487c4e Wrap sceKernel DeleteSema and CancelSema.
Also fix copy/paste mistake from SignalSema func.
2012-11-11 18:30:13 -08:00