Callbacks: Deliver to other threads by priority, fix sceKernelCancelCallback

Verified against pspautotests threads/callbacks/delivery:

- Notifying the callback of a better priority thread in a CB wait runs
  it right away. Callbacks of other waiting threads stay pending until
  those threads would get to run, rather than being taken at any
  reschedule, so they can still be counted or canceled.
- sceKernelCancelCallback clears the notify count, not just the arg.

threads/callbacks/cancel, count and umd/wait/wait now pass.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
Henrik RydgårdandClaude Opus 5.5 committed 2026-09-28 15:59:25 -06:00
1 parent 3bf8b5b5c9
commit acd2738b7a
3 files changed
+23 -4

No files matched your search

+4 -3
View File
@@ -311,9 +311,12 @@ tests_good = [
"threads/alarm/set/set",
"threads/callbacks/afterwait",
"threads/callbacks/callbacks",
"threads/callbacks/cancel",
"threads/callbacks/check",
"threads/callbacks/count",
"threads/callbacks/create",
"threads/callbacks/delete",
"threads/callbacks/delivery",
"threads/callbacks/exit",
"threads/callbacks/nested",
"threads/callbacks/notify",
@@ -441,6 +444,7 @@ tests_good = [
"utility/savedata/makedata",
"utility/systemparam/systemparam",
"umd/callbacks/umd",
"umd/wait/wait",
"umd/register",
"video/mpeg/ringbuffer/avail",
"video/mpeg/ringbuffer/construct",
@@ -581,8 +585,6 @@ tests_next = [
"net/primary/ether",
"power/freq",
"sysmem/partition",
"threads/callbacks/cancel",
"threads/callbacks/count",
# These two mbx tests only appeared to work because they papered over bugs
@@ -594,7 +596,6 @@ tests_next = [
"threads/vpl/create",
"umd/io/umd_io",
"umd/raw_access/raw_access",
"umd/wait/wait",
"utility/msgdialog/dialog",
"utility/savedata/idlist",
# These tests appear to be broken and just hang.