1
0
Fork 0
forked from suyu/suyu

time: Implement ISteadyClock::GetCurrentTimePoint.

This commit is contained in:
bunnei 2018-01-24 23:52:21 -05:00
parent 748c0de539
commit 3258db29da
2 changed files with 22 additions and 1 deletions

View file

@ -4,6 +4,7 @@
#include <chrono> #include <chrono>
#include "common/logging/log.h" #include "common/logging/log.h"
#include "core/core_timing.h"
#include "core/hle/ipc_helpers.h" #include "core/hle/ipc_helpers.h"
#include "core/hle/kernel/client_port.h" #include "core/hle/kernel/client_port.h"
#include "core/hle/kernel/client_session.h" #include "core/hle/kernel/client_session.h"
@ -45,7 +46,21 @@ private:
class ISteadyClock final : public ServiceFramework<ISteadyClock> { class ISteadyClock final : public ServiceFramework<ISteadyClock> {
public: public:
ISteadyClock() : ServiceFramework("ISteadyClock") {} ISteadyClock() : ServiceFramework("ISteadyClock") {
static const FunctionInfo functions[] = {
{0, &ISteadyClock::GetCurrentTimePoint, "GetCurrentTimePoint"},
};
RegisterHandlers(functions);
}
private:
void GetCurrentTimePoint(Kernel::HLERequestContext& ctx) {
LOG_DEBUG(Service, "called");
SteadyClockTimePoint steady_clock_time_point{cyclesToMs(CoreTiming::GetTicks()) / 1000};
IPC::ResponseBuilder rb{ctx, (sizeof(SteadyClockTimePoint) / 4) + 2};
rb.Push(RESULT_SUCCESS);
rb.PushRaw(steady_clock_time_point);
}
}; };
class ITimeZoneService final : public ServiceFramework<ITimeZoneService> { class ITimeZoneService final : public ServiceFramework<ITimeZoneService> {

View file

@ -40,6 +40,12 @@ struct SystemClockContext {
static_assert(sizeof(SystemClockContext) == 0x20, static_assert(sizeof(SystemClockContext) == 0x20,
"SystemClockContext structure has incorrect size"); "SystemClockContext structure has incorrect size");
struct SteadyClockTimePoint {
u64 value;
INSERT_PADDING_WORDS(4);
};
static_assert(sizeof(SteadyClockTimePoint) == 0x18, "SteadyClockTimePoint is incorrect size");
class Module final { class Module final {
public: public:
class Interface : public ServiceFramework<Interface> { class Interface : public ServiceFramework<Interface> {