shadPS4/src/core/libraries/kernel/time_management.cpp

45 lines
1.4 KiB
C++
Raw Normal View History

2024-02-23 22:32:32 +01:00
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "common/native_clock.h"
2024-04-13 23:35:48 +02:00
#include "core/libraries/kernel/time_management.h"
#include "core/libraries/libs.h"
2023-10-30 07:48:52 +01:00
2024-04-13 23:35:48 +02:00
namespace Libraries::Kernel {
2023-11-06 00:11:54 +01:00
static u64 initial_ptc;
static std::unique_ptr<Common::NativeClock> clock;
2024-05-07 15:28:42 +02:00
u64 PS4_SYSV_ABI sceKernelGetTscFrequency() {
return clock->GetTscFrequency();
}
u64 PS4_SYSV_ABI sceKernelGetProcessTime() {
return clock->GetProcessTimeUS();
2023-10-30 07:48:52 +01:00
}
2023-11-06 00:11:54 +01:00
u64 PS4_SYSV_ABI sceKernelGetProcessTimeCounter() {
return clock->GetUptime() - initial_ptc;
2023-11-06 00:11:54 +01:00
}
u64 PS4_SYSV_ABI sceKernelGetProcessTimeCounterFrequency() {
return clock->GetTscFrequency();
2023-11-06 00:11:54 +01:00
}
2023-10-30 07:48:52 +01:00
2023-11-06 00:11:54 +01:00
u64 PS4_SYSV_ABI sceKernelReadTsc() {
return clock->GetUptime();
2023-11-06 00:11:54 +01:00
}
2023-10-30 07:48:52 +01:00
2024-04-13 23:35:48 +02:00
void timeSymbolsRegister(Core::Loader::SymbolsResolver* sym) {
clock = std::make_unique<Common::NativeClock>();
initial_ptc = clock->GetUptime();
LIB_FUNCTION("4J2sUJmuHZQ", "libkernel", 1, "libkernel", 1, 1, sceKernelGetProcessTime);
LIB_FUNCTION("fgxnMeTNUtY", "libkernel", 1, "libkernel", 1, 1, sceKernelGetProcessTimeCounter);
LIB_FUNCTION("BNowx2l588E", "libkernel", 1, "libkernel", 1, 1,
sceKernelGetProcessTimeCounterFrequency);
LIB_FUNCTION("-2IRUCO--PM", "libkernel", 1, "libkernel", 1, 1, sceKernelReadTsc);
2024-05-07 15:28:42 +02:00
LIB_FUNCTION("1j3S3n-tTW4", "libkernel", 1, "libkernel", 1, 1, sceKernelGetTscFrequency);
}
2024-04-13 23:35:48 +02:00
} // namespace Libraries::Kernel