mirror of
https://github.com/yuzu-emu/yuzu.git
synced 2025-04-21 11:40:12 +00:00
fs: Add missing types and fix compilation problems
This commit is contained in:
parent
b14f38946c
commit
fe3fcb0730
@ -51,6 +51,7 @@ add_library(core STATIC
|
|||||||
file_sys/control_metadata.cpp
|
file_sys/control_metadata.cpp
|
||||||
file_sys/control_metadata.h
|
file_sys/control_metadata.h
|
||||||
file_sys/errors.h
|
file_sys/errors.h
|
||||||
|
file_sys/fs_common.h
|
||||||
file_sys/fs_directory.h
|
file_sys/fs_directory.h
|
||||||
file_sys/fs_file.h
|
file_sys/fs_file.h
|
||||||
file_sys/fs_filesystem.h
|
file_sys/fs_filesystem.h
|
||||||
@ -58,17 +59,29 @@ add_library(core STATIC
|
|||||||
file_sys/fs_operate_range.h
|
file_sys/fs_operate_range.h
|
||||||
file_sys/fs_path.h
|
file_sys/fs_path.h
|
||||||
file_sys/fs_path_utility.h
|
file_sys/fs_path_utility.h
|
||||||
|
file_sys/fs_program_index_map_info.h
|
||||||
file_sys/fs_save_data_types.h
|
file_sys/fs_save_data_types.h
|
||||||
file_sys/fs_string_util.h
|
file_sys/fs_string_util.h
|
||||||
file_sys/fs_program_index_map_info.h
|
|
||||||
file_sys/fsa/fs_i_directory.h
|
file_sys/fsa/fs_i_directory.h
|
||||||
file_sys/fsa/fs_i_file.h
|
file_sys/fsa/fs_i_file.h
|
||||||
file_sys/fsa/fs_i_filesystem.h
|
file_sys/fsa/fs_i_filesystem.h
|
||||||
file_sys/fsmitm_romfsbuild.cpp
|
file_sys/fsmitm_romfsbuild.cpp
|
||||||
file_sys/fsmitm_romfsbuild.h
|
file_sys/fsmitm_romfsbuild.h
|
||||||
|
file_sys/fssrv/fssrv_program_registry_impl.cpp
|
||||||
|
file_sys/fssrv/fssrv_program_registry_impl.h
|
||||||
|
file_sys/fssrv/fssrv_program_registry_service.cpp
|
||||||
|
file_sys/fssrv/fssrv_program_registry_service.h
|
||||||
file_sys/fssrv/fssrv_sf_path.h
|
file_sys/fssrv/fssrv_sf_path.h
|
||||||
|
file_sys/fssrv/impl/fssrv_access_control.cpp
|
||||||
|
file_sys/fssrv/impl/fssrv_access_control.h
|
||||||
|
file_sys/fssrv/impl/fssrv_access_control_bits.h
|
||||||
|
file_sys/fssrv/impl/fssrv_program_index_map_info_manager.h
|
||||||
|
file_sys/fssrv/impl/fssrv_program_info.cpp
|
||||||
|
file_sys/fssrv/impl/fssrv_program_info.h
|
||||||
|
file_sys/fssrv/impl/fssrv_program_registry_manager.cpp
|
||||||
|
file_sys/fssrv/impl/fssrv_program_registry_manager.h
|
||||||
|
file_sys/fssrv/impl/fssrv_save_data_properties.h
|
||||||
file_sys/fssystem/fs_i_storage.h
|
file_sys/fssystem/fs_i_storage.h
|
||||||
file_sys/fssystem/fs_types.h
|
|
||||||
file_sys/fssystem/fssystem_aes_ctr_counter_extended_storage.cpp
|
file_sys/fssystem/fssystem_aes_ctr_counter_extended_storage.cpp
|
||||||
file_sys/fssystem/fssystem_aes_ctr_counter_extended_storage.h
|
file_sys/fssystem/fssystem_aes_ctr_counter_extended_storage.h
|
||||||
file_sys/fssystem/fssystem_aes_ctr_storage.cpp
|
file_sys/fssystem/fssystem_aes_ctr_storage.cpp
|
||||||
@ -110,19 +123,6 @@ add_library(core STATIC
|
|||||||
file_sys/fssystem/fssystem_switch_storage.h
|
file_sys/fssystem/fssystem_switch_storage.h
|
||||||
file_sys/fssystem/fssystem_utility.cpp
|
file_sys/fssystem/fssystem_utility.cpp
|
||||||
file_sys/fssystem/fssystem_utility.h
|
file_sys/fssystem/fssystem_utility.h
|
||||||
file_sys/fssrv/impl/fssrv_program_info.cpp
|
|
||||||
file_sys/fssrv/impl/fssrv_program_info.h
|
|
||||||
file_sys/fssrv/impl/fssrv_access_control.h
|
|
||||||
file_sys/fssrv/impl/fssrv_access_control.cpp
|
|
||||||
file_sys/fssrv/impl/fssrv_access_control_bits.h
|
|
||||||
file_sys/fssrv/impl/fssrv_program_registry_manager.cpp
|
|
||||||
file_sys/fssrv/impl/fssrv_program_registry_manager.h
|
|
||||||
file_sys/fssrv/impl/fssrv_program_index_map_info_manager.h
|
|
||||||
file_sys/fssrv/impl/fssrv_save_data_properties.h
|
|
||||||
file_sys/fssrv/fssrv_program_registry_impl.h
|
|
||||||
file_sys/fssrv/fssrv_program_registry_impl.cpp
|
|
||||||
file_sys/fssrv/fssrv_program_registry_service.h
|
|
||||||
file_sys/fssrv/fssrv_program_registry_service.cpp
|
|
||||||
file_sys/ips_layer.cpp
|
file_sys/ips_layer.cpp
|
||||||
file_sys/ips_layer.h
|
file_sys/ips_layer.h
|
||||||
file_sys/kernel_executable.cpp
|
file_sys/kernel_executable.cpp
|
||||||
@ -510,33 +510,33 @@ add_library(core STATIC
|
|||||||
hle/service/apm/apm_controller.h
|
hle/service/apm/apm_controller.h
|
||||||
hle/service/apm/apm_interface.cpp
|
hle/service/apm/apm_interface.cpp
|
||||||
hle/service/apm/apm_interface.h
|
hle/service/apm/apm_interface.h
|
||||||
|
hle/service/audio/audio.cpp
|
||||||
|
hle/service/audio/audio.h
|
||||||
hle/service/audio/audio_controller.cpp
|
hle/service/audio/audio_controller.cpp
|
||||||
hle/service/audio/audio_controller.h
|
hle/service/audio/audio_controller.h
|
||||||
hle/service/audio/audio_device.cpp
|
hle/service/audio/audio_device.cpp
|
||||||
hle/service/audio/audio_device.h
|
hle/service/audio/audio_device.h
|
||||||
hle/service/audio/audio_in_manager.cpp
|
|
||||||
hle/service/audio/audio_in_manager.h
|
|
||||||
hle/service/audio/audio_in.cpp
|
hle/service/audio/audio_in.cpp
|
||||||
hle/service/audio/audio_in.h
|
hle/service/audio/audio_in.h
|
||||||
hle/service/audio/audio_out_manager.cpp
|
hle/service/audio/audio_in_manager.cpp
|
||||||
hle/service/audio/audio_out_manager.h
|
hle/service/audio/audio_in_manager.h
|
||||||
hle/service/audio/audio_out.cpp
|
hle/service/audio/audio_out.cpp
|
||||||
hle/service/audio/audio_out.h
|
hle/service/audio/audio_out.h
|
||||||
hle/service/audio/audio_renderer_manager.cpp
|
hle/service/audio/audio_out_manager.cpp
|
||||||
hle/service/audio/audio_renderer_manager.h
|
hle/service/audio/audio_out_manager.h
|
||||||
hle/service/audio/audio_renderer.cpp
|
hle/service/audio/audio_renderer.cpp
|
||||||
hle/service/audio/audio_renderer.h
|
hle/service/audio/audio_renderer.h
|
||||||
hle/service/audio/audio.cpp
|
hle/service/audio/audio_renderer_manager.cpp
|
||||||
hle/service/audio/audio.h
|
hle/service/audio/audio_renderer_manager.h
|
||||||
hle/service/audio/errors.h
|
hle/service/audio/errors.h
|
||||||
hle/service/audio/final_output_recorder_manager_for_applet.cpp
|
|
||||||
hle/service/audio/final_output_recorder_manager_for_applet.h
|
|
||||||
hle/service/audio/final_output_recorder_manager.cpp
|
hle/service/audio/final_output_recorder_manager.cpp
|
||||||
hle/service/audio/final_output_recorder_manager.h
|
hle/service/audio/final_output_recorder_manager.h
|
||||||
hle/service/audio/hardware_opus_decoder_manager.cpp
|
hle/service/audio/final_output_recorder_manager_for_applet.cpp
|
||||||
hle/service/audio/hardware_opus_decoder_manager.h
|
hle/service/audio/final_output_recorder_manager_for_applet.h
|
||||||
hle/service/audio/hardware_opus_decoder.cpp
|
hle/service/audio/hardware_opus_decoder.cpp
|
||||||
hle/service/audio/hardware_opus_decoder.h
|
hle/service/audio/hardware_opus_decoder.h
|
||||||
|
hle/service/audio/hardware_opus_decoder_manager.cpp
|
||||||
|
hle/service/audio/hardware_opus_decoder_manager.h
|
||||||
hle/service/bcat/backend/backend.cpp
|
hle/service/bcat/backend/backend.cpp
|
||||||
hle/service/bcat/backend/backend.h
|
hle/service/bcat/backend/backend.h
|
||||||
hle/service/bcat/bcat.cpp
|
hle/service/bcat/bcat.cpp
|
||||||
@ -628,14 +628,14 @@ add_library(core STATIC
|
|||||||
hle/service/filesystem/fsp/fs_i_filesystem.h
|
hle/service/filesystem/fsp/fs_i_filesystem.h
|
||||||
hle/service/filesystem/fsp/fs_i_multi_commit_manager.cpp
|
hle/service/filesystem/fsp/fs_i_multi_commit_manager.cpp
|
||||||
hle/service/filesystem/fsp/fs_i_multi_commit_manager.h
|
hle/service/filesystem/fsp/fs_i_multi_commit_manager.h
|
||||||
|
hle/service/filesystem/fsp/fs_i_program_registry.cpp
|
||||||
|
hle/service/filesystem/fsp/fs_i_program_registry.h
|
||||||
hle/service/filesystem/fsp/fs_i_save_data_info_reader.cpp
|
hle/service/filesystem/fsp/fs_i_save_data_info_reader.cpp
|
||||||
hle/service/filesystem/fsp/fs_i_save_data_info_reader.h
|
hle/service/filesystem/fsp/fs_i_save_data_info_reader.h
|
||||||
hle/service/filesystem/fsp/fs_i_storage.cpp
|
hle/service/filesystem/fsp/fs_i_storage.cpp
|
||||||
hle/service/filesystem/fsp/fs_i_storage.h
|
hle/service/filesystem/fsp/fs_i_storage.h
|
||||||
hle/service/filesystem/fsp/fsp_ldr.cpp
|
hle/service/filesystem/fsp/fsp_ldr.cpp
|
||||||
hle/service/filesystem/fsp/fsp_ldr.h
|
hle/service/filesystem/fsp/fsp_ldr.h
|
||||||
hle/service/filesystem/fsp/fs_i_program_registry.cpp
|
|
||||||
hle/service/filesystem/fsp/fs_i_program_registry.h
|
|
||||||
hle/service/filesystem/fsp/fsp_srv.cpp
|
hle/service/filesystem/fsp/fsp_srv.cpp
|
||||||
hle/service/filesystem/fsp/fsp_srv.h
|
hle/service/filesystem/fsp/fsp_srv.h
|
||||||
hle/service/filesystem/fsp/fsp_types.h
|
hle/service/filesystem/fsp/fsp_types.h
|
||||||
@ -901,12 +901,12 @@ add_library(core STATIC
|
|||||||
hle/service/olsc/daemon_controller.h
|
hle/service/olsc/daemon_controller.h
|
||||||
hle/service/olsc/native_handle_holder.cpp
|
hle/service/olsc/native_handle_holder.cpp
|
||||||
hle/service/olsc/native_handle_holder.h
|
hle/service/olsc/native_handle_holder.h
|
||||||
|
hle/service/olsc/olsc.cpp
|
||||||
|
hle/service/olsc/olsc.h
|
||||||
hle/service/olsc/olsc_service_for_application.cpp
|
hle/service/olsc/olsc_service_for_application.cpp
|
||||||
hle/service/olsc/olsc_service_for_application.h
|
hle/service/olsc/olsc_service_for_application.h
|
||||||
hle/service/olsc/olsc_service_for_system_service.cpp
|
hle/service/olsc/olsc_service_for_system_service.cpp
|
||||||
hle/service/olsc/olsc_service_for_system_service.h
|
hle/service/olsc/olsc_service_for_system_service.h
|
||||||
hle/service/olsc/olsc.cpp
|
|
||||||
hle/service/olsc/olsc.h
|
|
||||||
hle/service/olsc/remote_storage_controller.cpp
|
hle/service/olsc/remote_storage_controller.cpp
|
||||||
hle/service/olsc/remote_storage_controller.h
|
hle/service/olsc/remote_storage_controller.h
|
||||||
hle/service/olsc/transfer_task_list_controller.cpp
|
hle/service/olsc/transfer_task_list_controller.cpp
|
||||||
@ -930,10 +930,10 @@ add_library(core STATIC
|
|||||||
hle/service/os/mutex.h
|
hle/service/os/mutex.h
|
||||||
hle/service/pcie/pcie.cpp
|
hle/service/pcie/pcie.cpp
|
||||||
hle/service/pcie/pcie.h
|
hle/service/pcie/pcie.h
|
||||||
hle/service/pctl/parental_control_service_factory.cpp
|
|
||||||
hle/service/pctl/parental_control_service_factory.h
|
|
||||||
hle/service/pctl/parental_control_service.cpp
|
hle/service/pctl/parental_control_service.cpp
|
||||||
hle/service/pctl/parental_control_service.h
|
hle/service/pctl/parental_control_service.h
|
||||||
|
hle/service/pctl/parental_control_service_factory.cpp
|
||||||
|
hle/service/pctl/parental_control_service_factory.h
|
||||||
hle/service/pctl/pctl.cpp
|
hle/service/pctl/pctl.cpp
|
||||||
hle/service/pctl/pctl.h
|
hle/service/pctl/pctl.h
|
||||||
hle/service/pctl/pctl_results.h
|
hle/service/pctl/pctl_results.h
|
||||||
@ -945,14 +945,14 @@ add_library(core STATIC
|
|||||||
hle/service/prepo/prepo.cpp
|
hle/service/prepo/prepo.cpp
|
||||||
hle/service/prepo/prepo.h
|
hle/service/prepo/prepo.h
|
||||||
hle/service/psc/ovln/ovln_types.h
|
hle/service/psc/ovln/ovln_types.h
|
||||||
hle/service/psc/ovln/receiver_service.cpp
|
|
||||||
hle/service/psc/ovln/receiver_service.h
|
|
||||||
hle/service/psc/ovln/receiver.cpp
|
hle/service/psc/ovln/receiver.cpp
|
||||||
hle/service/psc/ovln/receiver.h
|
hle/service/psc/ovln/receiver.h
|
||||||
hle/service/psc/ovln/sender_service.cpp
|
hle/service/psc/ovln/receiver_service.cpp
|
||||||
hle/service/psc/ovln/sender_service.h
|
hle/service/psc/ovln/receiver_service.h
|
||||||
hle/service/psc/ovln/sender.cpp
|
hle/service/psc/ovln/sender.cpp
|
||||||
hle/service/psc/ovln/sender.h
|
hle/service/psc/ovln/sender.h
|
||||||
|
hle/service/psc/ovln/sender_service.cpp
|
||||||
|
hle/service/psc/ovln/sender_service.h
|
||||||
hle/service/psc/pm_control.cpp
|
hle/service/psc/pm_control.cpp
|
||||||
hle/service/psc/pm_control.h
|
hle/service/psc/pm_control.h
|
||||||
hle/service/psc/pm_module.cpp
|
hle/service/psc/pm_module.cpp
|
||||||
|
@ -30,14 +30,6 @@ struct Int64 {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct HashSalt {
|
|
||||||
static constexpr size_t Size = 32;
|
|
||||||
|
|
||||||
std::array<u8, Size> value;
|
|
||||||
};
|
|
||||||
static_assert(std::is_trivial_v<HashSalt>);
|
|
||||||
static_assert(sizeof(HashSalt) == HashSalt::Size);
|
|
||||||
|
|
||||||
constexpr inline size_t IntegrityMinLayerCount = 2;
|
constexpr inline size_t IntegrityMinLayerCount = 2;
|
||||||
constexpr inline size_t IntegrityMaxLayerCount = 7;
|
constexpr inline size_t IntegrityMaxLayerCount = 7;
|
||||||
constexpr inline size_t IntegrityLayerCountSave = 5;
|
constexpr inline size_t IntegrityLayerCountSave = 5;
|
@ -41,6 +41,8 @@ enum class SaveDataRank : u8 {
|
|||||||
Secondary = 1,
|
Secondary = 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum class SaveDataFormatType : u8 { Normal = 0, NoJournal = 1 };
|
||||||
|
|
||||||
struct SaveDataSize {
|
struct SaveDataSize {
|
||||||
u64 normal;
|
u64 normal;
|
||||||
u64 journal;
|
u64 journal;
|
||||||
@ -68,28 +70,13 @@ enum class SaveDataMetaType : u8 {
|
|||||||
ExtensionContext = 2,
|
ExtensionContext = 2,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct SaveDataMetaInfo {
|
struct HashSalt {
|
||||||
u32 size;
|
static constexpr size_t Size = 32;
|
||||||
SaveDataMetaType type;
|
|
||||||
INSERT_PADDING_BYTES(0xB);
|
|
||||||
};
|
|
||||||
static_assert(std::is_trivially_copyable_v<SaveDataMetaInfo>,
|
|
||||||
"Data type must be trivially copyable.");
|
|
||||||
static_assert(sizeof(SaveDataMetaInfo) == 0x10, "SaveDataMetaInfo has invalid size.");
|
|
||||||
|
|
||||||
struct SaveDataCreationInfo {
|
std::array<u8, Size> value;
|
||||||
s64 size;
|
|
||||||
s64 journal_size;
|
|
||||||
s64 block_size;
|
|
||||||
u64 owner_id;
|
|
||||||
u32 flags;
|
|
||||||
SaveDataSpaceId space_id;
|
|
||||||
bool pseudo;
|
|
||||||
INSERT_PADDING_BYTES(0x1A);
|
|
||||||
};
|
};
|
||||||
static_assert(std::is_trivially_copyable_v<SaveDataCreationInfo>,
|
static_assert(std::is_trivially_copyable_v<HashSalt>, "Data type must be trivially copyable.");
|
||||||
"Data type must be trivially copyable.");
|
static_assert(sizeof(HashSalt) == HashSalt::Size);
|
||||||
static_assert(sizeof(SaveDataCreationInfo) == 0x40, "SaveDataCreationInfo has invalid size.");
|
|
||||||
|
|
||||||
struct SaveDataAttribute {
|
struct SaveDataAttribute {
|
||||||
ProgramId program_id;
|
ProgramId program_id;
|
||||||
@ -149,12 +136,73 @@ constexpr inline bool operator!=(const SaveDataAttribute& lhs, const SaveDataAtt
|
|||||||
return !(lhs == rhs);
|
return !(lhs == rhs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct SaveDataMetaInfo {
|
||||||
|
u32 size;
|
||||||
|
SaveDataMetaType type;
|
||||||
|
INSERT_PADDING_BYTES(0xB);
|
||||||
|
};
|
||||||
|
static_assert(std::is_trivially_copyable_v<SaveDataMetaInfo>,
|
||||||
|
"Data type must be trivially copyable.");
|
||||||
|
static_assert(sizeof(SaveDataMetaInfo) == 0x10, "SaveDataMetaInfo has invalid size.");
|
||||||
|
|
||||||
|
struct SaveDataInfo {
|
||||||
|
u64_le save_id_unknown;
|
||||||
|
FileSys::SaveDataSpaceId space;
|
||||||
|
FileSys::SaveDataType type;
|
||||||
|
INSERT_PADDING_BYTES(0x6);
|
||||||
|
std::array<u8, 0x10> user_id;
|
||||||
|
u64_le save_id;
|
||||||
|
u64_le title_id;
|
||||||
|
u64_le save_image_size;
|
||||||
|
u16_le index;
|
||||||
|
FileSys::SaveDataRank rank;
|
||||||
|
INSERT_PADDING_BYTES(0x25);
|
||||||
|
};
|
||||||
|
static_assert(sizeof(SaveDataInfo) == 0x60, "SaveDataInfo has incorrect size.");
|
||||||
|
|
||||||
|
struct SaveDataCreationInfo {
|
||||||
|
s64 size;
|
||||||
|
s64 journal_size;
|
||||||
|
s64 block_size;
|
||||||
|
u64 owner_id;
|
||||||
|
u32 flags;
|
||||||
|
SaveDataSpaceId space_id;
|
||||||
|
bool pseudo;
|
||||||
|
INSERT_PADDING_BYTES(0x1A);
|
||||||
|
};
|
||||||
|
static_assert(std::is_trivially_copyable_v<SaveDataCreationInfo>,
|
||||||
|
"Data type must be trivially copyable.");
|
||||||
|
static_assert(sizeof(SaveDataCreationInfo) == 0x40, "SaveDataCreationInfo has invalid size.");
|
||||||
|
|
||||||
|
const u32 SaveDataCreationInfoV2Version = 0x00010000;
|
||||||
|
struct SaveDataCreationInfoV2 {
|
||||||
|
u32 version;
|
||||||
|
SaveDataAttribute attribute;
|
||||||
|
s64 size;
|
||||||
|
s64 journal_size;
|
||||||
|
s64 block_size;
|
||||||
|
u64 owner_id;
|
||||||
|
SaveDataFlags flags;
|
||||||
|
SaveDataSpaceId space_id;
|
||||||
|
SaveDataFormatType format_type;
|
||||||
|
INSERT_PADDING_BYTES(0x2);
|
||||||
|
bool is_hash_salt_enabled;
|
||||||
|
INSERT_PADDING_BYTES(0x3);
|
||||||
|
HashSalt hash_salt;
|
||||||
|
SaveDataMetaType meta_type;
|
||||||
|
INSERT_PADDING_BYTES(0x3);
|
||||||
|
s32 meta_size;
|
||||||
|
INSERT_PADDING_BYTES(0x164);
|
||||||
|
};
|
||||||
|
static_assert(sizeof(SaveDataCreationInfoV2) == 0x200,
|
||||||
|
"SaveDataCreationInfoV2 has incorrect size.");
|
||||||
|
|
||||||
struct SaveDataExtraData {
|
struct SaveDataExtraData {
|
||||||
SaveDataAttribute attr;
|
SaveDataAttribute attr;
|
||||||
u64 owner_id;
|
u64 owner_id;
|
||||||
s64 timestamp;
|
s64 timestamp;
|
||||||
u32 flags;
|
u32 flags;
|
||||||
INSERT_PADDING_BYTES(4);
|
INSERT_PADDING_BYTES(0x4);
|
||||||
s64 available_size;
|
s64 available_size;
|
||||||
s64 journal_size;
|
s64 journal_size;
|
||||||
s64 commit_id;
|
s64 commit_id;
|
||||||
|
@ -73,7 +73,7 @@ void InitializeInitialAndCurrentProcessId(Core::System& system) {
|
|||||||
ASSERT(Svc::GetProcessId(system, std::addressof(g_current_process_id),
|
ASSERT(Svc::GetProcessId(system, std::addressof(g_current_process_id),
|
||||||
Svc::PseudoHandle::CurrentProcess) == ResultSuccess);
|
Svc::PseudoHandle::CurrentProcess) == ResultSuccess);
|
||||||
|
|
||||||
/* Set initialized. */
|
// Set initialized
|
||||||
g_initialized = true;
|
g_initialized = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
#include "common/assert.h"
|
#include "common/assert.h"
|
||||||
#include "common/common_types.h"
|
#include "common/common_types.h"
|
||||||
#include "core/file_sys/savedata_factory.h"
|
#include "core/file_sys/fs_save_data_types.h"
|
||||||
|
|
||||||
namespace FileSys::FsSrv::Impl {
|
namespace FileSys::FsSrv::Impl {
|
||||||
|
|
||||||
@ -30,13 +30,13 @@ public:
|
|||||||
|
|
||||||
static bool IsJournalingSupported(SaveDataType type) {
|
static bool IsJournalingSupported(SaveDataType type) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case SaveDataType::SystemSaveData:
|
case SaveDataType::System:
|
||||||
case SaveDataType::SaveData:
|
case SaveDataType::Account:
|
||||||
case SaveDataType::BcatDeliveryCacheStorage:
|
case SaveDataType::Bcat:
|
||||||
case SaveDataType::DeviceSaveData:
|
case SaveDataType::Device:
|
||||||
case SaveDataType::CacheStorage:
|
case SaveDataType::Cache:
|
||||||
return true;
|
return true;
|
||||||
case SaveDataType::TemporaryStorage:
|
case SaveDataType::Temporary:
|
||||||
return false;
|
return false;
|
||||||
default:
|
default:
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
@ -46,13 +46,13 @@ public:
|
|||||||
|
|
||||||
static bool IsMultiCommitSupported(SaveDataType type) {
|
static bool IsMultiCommitSupported(SaveDataType type) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case SaveDataType::SystemSaveData:
|
case SaveDataType::System:
|
||||||
case SaveDataType::SaveData:
|
case SaveDataType::Account:
|
||||||
case SaveDataType::DeviceSaveData:
|
case SaveDataType::Device:
|
||||||
return true;
|
return true;
|
||||||
case SaveDataType::BcatDeliveryCacheStorage:
|
case SaveDataType::Bcat:
|
||||||
case SaveDataType::TemporaryStorage:
|
case SaveDataType::Temporary:
|
||||||
case SaveDataType::CacheStorage:
|
case SaveDataType::Cache:
|
||||||
return false;
|
return false;
|
||||||
default:
|
default:
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
@ -62,13 +62,13 @@ public:
|
|||||||
|
|
||||||
static bool IsSharedOpenNeeded(SaveDataType type) {
|
static bool IsSharedOpenNeeded(SaveDataType type) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case SaveDataType::SystemSaveData:
|
case SaveDataType::System:
|
||||||
case SaveDataType::BcatDeliveryCacheStorage:
|
case SaveDataType::Bcat:
|
||||||
case SaveDataType::TemporaryStorage:
|
case SaveDataType::Temporary:
|
||||||
case SaveDataType::CacheStorage:
|
case SaveDataType::Cache:
|
||||||
return false;
|
return false;
|
||||||
case SaveDataType::SaveData:
|
case SaveDataType::Account:
|
||||||
case SaveDataType::DeviceSaveData:
|
case SaveDataType::Device:
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
@ -78,13 +78,13 @@ public:
|
|||||||
|
|
||||||
static bool CanUseIndexerReservedArea(SaveDataType type) {
|
static bool CanUseIndexerReservedArea(SaveDataType type) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case SaveDataType::SystemSaveData:
|
case SaveDataType::System:
|
||||||
return true;
|
return true;
|
||||||
case SaveDataType::SaveData:
|
case SaveDataType::Account:
|
||||||
case SaveDataType::BcatDeliveryCacheStorage:
|
case SaveDataType::Bcat:
|
||||||
case SaveDataType::DeviceSaveData:
|
case SaveDataType::Device:
|
||||||
case SaveDataType::TemporaryStorage:
|
case SaveDataType::Temporary:
|
||||||
case SaveDataType::CacheStorage:
|
case SaveDataType::Cache:
|
||||||
return false;
|
return false;
|
||||||
default:
|
default:
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
@ -94,13 +94,13 @@ public:
|
|||||||
|
|
||||||
static bool IsSystemSaveData(SaveDataType type) {
|
static bool IsSystemSaveData(SaveDataType type) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case SaveDataType::SystemSaveData:
|
case SaveDataType::System:
|
||||||
return true;
|
return true;
|
||||||
case SaveDataType::SaveData:
|
case SaveDataType::Account:
|
||||||
case SaveDataType::BcatDeliveryCacheStorage:
|
case SaveDataType::Bcat:
|
||||||
case SaveDataType::DeviceSaveData:
|
case SaveDataType::Device:
|
||||||
case SaveDataType::TemporaryStorage:
|
case SaveDataType::Temporary:
|
||||||
case SaveDataType::CacheStorage:
|
case SaveDataType::Cache:
|
||||||
return false;
|
return false;
|
||||||
default:
|
default:
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
@ -117,13 +117,13 @@ public:
|
|||||||
|
|
||||||
static bool IsWipingNeededAtCleanUp(const SaveDataInfo& info) {
|
static bool IsWipingNeededAtCleanUp(const SaveDataInfo& info) {
|
||||||
switch (info.type) {
|
switch (info.type) {
|
||||||
case SaveDataType::SystemSaveData:
|
case SaveDataType::System:
|
||||||
break;
|
break;
|
||||||
case SaveDataType::SaveData:
|
case SaveDataType::Account:
|
||||||
case SaveDataType::BcatDeliveryCacheStorage:
|
case SaveDataType::Bcat:
|
||||||
case SaveDataType::DeviceSaveData:
|
case SaveDataType::Device:
|
||||||
case SaveDataType::TemporaryStorage:
|
case SaveDataType::Temporary:
|
||||||
case SaveDataType::CacheStorage:
|
case SaveDataType::Cache:
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
@ -146,14 +146,14 @@ public:
|
|||||||
|
|
||||||
static bool IsValidSpaceIdForSaveDataMover(SaveDataType type, SaveDataSpaceId space_id) {
|
static bool IsValidSpaceIdForSaveDataMover(SaveDataType type, SaveDataSpaceId space_id) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case SaveDataType::SystemSaveData:
|
case SaveDataType::System:
|
||||||
case SaveDataType::SaveData:
|
case SaveDataType::Account:
|
||||||
case SaveDataType::BcatDeliveryCacheStorage:
|
case SaveDataType::Bcat:
|
||||||
case SaveDataType::DeviceSaveData:
|
case SaveDataType::Device:
|
||||||
case SaveDataType::TemporaryStorage:
|
case SaveDataType::Temporary:
|
||||||
return false;
|
return false;
|
||||||
case SaveDataType::CacheStorage:
|
case SaveDataType::Cache:
|
||||||
return space_id == SaveDataSpaceId::NandUser || space_id == SaveDataSpaceId::SdCardUser;
|
return space_id == SaveDataSpaceId::User || space_id == SaveDataSpaceId::SdUser;
|
||||||
default:
|
default:
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
return false;
|
return false;
|
||||||
@ -162,26 +162,26 @@ public:
|
|||||||
|
|
||||||
static bool IsReconstructible(SaveDataType type, SaveDataSpaceId space_id) {
|
static bool IsReconstructible(SaveDataType type, SaveDataSpaceId space_id) {
|
||||||
switch (space_id) {
|
switch (space_id) {
|
||||||
case SaveDataSpaceId::NandSystem:
|
case SaveDataSpaceId::System:
|
||||||
case SaveDataSpaceId::NandUser:
|
case SaveDataSpaceId::User:
|
||||||
case SaveDataSpaceId::ProperSystem:
|
case SaveDataSpaceId::ProperSystem:
|
||||||
case SaveDataSpaceId::SafeMode:
|
case SaveDataSpaceId::SafeMode:
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case SaveDataType::SystemSaveData:
|
case SaveDataType::System:
|
||||||
case SaveDataType::SaveData:
|
case SaveDataType::Account:
|
||||||
case SaveDataType::DeviceSaveData:
|
case SaveDataType::Device:
|
||||||
return false;
|
return false;
|
||||||
case SaveDataType::BcatDeliveryCacheStorage:
|
case SaveDataType::Bcat:
|
||||||
case SaveDataType::TemporaryStorage:
|
case SaveDataType::Temporary:
|
||||||
case SaveDataType::CacheStorage:
|
case SaveDataType::Cache:
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
case SaveDataSpaceId::SdCardSystem:
|
case SaveDataSpaceId::SdSystem:
|
||||||
case SaveDataSpaceId::TemporaryStorage:
|
case SaveDataSpaceId::Temporary:
|
||||||
case SaveDataSpaceId::SdCardUser:
|
case SaveDataSpaceId::SdUser:
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
|
@ -4,8 +4,9 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "common/alignment.h"
|
#include "common/alignment.h"
|
||||||
|
#include "core/file_sys/fs_common.h"
|
||||||
|
#include "core/file_sys/fs_save_data_types.h"
|
||||||
#include "core/file_sys/fssystem/fs_i_storage.h"
|
#include "core/file_sys/fssystem/fs_i_storage.h"
|
||||||
#include "core/file_sys/fssystem/fs_types.h"
|
|
||||||
#include "core/file_sys/fssystem/fssystem_alignment_matching_storage.h"
|
#include "core/file_sys/fssystem/fssystem_alignment_matching_storage.h"
|
||||||
#include "core/file_sys/fssystem/fssystem_integrity_verification_storage.h"
|
#include "core/file_sys/fssystem/fssystem_integrity_verification_storage.h"
|
||||||
#include "core/file_sys/vfs/vfs_offset.h"
|
#include "core/file_sys/vfs/vfs_offset.h"
|
||||||
|
@ -5,8 +5,8 @@
|
|||||||
|
|
||||||
#include <optional>
|
#include <optional>
|
||||||
|
|
||||||
|
#include "core/file_sys/fs_common.h"
|
||||||
#include "core/file_sys/fssystem/fs_i_storage.h"
|
#include "core/file_sys/fssystem/fs_i_storage.h"
|
||||||
#include "core/file_sys/fssystem/fs_types.h"
|
|
||||||
|
|
||||||
namespace FileSys {
|
namespace FileSys {
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
#include "common/literals.h"
|
#include "common/literals.h"
|
||||||
|
|
||||||
#include "core/file_sys/errors.h"
|
#include "core/file_sys/errors.h"
|
||||||
#include "core/file_sys/fssystem/fs_types.h"
|
#include "core/file_sys/fs_common.h"
|
||||||
|
|
||||||
namespace FileSys {
|
namespace FileSys {
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ static u64 stoull_be(std::string_view str) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Result ISaveDataInfoReader::ReadSaveDataInfo(
|
Result ISaveDataInfoReader::ReadSaveDataInfo(
|
||||||
Out<u64> out_count, OutArray<SaveDataInfo, BufferAttr_HipcMapAlias> out_entries) {
|
Out<u64> out_count, OutArray<FileSys::SaveDataInfo, BufferAttr_HipcMapAlias> out_entries) {
|
||||||
LOG_DEBUG(Service_FS, "called");
|
LOG_DEBUG(Service_FS, "called");
|
||||||
|
|
||||||
// Calculate how many entries we can fit in the output buffer
|
// Calculate how many entries we can fit in the output buffer
|
||||||
@ -93,7 +93,7 @@ void ISaveDataInfoReader::FindNormalSaves(FileSys::SaveDataSpaceId space,
|
|||||||
|
|
||||||
if (save_id_numeric != 0) {
|
if (save_id_numeric != 0) {
|
||||||
// System Save Data
|
// System Save Data
|
||||||
info.emplace_back(SaveDataInfo{
|
info.emplace_back(FileSys::SaveDataInfo{
|
||||||
0,
|
0,
|
||||||
space,
|
space,
|
||||||
FileSys::SaveDataType::System,
|
FileSys::SaveDataType::System,
|
||||||
@ -112,7 +112,7 @@ void ISaveDataInfoReader::FindNormalSaves(FileSys::SaveDataSpaceId space,
|
|||||||
for (const auto& title_id : user_id->GetSubdirectories()) {
|
for (const auto& title_id : user_id->GetSubdirectories()) {
|
||||||
const auto device = std::all_of(user_id_numeric.begin(), user_id_numeric.end(),
|
const auto device = std::all_of(user_id_numeric.begin(), user_id_numeric.end(),
|
||||||
[](u8 val) { return val == 0; });
|
[](u8 val) { return val == 0; });
|
||||||
info.emplace_back(SaveDataInfo{
|
info.emplace_back(FileSys::SaveDataInfo{
|
||||||
0,
|
0,
|
||||||
space,
|
space,
|
||||||
device ? FileSys::SaveDataType::Device : FileSys::SaveDataType::Account,
|
device ? FileSys::SaveDataType::Device : FileSys::SaveDataType::Account,
|
||||||
@ -141,7 +141,7 @@ void ISaveDataInfoReader::FindTemporaryStorageSaves(FileSys::SaveDataSpaceId spa
|
|||||||
auto user_id_numeric = Common::HexStringToArray<0x10>(user_id->GetName());
|
auto user_id_numeric = Common::HexStringToArray<0x10>(user_id->GetName());
|
||||||
std::reverse(user_id_numeric.begin(), user_id_numeric.end());
|
std::reverse(user_id_numeric.begin(), user_id_numeric.end());
|
||||||
|
|
||||||
info.emplace_back(SaveDataInfo{
|
info.emplace_back(FileSys::SaveDataInfo{
|
||||||
0,
|
0,
|
||||||
space,
|
space,
|
||||||
FileSys::SaveDataType::Temporary,
|
FileSys::SaveDataType::Temporary,
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include "common/common_types.h"
|
#include "common/common_types.h"
|
||||||
|
#include "core/file_sys/fs_save_data_types.h"
|
||||||
#include "core/hle/service/cmif_types.h"
|
#include "core/hle/service/cmif_types.h"
|
||||||
#include "core/hle/service/service.h"
|
#include "core/hle/service/service.h"
|
||||||
|
|
||||||
@ -19,23 +20,8 @@ public:
|
|||||||
FileSys::SaveDataSpaceId space);
|
FileSys::SaveDataSpaceId space);
|
||||||
~ISaveDataInfoReader() override;
|
~ISaveDataInfoReader() override;
|
||||||
|
|
||||||
struct SaveDataInfo {
|
|
||||||
u64_le save_id_unknown;
|
|
||||||
FileSys::SaveDataSpaceId space;
|
|
||||||
FileSys::SaveDataType type;
|
|
||||||
INSERT_PADDING_BYTES(0x6);
|
|
||||||
std::array<u8, 0x10> user_id;
|
|
||||||
u64_le save_id;
|
|
||||||
u64_le title_id;
|
|
||||||
u64_le save_image_size;
|
|
||||||
u16_le index;
|
|
||||||
FileSys::SaveDataRank rank;
|
|
||||||
INSERT_PADDING_BYTES(0x25);
|
|
||||||
};
|
|
||||||
static_assert(sizeof(SaveDataInfo) == 0x60, "SaveDataInfo has incorrect size.");
|
|
||||||
|
|
||||||
Result ReadSaveDataInfo(Out<u64> out_count,
|
Result ReadSaveDataInfo(Out<u64> out_count,
|
||||||
OutArray<SaveDataInfo, BufferAttr_HipcMapAlias> out_entries);
|
OutArray<FileSys::SaveDataInfo, BufferAttr_HipcMapAlias> out_entries);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void FindAllSaves(FileSys::SaveDataSpaceId space);
|
void FindAllSaves(FileSys::SaveDataSpaceId space);
|
||||||
@ -43,7 +29,7 @@ private:
|
|||||||
void FindTemporaryStorageSaves(FileSys::SaveDataSpaceId space, const FileSys::VirtualDir& type);
|
void FindTemporaryStorageSaves(FileSys::SaveDataSpaceId space, const FileSys::VirtualDir& type);
|
||||||
|
|
||||||
std::shared_ptr<SaveDataController> save_data_controller;
|
std::shared_ptr<SaveDataController> save_data_controller;
|
||||||
std::vector<SaveDataInfo> info;
|
std::vector<FileSys::SaveDataInfo> info;
|
||||||
u64 next_entry_index = 0;
|
u64 next_entry_index = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -225,23 +225,23 @@ Result FSP_SRV::OpenSdCardFileSystem(OutInterface<IFileSystem> out_interface) {
|
|||||||
R_SUCCEED();
|
R_SUCCEED();
|
||||||
}
|
}
|
||||||
|
|
||||||
Result FSP_SRV::CreateSaveDataFileSystem(FileSys::SaveDataCreationInfo save_create_struct,
|
Result FSP_SRV::CreateSaveDataFileSystem(FileSys::SaveDataMetaInfo meta_info,
|
||||||
FileSys::SaveDataAttribute save_struct, u128 uid) {
|
FileSys::SaveDataCreationInfo creation_info,
|
||||||
LOG_DEBUG(Service_FS, "called save_struct = {}, uid = {:016X}{:016X}", save_struct.DebugInfo(),
|
FileSys::SaveDataAttribute attribute) {
|
||||||
uid[1], uid[0]);
|
LOG_DEBUG(Service_FS, "called save_struct = {}", attribute.DebugInfo());
|
||||||
|
|
||||||
FileSys::VirtualDir save_data_dir{};
|
FileSys::VirtualDir save_data_dir{};
|
||||||
R_RETURN(save_data_controller->CreateSaveData(&save_data_dir, FileSys::SaveDataSpaceId::User,
|
R_RETURN(save_data_controller->CreateSaveData(&save_data_dir, FileSys::SaveDataSpaceId::User,
|
||||||
save_struct));
|
attribute));
|
||||||
}
|
}
|
||||||
|
|
||||||
Result FSP_SRV::CreateSaveDataFileSystemBySystemSaveDataId(
|
Result FSP_SRV::CreateSaveDataFileSystemBySystemSaveDataId(
|
||||||
FileSys::SaveDataAttribute save_struct, FileSys::SaveDataCreationInfo save_create_struct) {
|
FileSys::SaveDataAttribute attribute, FileSys::SaveDataCreationInfo save_create_struct) {
|
||||||
LOG_DEBUG(Service_FS, "called save_struct = {}", save_struct.DebugInfo());
|
LOG_DEBUG(Service_FS, "called save_struct = {}", attribute.DebugInfo());
|
||||||
|
|
||||||
FileSys::VirtualDir save_data_dir{};
|
FileSys::VirtualDir save_data_dir{};
|
||||||
R_RETURN(save_data_controller->CreateSaveData(&save_data_dir, FileSys::SaveDataSpaceId::System,
|
R_RETURN(save_data_controller->CreateSaveData(&save_data_dir, FileSys::SaveDataSpaceId::System,
|
||||||
save_struct));
|
attribute));
|
||||||
}
|
}
|
||||||
|
|
||||||
Result FSP_SRV::OpenSaveDataFileSystem(OutInterface<IFileSystem> out_interface,
|
Result FSP_SRV::OpenSaveDataFileSystem(OutInterface<IFileSystem> out_interface,
|
||||||
|
@ -51,10 +51,11 @@ private:
|
|||||||
Result OpenFileSystemWithPatch(OutInterface<IFileSystem> out_interface,
|
Result OpenFileSystemWithPatch(OutInterface<IFileSystem> out_interface,
|
||||||
FileSystemProxyType type, u64 open_program_id);
|
FileSystemProxyType type, u64 open_program_id);
|
||||||
Result OpenSdCardFileSystem(OutInterface<IFileSystem> out_interface);
|
Result OpenSdCardFileSystem(OutInterface<IFileSystem> out_interface);
|
||||||
Result CreateSaveDataFileSystem(FileSys::SaveDataCreationInfo save_create_struct,
|
Result CreateSaveDataFileSystem(FileSys::SaveDataMetaInfo meta_info,
|
||||||
FileSys::SaveDataAttribute save_struct, u128 uid);
|
FileSys::SaveDataCreationInfo creation_info,
|
||||||
|
FileSys::SaveDataAttribute attribute);
|
||||||
Result CreateSaveDataFileSystemBySystemSaveDataId(
|
Result CreateSaveDataFileSystemBySystemSaveDataId(
|
||||||
FileSys::SaveDataAttribute save_struct, FileSys::SaveDataCreationInfo save_create_struct);
|
FileSys::SaveDataAttribute attribute, FileSys::SaveDataCreationInfo save_create_struct);
|
||||||
Result OpenSaveDataFileSystem(OutInterface<IFileSystem> out_interface,
|
Result OpenSaveDataFileSystem(OutInterface<IFileSystem> out_interface,
|
||||||
FileSys::SaveDataSpaceId space_id,
|
FileSys::SaveDataSpaceId space_id,
|
||||||
FileSys::SaveDataAttribute attribute);
|
FileSys::SaveDataAttribute attribute);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user