summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2018-01-26 03:56:04 +0100
committerGitHub <noreply@github.com>2018-01-26 03:56:04 +0100
commit767ce8abc828e893973de9ec6b303cea31f7834f (patch)
tree6209962cde074c9435999dbeda7af9f02b9d6da1
parentMerge pull request #137 from bunnei/improve-ipc (diff)
parenttime: Implement ISteadyClock::GetCurrentTimePoint. (diff)
downloadyuzu-767ce8abc828e893973de9ec6b303cea31f7834f.tar
yuzu-767ce8abc828e893973de9ec6b303cea31f7834f.tar.gz
yuzu-767ce8abc828e893973de9ec6b303cea31f7834f.tar.bz2
yuzu-767ce8abc828e893973de9ec6b303cea31f7834f.tar.lz
yuzu-767ce8abc828e893973de9ec6b303cea31f7834f.tar.xz
yuzu-767ce8abc828e893973de9ec6b303cea31f7834f.tar.zst
yuzu-767ce8abc828e893973de9ec6b303cea31f7834f.zip
-rw-r--r--src/core/hle/service/time/time.cpp17
-rw-r--r--src/core/hle/service/time/time.h6
2 files changed, 22 insertions, 1 deletions
diff --git a/src/core/hle/service/time/time.cpp b/src/core/hle/service/time/time.cpp
index 96ccee50d..5802f6f6c 100644
--- a/src/core/hle/service/time/time.cpp
+++ b/src/core/hle/service/time/time.cpp
@@ -4,6 +4,7 @@
#include <chrono>
#include "common/logging/log.h"
+#include "core/core_timing.h"
#include "core/hle/ipc_helpers.h"
#include "core/hle/kernel/client_port.h"
#include "core/hle/kernel/client_session.h"
@@ -45,7 +46,21 @@ private:
class ISteadyClock final : public ServiceFramework<ISteadyClock> {
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> {
diff --git a/src/core/hle/service/time/time.h b/src/core/hle/service/time/time.h
index cd936a50c..1cbbadb21 100644
--- a/src/core/hle/service/time/time.h
+++ b/src/core/hle/service/time/time.h
@@ -40,6 +40,12 @@ struct SystemClockContext {
static_assert(sizeof(SystemClockContext) == 0x20,
"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 {
public:
class Interface : public ServiceFramework<Interface> {