kernel: Make sceKernelUsleep interruptible

This commit is contained in:
IndecisiveTurtle authored and georgemoralis committed 2024-06-22 18:09:03 +03:00
1 parent 8850c2f4be
commit 7bdaeafdfd
1 file changed
+13 -3
+13 -3
View File
@@ -56,10 +56,20 @@ int PS4_SYSV_ABI sceKernelUsleep(u32 microseconds) {
} else {
std::this_thread::sleep_for(std::chrono::microseconds(microseconds));
}
#else
usleep(microseconds);
#endif
return 0;
#else
timespec start;
timespec remain;
start.tv_sec = microseconds / 1000000;
start.tv_nsec = (microseconds % 1000000) * 1000;
timespec* requested = &start;
int ret = 0;
do {
ret = nanosleep(requested, &remain);
requested = &remain;
} while (ret != 0);
return ret;
#endif
}
int PS4_SYSV_ABI posix_usleep(u32 microseconds) {