mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	service: time: Implement GetClockSnapshotFromSystemClockContext.
This commit is contained in:
		
							parent
							
								
									fab2607c6b
								
							
						
					
					
						commit
						a4e840181c
					
				| @ -28,7 +28,7 @@ Time::Time(std::shared_ptr<Module> module, Core::System& system, const char* nam | |||||||
|         {201, nullptr, "GetStandardUserSystemClockAutomaticCorrectionUpdatedTime"}, |         {201, nullptr, "GetStandardUserSystemClockAutomaticCorrectionUpdatedTime"}, | ||||||
|         {300, &Time::CalculateMonotonicSystemClockBaseTimePoint, "CalculateMonotonicSystemClockBaseTimePoint"}, |         {300, &Time::CalculateMonotonicSystemClockBaseTimePoint, "CalculateMonotonicSystemClockBaseTimePoint"}, | ||||||
|         {400, &Time::GetClockSnapshot, "GetClockSnapshot"}, |         {400, &Time::GetClockSnapshot, "GetClockSnapshot"}, | ||||||
|         {401, nullptr, "GetClockSnapshotFromSystemClockContext"}, |         {401, &Time::GetClockSnapshotFromSystemClockContext, "GetClockSnapshotFromSystemClockContext"}, | ||||||
|         {500, nullptr, "CalculateStandardUserSystemClockDifferenceByUser"}, |         {500, nullptr, "CalculateStandardUserSystemClockDifferenceByUser"}, | ||||||
|         {501, nullptr, "CalculateSpanBetween"}, |         {501, nullptr, "CalculateSpanBetween"}, | ||||||
|     }; |     }; | ||||||
|  | |||||||
| @ -242,7 +242,7 @@ void Module::Interface::CalculateMonotonicSystemClockBaseTimePoint(Kernel::HLERe | |||||||
| void Module::Interface::GetClockSnapshot(Kernel::HLERequestContext& ctx) { | void Module::Interface::GetClockSnapshot(Kernel::HLERequestContext& ctx) { | ||||||
|     LOG_DEBUG(Service_Time, "called"); |     LOG_DEBUG(Service_Time, "called"); | ||||||
|     IPC::RequestParser rp{ctx}; |     IPC::RequestParser rp{ctx}; | ||||||
|     const auto type = rp.PopRaw<u8>(); |     const auto type{rp.PopRaw<u8>()}; | ||||||
| 
 | 
 | ||||||
|     Clock::SystemClockContext user_context{}; |     Clock::SystemClockContext user_context{}; | ||||||
|     if (const ResultCode result{ |     if (const ResultCode result{ | ||||||
| @ -277,6 +277,29 @@ void Module::Interface::GetClockSnapshot(Kernel::HLERequestContext& ctx) { | |||||||
|     ctx.WriteBuffer(&clock_snapshot, sizeof(Clock::ClockSnapshot)); |     ctx.WriteBuffer(&clock_snapshot, sizeof(Clock::ClockSnapshot)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void Module::Interface::GetClockSnapshotFromSystemClockContext(Kernel::HLERequestContext& ctx) { | ||||||
|  |     LOG_DEBUG(Service_Time, "called"); | ||||||
|  |     IPC::RequestParser rp{ctx}; | ||||||
|  |     const auto type{rp.PopRaw<u8>()}; | ||||||
|  |     rp.AlignWithPadding(); | ||||||
|  | 
 | ||||||
|  |     const Clock::SystemClockContext user_context{rp.PopRaw<Clock::SystemClockContext>()}; | ||||||
|  |     const Clock::SystemClockContext network_context{rp.PopRaw<Clock::SystemClockContext>()}; | ||||||
|  | 
 | ||||||
|  |     Clock::ClockSnapshot clock_snapshot{}; | ||||||
|  |     if (const ResultCode result{GetClockSnapshotFromSystemClockContextInternal( | ||||||
|  |             &ctx.GetThread(), user_context, network_context, type, clock_snapshot)}; | ||||||
|  |         result != RESULT_SUCCESS) { | ||||||
|  |         IPC::ResponseBuilder rb{ctx, 2}; | ||||||
|  |         rb.Push(result); | ||||||
|  |         return; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     IPC::ResponseBuilder rb{ctx, 2}; | ||||||
|  |     rb.Push(RESULT_SUCCESS); | ||||||
|  |     ctx.WriteBuffer(&clock_snapshot, sizeof(Clock::ClockSnapshot)); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void Module::Interface::GetSharedMemoryNativeHandle(Kernel::HLERequestContext& ctx) { | void Module::Interface::GetSharedMemoryNativeHandle(Kernel::HLERequestContext& ctx) { | ||||||
|     LOG_DEBUG(Service_Time, "called"); |     LOG_DEBUG(Service_Time, "called"); | ||||||
|     IPC::ResponseBuilder rb{ctx, 2, 1}; |     IPC::ResponseBuilder rb{ctx, 2, 1}; | ||||||
| @ -290,7 +313,7 @@ Module::Interface::Interface(std::shared_ptr<Module> module, Core::System& syste | |||||||
| Module::Interface::~Interface() = default; | Module::Interface::~Interface() = default; | ||||||
| 
 | 
 | ||||||
| void InstallInterfaces(Core::System& system) { | void InstallInterfaces(Core::System& system) { | ||||||
|     auto module = std::make_shared<Module>(system); |     auto module{std::make_shared<Module>(system)}; | ||||||
|     std::make_shared<Time>(module, system, "time:a")->InstallAsService(system.ServiceManager()); |     std::make_shared<Time>(module, system, "time:a")->InstallAsService(system.ServiceManager()); | ||||||
|     std::make_shared<Time>(module, system, "time:s")->InstallAsService(system.ServiceManager()); |     std::make_shared<Time>(module, system, "time:s")->InstallAsService(system.ServiceManager()); | ||||||
|     std::make_shared<Time>(module, system, "time:u")->InstallAsService(system.ServiceManager()); |     std::make_shared<Time>(module, system, "time:u")->InstallAsService(system.ServiceManager()); | ||||||
|  | |||||||
| @ -30,6 +30,7 @@ public: | |||||||
|         void IsStandardNetworkSystemClockAccuracySufficient(Kernel::HLERequestContext& ctx); |         void IsStandardNetworkSystemClockAccuracySufficient(Kernel::HLERequestContext& ctx); | ||||||
|         void CalculateMonotonicSystemClockBaseTimePoint(Kernel::HLERequestContext& ctx); |         void CalculateMonotonicSystemClockBaseTimePoint(Kernel::HLERequestContext& ctx); | ||||||
|         void GetClockSnapshot(Kernel::HLERequestContext& ctx); |         void GetClockSnapshot(Kernel::HLERequestContext& ctx); | ||||||
|  |         void GetClockSnapshotFromSystemClockContext(Kernel::HLERequestContext& ctx); | ||||||
|         void GetSharedMemoryNativeHandle(Kernel::HLERequestContext& ctx); |         void GetSharedMemoryNativeHandle(Kernel::HLERequestContext& ctx); | ||||||
| 
 | 
 | ||||||
|     private: |     private: | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 bunnei
						bunnei