Files
AnyPS5/core/libs/prx/libc/Export.cpp
T
OverkillLabs 940f28d102 libc: wide-char formatting and precise sub-tick waits
- Add FormattingWide.cpp implementing vswprintf_nid_postfix and
  wprintf_nid_postfix, the only wide-char printf-family functions
  upstream had left as unimplemented stubs (Formatting.cpp's checked
  and unchecked narrow printf/scanf families are unaffected). Removes
  the dead vswprintf_nid_postfix stub from Export.cpp.
- Add PreciseWait.hpp: std::condition_variable::wait_for cannot return
  in under about one system tick on this MinGW toolchain regardless of
  the requested budget, even with NtSetTimerResolution; PreciseSleepUs
  uses a high-resolution waitable timer instead (~0.5ms vs ~15.6ms).
  Header-only for now: its guest-side callers (Equeue/EventFlag/
  Semaphore/AgcDriver wait loops) are out of scope for this change, so
  it is not wired into them here.
2026-09-28 13:18:07 +03:00

93 lines
2.3 KiB
C++

#include <cstdint>
#include <cstddef>
#include "SceTypes.hpp"
#include "prx/libc/include/General.hpp"
#include "prx/libc/include/HeapDiagnostics.hpp"
uint32_t Need_sceLibc = 1;
extern "C" {
void APS5_VABI init_env_nid_postfix(const InitEnvParams* params) {
(void)params;
NotImplemented_nid_no_patch(__func__);
}
void APS5_VABI catchReturnFromMain_nid_postfix(int status) {
(void)status;
NotImplemented_nid_no_patch(__func__);
}
int APS5_VABI cxa_atexit_nid_postfix(void (*func)(void*), void* arg, void* d) {
(void)func;
(void)arg;
(void)d;
NotImplemented_nid_no_patch(__func__);
return 0;
}
void APS5_VABI cxa_finalize_nid_postfix(void* d) {
NotImplemented_nid_no_patch(__func__);
(void)d;
}
int APS5_VABI std_execute_once_nid_postfix(int* flag, int (*func)(void*, void*, void**), void* arg) {
(void)flag;
(void)func;
(void)arg;
NotImplemented_nid_no_patch(__func__);
return 0;
}
void APS5_VABI LibcHeapGetTraceInfo_nid_postfix(LibcHeapInfo* info) {
LibcHeapTraceInfo_nid_no_patch(info);
}
int APS5_VABI LibcInternalExtCxaThreadAtexit_nid_postfix(void (*destructor)(void*), void* object, void* module_id) {
(void)destructor;
(void)object;
(void)module_id;
NotImplemented_nid_no_patch(__func__);
return 0;
}
int APS5_VABI LibcHeapErrorReportForGame_nid_postfix(
uint64_t msp, uint64_t ptr, uint64_t error,
uint64_t arg3, uint64_t arg4, uint64_t arg5
) {
(void)msp; (void)ptr; (void)error;
(void)arg3; (void)arg4; (void)arg5;
NotImplemented_nid_no_patch(__func__);
return 0;
}
int APS5_VABI _ZNKSt9exception6_RaiseEv_nid_postfix() {
NotImplemented_nid_no_patch(__func__);
return 0;
}
int APS5_VABI fputwc_nid_postfix() {
NotImplemented_nid_no_patch(__func__);
return 0;
}
int APS5_VABI fputws_nid_postfix() {
NotImplemented_nid_no_patch(__func__);
return 0;
}
int APS5_VABI fscanf_nid_postfix() {
NotImplemented_nid_no_patch(__func__);
return 0;
}
// vswprintf_nid_postfix is implemented in src/FormattingWide.cpp.
APS5_EXPORT("Pu0Ecyk-7FU", libcUnknown_Pu0Ecyk_M7FU);
int APS5_VABI libcUnknown_Pu0Ecyk_M7FU() {
NotImplemented_nid_no_patch(__func__);
return 0;
}
}