mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-10-31 16:09:03 -05:00 
			
		
		
		
	services: Pass FileSystemController as reference to services that need it
This commit is contained in:
		| @@ -1268,7 +1268,7 @@ void IApplicationFunctions::ExtendSaveData(Kernel::HLERequestContext& ctx) { | |||||||
|               "new_journal={:016X}", |               "new_journal={:016X}", | ||||||
|               static_cast<u8>(type), user_id[1], user_id[0], new_normal_size, new_journal_size); |               static_cast<u8>(type), user_id[1], user_id[0], new_normal_size, new_journal_size); | ||||||
|  |  | ||||||
|     fsc.WriteSaveDataSize(type, Core::CurrentProcess()->GetTitleID(), user_id, |     fsc.WriteSaveDataSize(type, system.CurrentProcess()->GetTitleID(), user_id, | ||||||
|                           {new_normal_size, new_journal_size}); |                           {new_normal_size, new_journal_size}); | ||||||
|  |  | ||||||
|     IPC::ResponseBuilder rb{ctx, 4}; |     IPC::ResponseBuilder rb{ctx, 4}; | ||||||
| @@ -1288,7 +1288,8 @@ void IApplicationFunctions::GetSaveDataSize(Kernel::HLERequestContext& ctx) { | |||||||
|     LOG_DEBUG(Service_AM, "called with type={:02X}, user_id={:016X}{:016X}", static_cast<u8>(type), |     LOG_DEBUG(Service_AM, "called with type={:02X}, user_id={:016X}{:016X}", static_cast<u8>(type), | ||||||
|               user_id[1], user_id[0]); |               user_id[1], user_id[0]); | ||||||
|  |  | ||||||
|     const auto size = fsc.ReadSaveDataSize(type, Core::CurrentProcess()->GetTitleID(), user_id); |     const auto size = system.FileSystemController().ReadSaveDataSize( | ||||||
|  |         type, system.CurrentProcess()->GetTitleID(), user_id); | ||||||
|  |  | ||||||
|     IPC::ResponseBuilder rb{ctx, 6}; |     IPC::ResponseBuilder rb{ctx, 6}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|   | |||||||
| @@ -106,7 +106,7 @@ private: | |||||||
|  |  | ||||||
|         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
|         rb.PushIpcInterface<IApplicationFunctions>(system); |         rb.PushIpcInterface<IApplicationFunctions>(system.FileSystemController()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     std::shared_ptr<NVFlinger::NVFlinger> nvflinger; |     std::shared_ptr<NVFlinger::NVFlinger> nvflinger; | ||||||
|   | |||||||
| @@ -9,6 +9,10 @@ | |||||||
| #include "core/hle/service/service.h" | #include "core/hle/service/service.h" | ||||||
|  |  | ||||||
| namespace Service { | namespace Service { | ||||||
|  | namespace FileSystem { | ||||||
|  | class FileSystemController; | ||||||
|  | } | ||||||
|  |  | ||||||
| namespace NVFlinger { | namespace NVFlinger { | ||||||
| class NVFlinger; | class NVFlinger; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -95,7 +95,7 @@ private: | |||||||
|  |  | ||||||
|         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
|         rb.PushIpcInterface<IApplicationFunctions>(system); |         rb.PushIpcInterface<IApplicationFunctions>(system.FileSystemController()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     std::shared_ptr<NVFlinger::NVFlinger> nvflinger; |     std::shared_ptr<NVFlinger::NVFlinger> nvflinger; | ||||||
|   | |||||||
| @@ -9,6 +9,10 @@ | |||||||
| #include "core/hle/service/service.h" | #include "core/hle/service/service.h" | ||||||
|  |  | ||||||
| namespace Service { | namespace Service { | ||||||
|  | namespace FileSystem { | ||||||
|  | class FileSystemController; | ||||||
|  | } | ||||||
|  |  | ||||||
| namespace NVFlinger { | namespace NVFlinger { | ||||||
| class NVFlinger; | class NVFlinger; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -617,7 +617,7 @@ public: | |||||||
|     } |     } | ||||||
| }; | }; | ||||||
|  |  | ||||||
| void InstallInterfaces(SM::ServiceManager& service_manager) { | void InstallInterfaces(SM::ServiceManager& service_manager, FileSystem::FileSystemController& fsc) { | ||||||
|     std::make_shared<NS>("ns:am2")->InstallAsService(service_manager); |     std::make_shared<NS>("ns:am2")->InstallAsService(service_manager); | ||||||
|     std::make_shared<NS>("ns:ec")->InstallAsService(service_manager); |     std::make_shared<NS>("ns:ec")->InstallAsService(service_manager); | ||||||
|     std::make_shared<NS>("ns:rid")->InstallAsService(service_manager); |     std::make_shared<NS>("ns:rid")->InstallAsService(service_manager); | ||||||
| @@ -628,7 +628,7 @@ void InstallInterfaces(SM::ServiceManager& service_manager) { | |||||||
|     std::make_shared<NS_SU>()->InstallAsService(service_manager); |     std::make_shared<NS_SU>()->InstallAsService(service_manager); | ||||||
|     std::make_shared<NS_VM>()->InstallAsService(service_manager); |     std::make_shared<NS_VM>()->InstallAsService(service_manager); | ||||||
|  |  | ||||||
|     std::make_shared<PL_U>()->InstallAsService(service_manager); |     std::make_shared<PL_U>(fsc)->InstallAsService(service_manager); | ||||||
| } | } | ||||||
|  |  | ||||||
| } // namespace Service::NS | } // namespace Service::NS | ||||||
|   | |||||||
| @@ -6,7 +6,13 @@ | |||||||
|  |  | ||||||
| #include "core/hle/service/service.h" | #include "core/hle/service/service.h" | ||||||
|  |  | ||||||
| namespace Service::NS { | namespace Service { | ||||||
|  |  | ||||||
|  | namespace FileSystem { | ||||||
|  | class FileSystemController; | ||||||
|  | } // namespace FileSystem | ||||||
|  |  | ||||||
|  | namespace NS { | ||||||
|  |  | ||||||
| class IAccountProxyInterface final : public ServiceFramework<IAccountProxyInterface> { | class IAccountProxyInterface final : public ServiceFramework<IAccountProxyInterface> { | ||||||
| public: | public: | ||||||
| @@ -91,6 +97,8 @@ private: | |||||||
| }; | }; | ||||||
|  |  | ||||||
| /// Registers all NS services with the specified service manager. | /// Registers all NS services with the specified service manager. | ||||||
| void InstallInterfaces(SM::ServiceManager& service_manager); | void InstallInterfaces(SM::ServiceManager& service_manager, FileSystem::FileSystemController& fsc); | ||||||
|  |  | ||||||
| } // namespace Service::NS | } // namespace NS | ||||||
|  |  | ||||||
|  | } // namespace Service | ||||||
|   | |||||||
| @@ -150,7 +150,8 @@ struct PL_U::Impl { | |||||||
|     std::vector<FontRegion> shared_font_regions; |     std::vector<FontRegion> shared_font_regions; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| PL_U::PL_U() : ServiceFramework("pl:u"), impl{std::make_unique<Impl>()} { | PL_U::PL_U(FileSystem::FileSystemController& fsc) | ||||||
|  |     : ServiceFramework("pl:u"), impl{std::make_unique<Impl>()} { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0, &PL_U::RequestLoad, "RequestLoad"}, |         {0, &PL_U::RequestLoad, "RequestLoad"}, | ||||||
|         {1, &PL_U::GetLoadState, "GetLoadState"}, |         {1, &PL_U::GetLoadState, "GetLoadState"}, | ||||||
| @@ -161,7 +162,7 @@ PL_U::PL_U() : ServiceFramework("pl:u"), impl{std::make_unique<Impl>()} { | |||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
|     // Attempt to load shared font data from disk |     // Attempt to load shared font data from disk | ||||||
|     const auto* nand = FileSystem::GetSystemNANDContents(); |     const auto* nand = fsc.GetSystemNANDContents(); | ||||||
|     std::size_t offset = 0; |     std::size_t offset = 0; | ||||||
|     // Rebuild shared fonts from data ncas |     // Rebuild shared fonts from data ncas | ||||||
|     if (nand->HasEntry(static_cast<u64>(FontArchives::Standard), |     if (nand->HasEntry(static_cast<u64>(FontArchives::Standard), | ||||||
|   | |||||||
| @@ -7,11 +7,17 @@ | |||||||
| #include <memory> | #include <memory> | ||||||
| #include "core/hle/service/service.h" | #include "core/hle/service/service.h" | ||||||
|  |  | ||||||
| namespace Service::NS { | namespace Service { | ||||||
|  |  | ||||||
|  | namespace FileSystem { | ||||||
|  | class FileSystemController; | ||||||
|  | } // namespace FileSystem | ||||||
|  |  | ||||||
|  | namespace NS { | ||||||
|  |  | ||||||
| class PL_U final : public ServiceFramework<PL_U> { | class PL_U final : public ServiceFramework<PL_U> { | ||||||
| public: | public: | ||||||
|     PL_U(); |     PL_U(FileSystem::FileSystemController& fsc); | ||||||
|     ~PL_U() override; |     ~PL_U() override; | ||||||
|  |  | ||||||
| private: | private: | ||||||
| @@ -26,4 +32,6 @@ private: | |||||||
|     std::unique_ptr<Impl> impl; |     std::unique_ptr<Impl> impl; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| } // namespace Service::NS | } // namespace NS | ||||||
|  |  | ||||||
|  | } // namespace Service | ||||||
|   | |||||||
| @@ -199,6 +199,7 @@ void Init(std::shared_ptr<SM::ServiceManager>& sm, Core::System& system) { | |||||||
|     // NVFlinger needs to be accessed by several services like Vi and AppletOE so we instantiate it |     // NVFlinger needs to be accessed by several services like Vi and AppletOE so we instantiate it | ||||||
|     // here and pass it into the respective InstallInterfaces functions. |     // here and pass it into the respective InstallInterfaces functions. | ||||||
|     auto nv_flinger = std::make_shared<NVFlinger::NVFlinger>(system.CoreTiming()); |     auto nv_flinger = std::make_shared<NVFlinger::NVFlinger>(system.CoreTiming()); | ||||||
|  |     fsc.CreateFactories(*system.GetFilesystem(), false); | ||||||
|  |  | ||||||
|     SM::ServiceManager::InstallInterfaces(sm); |     SM::ServiceManager::InstallInterfaces(sm); | ||||||
|  |  | ||||||
| @@ -229,13 +230,13 @@ void Init(std::shared_ptr<SM::ServiceManager>& sm, Core::System& system) { | |||||||
|     Migration::InstallInterfaces(*sm); |     Migration::InstallInterfaces(*sm); | ||||||
|     Mii::InstallInterfaces(*sm); |     Mii::InstallInterfaces(*sm); | ||||||
|     MM::InstallInterfaces(*sm); |     MM::InstallInterfaces(*sm); | ||||||
|     NCM::InstallInterfaces(*sm); |     NCM::InstallInterfaces(*sm, fsc); | ||||||
|     NFC::InstallInterfaces(*sm); |     NFC::InstallInterfaces(*sm); | ||||||
|     NFP::InstallInterfaces(*sm); |     NFP::InstallInterfaces(*sm); | ||||||
|     NIFM::InstallInterfaces(*sm); |     NIFM::InstallInterfaces(*sm); | ||||||
|     NIM::InstallInterfaces(*sm); |     NIM::InstallInterfaces(*sm); | ||||||
|     NPNS::InstallInterfaces(*sm); |     NPNS::InstallInterfaces(*sm); | ||||||
|     NS::InstallInterfaces(*sm); |     NS::InstallInterfaces(*sm, fsc); | ||||||
|     Nvidia::InstallInterfaces(*sm, *nv_flinger, system); |     Nvidia::InstallInterfaces(*sm, *nv_flinger, system); | ||||||
|     PCIe::InstallInterfaces(*sm); |     PCIe::InstallInterfaces(*sm); | ||||||
|     PCTL::InstallInterfaces(*sm); |     PCTL::InstallInterfaces(*sm); | ||||||
|   | |||||||
| @@ -18,10 +18,6 @@ namespace Core { | |||||||
| class System; | class System; | ||||||
| } | } | ||||||
|  |  | ||||||
| namespace FileSys { |  | ||||||
| class VfsFilesystem; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| namespace Kernel { | namespace Kernel { | ||||||
| class ClientPort; | class ClientPort; | ||||||
| class ServerPort; | class ServerPort; | ||||||
| @@ -31,6 +27,10 @@ class HLERequestContext; | |||||||
|  |  | ||||||
| namespace Service { | namespace Service { | ||||||
|  |  | ||||||
|  | namespace FileSystem { | ||||||
|  | class FileSystemController; | ||||||
|  | } // namespace FileSystem | ||||||
|  |  | ||||||
| namespace SM { | namespace SM { | ||||||
| class ServiceManager; | class ServiceManager; | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Zach Hilman
					Zach Hilman