fix(libkernel): fix export non-ps5 functions with extern c

This commit is contained in:
boykopovar 2026-09-12 16:07:14 +03:00
parent 9d7c255316
commit 37c8bafd13
3 changed files with 6 additions and 2 deletions

View File

@ -11,7 +11,7 @@ Releases will be published after the first full successful launch of at least on
Execution reaches `_start`, stack unwinding and exception handling tables are built. All unimplemented functions throw std::runtime_error. `what()` is printed to stderr and the process terminates.
Shader initialization via `sceAgcCreate*` passes.
Now: `sceVideoOutOpen not implemented`.
Now: `sceAudioOutInit not implemented`.
On Windows, after printing an unhandled exception the process exits with STATUS_STACK_BUFFER_OVERRUN due to the difficulty of manually [implementing proper exception handling](core/libs/prx/libc/src/exception).

View File

@ -11,6 +11,8 @@ static std::unordered_map<KernelEqueue, KernelEqueueRef> g_equeues;
static std::mutex g_equeueMutex;
static uint64_t g_nextEqueue = 1;
extern "C" {
KernelEqueuePrivate::KernelEqueuePrivate(KernelEqueue handle) : m_handle(handle) {}
KernelEqueuePrivate::~KernelEqueuePrivate() {
@ -267,7 +269,6 @@ int APS5_VABI EqueueDeleteEvent_nid_postfix(KernelEqueue eq, uintptr_t ident, in
return owner->DeleteEvent(ident, filter);
}
extern "C" {
int APS5_VABI sceKernelCreateEqueue(KernelEqueue* eq, const char* name) {
if (eq == nullptr || name == nullptr) {

View File

@ -83,10 +83,13 @@ private:
};
using KernelEqueueRef = std::shared_ptr<KernelEqueuePrivate>;
extern "C" {
KernelEqueueRef EqueuePin_nid_postfix(KernelEqueue eq);
int APS5_VABI EqueueAddEvent_nid_postfix(KernelEqueue eq, const KernelEqueueEvent& event);
int APS5_VABI EqueueTriggerEvent_nid_postfix(KernelEqueue eq, uintptr_t ident, int16_t filter, void* triggerData);
int APS5_VABI EqueueDeleteEvent_nid_postfix(KernelEqueue eq, uintptr_t ident, int16_t filter);
}
#endif