1.6 KiB
1.6 KiB
libSceJobManager technical debt
Functional
- sce::Job::JobManager (libSceJobManager) is written from the disassembly of the copies PPSA01474 and PPSA36082 ship in
sce_module, andguest_job_manager_testspasses against both of those modules as well: the memory size formula, the error codes, sync point ordering, the per-sequence limits and the priority order are the original's. Only CPU sequences exist:initializeandcalculateRequiredMemorySizewith compute sequences, and both compute dispatches, are not implemented, andcreateComputeanddestroyComputereturn the errors the original returns when no compute sequence was configured. The manager's state lives on the host heap, with only the block header written to the title's memory; the original keeps everything in that block, and a block smaller than 0x2d8 bytes throws here. The worker sleep policy, the spin count and the persistent thread count are validated and stored but change nothing, a factory priority above 1 throws,shutdownthrows while a thread is blocked in a sequence wait, and using a sequence after itsdestroythrows.initializereturns 0 where the original returns the result of its last import (BG26hBGiNlw, not resolved to a name), thesceRazorCpuJobManager*profiler calls are not made, and a worker thread that cannot be created or configured throws where the original does not check. The order of the sequence and factory virtual functions is read from the modules' vtables only, since no title that calls them has been run