mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	Merge pull request #4910 from lioncash/service
ipc_helpers: Remove usage of the global system instance
This commit is contained in:
		
						commit
						8008b5ddc9
					
				@ -12,7 +12,6 @@
 | 
				
			|||||||
#include <utility>
 | 
					#include <utility>
 | 
				
			||||||
#include "common/assert.h"
 | 
					#include "common/assert.h"
 | 
				
			||||||
#include "common/common_types.h"
 | 
					#include "common/common_types.h"
 | 
				
			||||||
#include "core/core.h"
 | 
					 | 
				
			||||||
#include "core/hle/ipc.h"
 | 
					#include "core/hle/ipc.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"
 | 
				
			||||||
@ -73,14 +72,12 @@ public:
 | 
				
			|||||||
        AlwaysMoveHandles = 1,
 | 
					        AlwaysMoveHandles = 1,
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    explicit ResponseBuilder(u32* command_buffer) : RequestHelperBase(command_buffer) {}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    explicit ResponseBuilder(Kernel::HLERequestContext& context, u32 normal_params_size,
 | 
					    explicit ResponseBuilder(Kernel::HLERequestContext& context, u32 normal_params_size,
 | 
				
			||||||
                             u32 num_handles_to_copy = 0, u32 num_objects_to_move = 0,
 | 
					                             u32 num_handles_to_copy = 0, u32 num_objects_to_move = 0,
 | 
				
			||||||
                             Flags flags = Flags::None)
 | 
					                             Flags flags = Flags::None)
 | 
				
			||||||
 | 
					 | 
				
			||||||
        : RequestHelperBase(context), normal_params_size(normal_params_size),
 | 
					        : RequestHelperBase(context), normal_params_size(normal_params_size),
 | 
				
			||||||
          num_handles_to_copy(num_handles_to_copy), num_objects_to_move(num_objects_to_move) {
 | 
					          num_handles_to_copy(num_handles_to_copy),
 | 
				
			||||||
 | 
					          num_objects_to_move(num_objects_to_move), kernel{context.kernel} {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        memset(cmdbuf, 0, sizeof(u32) * IPC::COMMAND_BUFFER_LENGTH);
 | 
					        memset(cmdbuf, 0, sizeof(u32) * IPC::COMMAND_BUFFER_LENGTH);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -140,7 +137,6 @@ public:
 | 
				
			|||||||
        if (context->Session()->IsDomain()) {
 | 
					        if (context->Session()->IsDomain()) {
 | 
				
			||||||
            context->AddDomainObject(std::move(iface));
 | 
					            context->AddDomainObject(std::move(iface));
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            auto& kernel = Core::System::GetInstance().Kernel();
 | 
					 | 
				
			||||||
            auto [client, server] = Kernel::Session::Create(kernel, iface->GetServiceName());
 | 
					            auto [client, server] = Kernel::Session::Create(kernel, iface->GetServiceName());
 | 
				
			||||||
            context->AddMoveObject(std::move(client));
 | 
					            context->AddMoveObject(std::move(client));
 | 
				
			||||||
            iface->ClientConnected(std::move(server));
 | 
					            iface->ClientConnected(std::move(server));
 | 
				
			||||||
@ -214,6 +210,7 @@ private:
 | 
				
			|||||||
    u32 num_handles_to_copy{};
 | 
					    u32 num_handles_to_copy{};
 | 
				
			||||||
    u32 num_objects_to_move{}; ///< Domain objects or move handles, context dependent
 | 
					    u32 num_objects_to_move{}; ///< Domain objects or move handles, context dependent
 | 
				
			||||||
    std::ptrdiff_t datapayload_index{};
 | 
					    std::ptrdiff_t datapayload_index{};
 | 
				
			||||||
 | 
					    Kernel::KernelCore& kernel;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Push ///
 | 
					/// Push ///
 | 
				
			||||||
 | 
				
			|||||||
@ -24,6 +24,10 @@ namespace Core::Memory {
 | 
				
			|||||||
class Memory;
 | 
					class Memory;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace IPC {
 | 
				
			||||||
 | 
					class ResponseBuilder;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Service {
 | 
					namespace Service {
 | 
				
			||||||
class ServiceFrameworkBase;
 | 
					class ServiceFrameworkBase;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -287,6 +291,8 @@ public:
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
 | 
					    friend class IPC::ResponseBuilder;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void ParseCommandBuffer(const HandleTable& handle_table, u32_le* src_cmdbuf, bool incoming);
 | 
					    void ParseCommandBuffer(const HandleTable& handle_table, u32_le* src_cmdbuf, bool incoming);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    std::array<u32, IPC::COMMAND_BUFFER_LENGTH> cmd_buf;
 | 
					    std::array<u32, IPC::COMMAND_BUFFER_LENGTH> cmd_buf;
 | 
				
			||||||
 | 
				
			|||||||
@ -11,6 +11,7 @@
 | 
				
			|||||||
#include "common/string_util.h"
 | 
					#include "common/string_util.h"
 | 
				
			||||||
#include "common/swap.h"
 | 
					#include "common/swap.h"
 | 
				
			||||||
#include "core/constants.h"
 | 
					#include "core/constants.h"
 | 
				
			||||||
 | 
					#include "core/core.h"
 | 
				
			||||||
#include "core/core_timing.h"
 | 
					#include "core/core_timing.h"
 | 
				
			||||||
#include "core/file_sys/control_metadata.h"
 | 
					#include "core/file_sys/control_metadata.h"
 | 
				
			||||||
#include "core/file_sys/patch_manager.h"
 | 
					#include "core/file_sys/patch_manager.h"
 | 
				
			||||||
 | 
				
			|||||||
@ -3,8 +3,8 @@
 | 
				
			|||||||
// Refer to the license.txt file included.
 | 
					// Refer to the license.txt file included.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "common/logging/log.h"
 | 
					#include "common/logging/log.h"
 | 
				
			||||||
 | 
					#include "core/core.h"
 | 
				
			||||||
#include "core/hle/ipc_helpers.h"
 | 
					#include "core/hle/ipc_helpers.h"
 | 
				
			||||||
#include "core/hle/kernel/process.h"
 | 
					 | 
				
			||||||
#include "core/hle/service/am/am.h"
 | 
					#include "core/hle/service/am/am.h"
 | 
				
			||||||
#include "core/hle/service/am/applet_ae.h"
 | 
					#include "core/hle/service/am/applet_ae.h"
 | 
				
			||||||
#include "core/hle/service/nvflinger/nvflinger.h"
 | 
					#include "core/hle/service/nvflinger/nvflinger.h"
 | 
				
			||||||
 | 
				
			|||||||
@ -6,6 +6,7 @@
 | 
				
			|||||||
#include <numeric>
 | 
					#include <numeric>
 | 
				
			||||||
#include <vector>
 | 
					#include <vector>
 | 
				
			||||||
#include "common/logging/log.h"
 | 
					#include "common/logging/log.h"
 | 
				
			||||||
 | 
					#include "core/core.h"
 | 
				
			||||||
#include "core/file_sys/content_archive.h"
 | 
					#include "core/file_sys/content_archive.h"
 | 
				
			||||||
#include "core/file_sys/control_metadata.h"
 | 
					#include "core/file_sys/control_metadata.h"
 | 
				
			||||||
#include "core/file_sys/nca_metadata.h"
 | 
					#include "core/file_sys/nca_metadata.h"
 | 
				
			||||||
 | 
				
			|||||||
@ -2,6 +2,7 @@
 | 
				
			|||||||
// Licensed under GPLv2 or any later version
 | 
					// Licensed under GPLv2 or any later version
 | 
				
			||||||
// Refer to the license.txt file included.
 | 
					// Refer to the license.txt file included.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "core/core.h"
 | 
				
			||||||
#include "core/hle/ipc_helpers.h"
 | 
					#include "core/hle/ipc_helpers.h"
 | 
				
			||||||
#include "core/hle/service/apm/apm.h"
 | 
					#include "core/hle/service/apm/apm.h"
 | 
				
			||||||
#include "core/hle/service/apm/interface.h"
 | 
					#include "core/hle/service/apm/interface.h"
 | 
				
			||||||
 | 
				
			|||||||
@ -8,6 +8,7 @@
 | 
				
			|||||||
#include "common/hex_util.h"
 | 
					#include "common/hex_util.h"
 | 
				
			||||||
#include "common/logging/log.h"
 | 
					#include "common/logging/log.h"
 | 
				
			||||||
#include "common/string_util.h"
 | 
					#include "common/string_util.h"
 | 
				
			||||||
 | 
					#include "core/core.h"
 | 
				
			||||||
#include "core/file_sys/vfs.h"
 | 
					#include "core/file_sys/vfs.h"
 | 
				
			||||||
#include "core/hle/ipc_helpers.h"
 | 
					#include "core/hle/ipc_helpers.h"
 | 
				
			||||||
#include "core/hle/kernel/process.h"
 | 
					#include "core/hle/kernel/process.h"
 | 
				
			||||||
 | 
				
			|||||||
@ -3,6 +3,7 @@
 | 
				
			|||||||
// Refer to the license.txt file included.
 | 
					// Refer to the license.txt file included.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "common/logging/log.h"
 | 
					#include "common/logging/log.h"
 | 
				
			||||||
 | 
					#include "core/core.h"
 | 
				
			||||||
#include "core/hle/ipc_helpers.h"
 | 
					#include "core/hle/ipc_helpers.h"
 | 
				
			||||||
#include "core/hle/kernel/hle_ipc.h"
 | 
					#include "core/hle/kernel/hle_ipc.h"
 | 
				
			||||||
#include "core/hle/kernel/kernel.h"
 | 
					#include "core/hle/kernel/kernel.h"
 | 
				
			||||||
 | 
				
			|||||||
@ -5,6 +5,7 @@
 | 
				
			|||||||
#include <memory>
 | 
					#include <memory>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "common/logging/log.h"
 | 
					#include "common/logging/log.h"
 | 
				
			||||||
 | 
					#include "core/core.h"
 | 
				
			||||||
#include "core/hle/ipc_helpers.h"
 | 
					#include "core/hle/ipc_helpers.h"
 | 
				
			||||||
#include "core/hle/kernel/hle_ipc.h"
 | 
					#include "core/hle/kernel/hle_ipc.h"
 | 
				
			||||||
#include "core/hle/kernel/kernel.h"
 | 
					#include "core/hle/kernel/kernel.h"
 | 
				
			||||||
 | 
				
			|||||||
@ -5,6 +5,7 @@
 | 
				
			|||||||
#include <queue>
 | 
					#include <queue>
 | 
				
			||||||
#include "common/logging/log.h"
 | 
					#include "common/logging/log.h"
 | 
				
			||||||
#include "common/uuid.h"
 | 
					#include "common/uuid.h"
 | 
				
			||||||
 | 
					#include "core/core.h"
 | 
				
			||||||
#include "core/hle/ipc_helpers.h"
 | 
					#include "core/hle/ipc_helpers.h"
 | 
				
			||||||
#include "core/hle/kernel/readable_event.h"
 | 
					#include "core/hle/kernel/readable_event.h"
 | 
				
			||||||
#include "core/hle/kernel/writable_event.h"
 | 
					#include "core/hle/kernel/writable_event.h"
 | 
				
			||||||
 | 
				
			|||||||
@ -5,6 +5,7 @@
 | 
				
			|||||||
#include <memory>
 | 
					#include <memory>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "common/logging/log.h"
 | 
					#include "common/logging/log.h"
 | 
				
			||||||
 | 
					#include "core/core.h"
 | 
				
			||||||
#include "core/file_sys/control_metadata.h"
 | 
					#include "core/file_sys/control_metadata.h"
 | 
				
			||||||
#include "core/hle/ipc_helpers.h"
 | 
					#include "core/hle/ipc_helpers.h"
 | 
				
			||||||
#include "core/hle/kernel/hle_ipc.h"
 | 
					#include "core/hle/kernel/hle_ipc.h"
 | 
				
			||||||
 | 
				
			|||||||
@ -9,6 +9,7 @@
 | 
				
			|||||||
#include "common/alignment.h"
 | 
					#include "common/alignment.h"
 | 
				
			||||||
#include "common/hex_util.h"
 | 
					#include "common/hex_util.h"
 | 
				
			||||||
#include "common/scope_exit.h"
 | 
					#include "common/scope_exit.h"
 | 
				
			||||||
 | 
					#include "core/core.h"
 | 
				
			||||||
#include "core/hle/ipc_helpers.h"
 | 
					#include "core/hle/ipc_helpers.h"
 | 
				
			||||||
#include "core/hle/kernel/errors.h"
 | 
					#include "core/hle/kernel/errors.h"
 | 
				
			||||||
#include "core/hle/kernel/memory/page_table.h"
 | 
					#include "core/hle/kernel/memory/page_table.h"
 | 
				
			||||||
 | 
				
			|||||||
@ -7,6 +7,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "common/logging/log.h"
 | 
					#include "common/logging/log.h"
 | 
				
			||||||
#include "common/scope_exit.h"
 | 
					#include "common/scope_exit.h"
 | 
				
			||||||
 | 
					#include "core/core.h"
 | 
				
			||||||
#include "core/hle/ipc_helpers.h"
 | 
					#include "core/hle/ipc_helpers.h"
 | 
				
			||||||
#include "core/hle/service/lm/lm.h"
 | 
					#include "core/hle/service/lm/lm.h"
 | 
				
			||||||
#include "core/hle/service/lm/manager.h"
 | 
					#include "core/hle/service/lm/manager.h"
 | 
				
			||||||
 | 
				
			|||||||
@ -5,6 +5,7 @@
 | 
				
			|||||||
#include <utility>
 | 
					#include <utility>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <fmt/format.h>
 | 
					#include <fmt/format.h>
 | 
				
			||||||
 | 
					#include "core/core.h"
 | 
				
			||||||
#include "core/hle/ipc_helpers.h"
 | 
					#include "core/hle/ipc_helpers.h"
 | 
				
			||||||
#include "core/hle/kernel/readable_event.h"
 | 
					#include "core/hle/kernel/readable_event.h"
 | 
				
			||||||
#include "core/hle/kernel/writable_event.h"
 | 
					#include "core/hle/kernel/writable_event.h"
 | 
				
			||||||
 | 
				
			|||||||
@ -2,6 +2,7 @@
 | 
				
			|||||||
// Licensed under GPLv2 or any later version
 | 
					// Licensed under GPLv2 or any later version
 | 
				
			||||||
// Refer to the license.txt file included.
 | 
					// Refer to the license.txt file included.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "core/core.h"
 | 
				
			||||||
#include "core/hle/ipc_helpers.h"
 | 
					#include "core/hle/ipc_helpers.h"
 | 
				
			||||||
#include "core/hle/kernel/kernel.h"
 | 
					#include "core/hle/kernel/kernel.h"
 | 
				
			||||||
#include "core/hle/kernel/process.h"
 | 
					#include "core/hle/kernel/process.h"
 | 
				
			||||||
 | 
				
			|||||||
@ -4,6 +4,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "common/hex_util.h"
 | 
					#include "common/hex_util.h"
 | 
				
			||||||
#include "common/logging/log.h"
 | 
					#include "common/logging/log.h"
 | 
				
			||||||
 | 
					#include "core/core.h"
 | 
				
			||||||
#include "core/hle/ipc_helpers.h"
 | 
					#include "core/hle/ipc_helpers.h"
 | 
				
			||||||
#include "core/hle/kernel/process.h"
 | 
					#include "core/hle/kernel/process.h"
 | 
				
			||||||
#include "core/hle/service/acc/profile_manager.h"
 | 
					#include "core/hle/service/acc/profile_manager.h"
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user