fs: Add missing types and fix compilation problems

This commit is contained in:
FearlessTobi 2024-02-23 19:34:51 +01:00
parent b14f38946c
commit fe3fcb0730
12 changed files with 185 additions and 157 deletions

View File

@ -51,6 +51,7 @@ add_library(core STATIC
file_sys/control_metadata.cpp
file_sys/control_metadata.h
file_sys/errors.h
file_sys/fs_common.h
file_sys/fs_directory.h
file_sys/fs_file.h
file_sys/fs_filesystem.h
@ -58,17 +59,29 @@ add_library(core STATIC
file_sys/fs_operate_range.h
file_sys/fs_path.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_string_util.h
file_sys/fs_program_index_map_info.h
file_sys/fsa/fs_i_directory.h
file_sys/fsa/fs_i_file.h
file_sys/fsa/fs_i_filesystem.h
file_sys/fsmitm_romfsbuild.cpp
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/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_types.h
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_storage.cpp
@ -110,19 +123,6 @@ add_library(core STATIC
file_sys/fssystem/fssystem_switch_storage.h
file_sys/fssystem/fssystem_utility.cpp
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.h
file_sys/kernel_executable.cpp
@ -510,33 +510,33 @@ add_library(core STATIC
hle/service/apm/apm_controller.h
hle/service/apm/apm_interface.cpp
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.h
hle/service/audio/audio_device.cpp
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.h
hle/service/audio/audio_out_manager.cpp
hle/service/audio/audio_out_manager.h
hle/service/audio/audio_in_manager.cpp
hle/service/audio/audio_in_manager.h
hle/service/audio/audio_out.cpp
hle/service/audio/audio_out.h
hle/service/audio/audio_renderer_manager.cpp
hle/service/audio/audio_renderer_manager.h
hle/service/audio/audio_out_manager.cpp
hle/service/audio/audio_out_manager.h
hle/service/audio/audio_renderer.cpp
hle/service/audio/audio_renderer.h
hle/service/audio/audio.cpp
hle/service/audio/audio.h
hle/service/audio/audio_renderer_manager.cpp
hle/service/audio/audio_renderer_manager.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.h
hle/service/audio/hardware_opus_decoder_manager.cpp
hle/service/audio/hardware_opus_decoder_manager.h
hle/service/audio/final_output_recorder_manager_for_applet.cpp
hle/service/audio/final_output_recorder_manager_for_applet.h
hle/service/audio/hardware_opus_decoder.cpp
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.h
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_multi_commit_manager.cpp
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.h
hle/service/filesystem/fsp/fs_i_storage.cpp
hle/service/filesystem/fsp/fs_i_storage.h
hle/service/filesystem/fsp/fsp_ldr.cpp
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.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/native_handle_holder.cpp
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.h
hle/service/olsc/olsc_service_for_system_service.cpp
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.h
hle/service/olsc/transfer_task_list_controller.cpp
@ -930,10 +930,10 @@ add_library(core STATIC
hle/service/os/mutex.h
hle/service/pcie/pcie.cpp
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.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.h
hle/service/pctl/pctl_results.h
@ -945,14 +945,14 @@ add_library(core STATIC
hle/service/prepo/prepo.cpp
hle/service/prepo/prepo.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.h
hle/service/psc/ovln/sender_service.cpp
hle/service/psc/ovln/sender_service.h
hle/service/psc/ovln/receiver_service.cpp
hle/service/psc/ovln/receiver_service.h
hle/service/psc/ovln/sender.cpp
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.h
hle/service/psc/pm_module.cpp

View File

@ -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 IntegrityMaxLayerCount = 7;
constexpr inline size_t IntegrityLayerCountSave = 5;

View File

@ -41,6 +41,8 @@ enum class SaveDataRank : u8 {
Secondary = 1,
};
enum class SaveDataFormatType : u8 { Normal = 0, NoJournal = 1 };
struct SaveDataSize {
u64 normal;
u64 journal;
@ -68,28 +70,13 @@ enum class SaveDataMetaType : u8 {
ExtensionContext = 2,
};
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 HashSalt {
static constexpr size_t Size = 32;
struct SaveDataCreationInfo {
s64 size;
s64 journal_size;
s64 block_size;
u64 owner_id;
u32 flags;
SaveDataSpaceId space_id;
bool pseudo;
INSERT_PADDING_BYTES(0x1A);
std::array<u8, Size> value;
};
static_assert(std::is_trivially_copyable_v<SaveDataCreationInfo>,
"Data type must be trivially copyable.");
static_assert(sizeof(SaveDataCreationInfo) == 0x40, "SaveDataCreationInfo has invalid size.");
static_assert(std::is_trivially_copyable_v<HashSalt>, "Data type must be trivially copyable.");
static_assert(sizeof(HashSalt) == HashSalt::Size);
struct SaveDataAttribute {
ProgramId program_id;
@ -149,12 +136,73 @@ constexpr inline bool operator!=(const SaveDataAttribute& lhs, const SaveDataAtt
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 {
SaveDataAttribute attr;
u64 owner_id;
s64 timestamp;
u32 flags;
INSERT_PADDING_BYTES(4);
INSERT_PADDING_BYTES(0x4);
s64 available_size;
s64 journal_size;
s64 commit_id;

View File

@ -73,7 +73,7 @@ void InitializeInitialAndCurrentProcessId(Core::System& system) {
ASSERT(Svc::GetProcessId(system, std::addressof(g_current_process_id),
Svc::PseudoHandle::CurrentProcess) == ResultSuccess);
/* Set initialized. */
// Set initialized
g_initialized = true;
}
}

View File

@ -7,7 +7,7 @@
#include "common/assert.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 {
@ -30,13 +30,13 @@ public:
static bool IsJournalingSupported(SaveDataType type) {
switch (type) {
case SaveDataType::SystemSaveData:
case SaveDataType::SaveData:
case SaveDataType::BcatDeliveryCacheStorage:
case SaveDataType::DeviceSaveData:
case SaveDataType::CacheStorage:
case SaveDataType::System:
case SaveDataType::Account:
case SaveDataType::Bcat:
case SaveDataType::Device:
case SaveDataType::Cache:
return true;
case SaveDataType::TemporaryStorage:
case SaveDataType::Temporary:
return false;
default:
UNREACHABLE();
@ -46,13 +46,13 @@ public:
static bool IsMultiCommitSupported(SaveDataType type) {
switch (type) {
case SaveDataType::SystemSaveData:
case SaveDataType::SaveData:
case SaveDataType::DeviceSaveData:
case SaveDataType::System:
case SaveDataType::Account:
case SaveDataType::Device:
return true;
case SaveDataType::BcatDeliveryCacheStorage:
case SaveDataType::TemporaryStorage:
case SaveDataType::CacheStorage:
case SaveDataType::Bcat:
case SaveDataType::Temporary:
case SaveDataType::Cache:
return false;
default:
UNREACHABLE();
@ -62,13 +62,13 @@ public:
static bool IsSharedOpenNeeded(SaveDataType type) {
switch (type) {
case SaveDataType::SystemSaveData:
case SaveDataType::BcatDeliveryCacheStorage:
case SaveDataType::TemporaryStorage:
case SaveDataType::CacheStorage:
case SaveDataType::System:
case SaveDataType::Bcat:
case SaveDataType::Temporary:
case SaveDataType::Cache:
return false;
case SaveDataType::SaveData:
case SaveDataType::DeviceSaveData:
case SaveDataType::Account:
case SaveDataType::Device:
return true;
default:
UNREACHABLE();
@ -78,13 +78,13 @@ public:
static bool CanUseIndexerReservedArea(SaveDataType type) {
switch (type) {
case SaveDataType::SystemSaveData:
case SaveDataType::System:
return true;
case SaveDataType::SaveData:
case SaveDataType::BcatDeliveryCacheStorage:
case SaveDataType::DeviceSaveData:
case SaveDataType::TemporaryStorage:
case SaveDataType::CacheStorage:
case SaveDataType::Account:
case SaveDataType::Bcat:
case SaveDataType::Device:
case SaveDataType::Temporary:
case SaveDataType::Cache:
return false;
default:
UNREACHABLE();
@ -94,13 +94,13 @@ public:
static bool IsSystemSaveData(SaveDataType type) {
switch (type) {
case SaveDataType::SystemSaveData:
case SaveDataType::System:
return true;
case SaveDataType::SaveData:
case SaveDataType::BcatDeliveryCacheStorage:
case SaveDataType::DeviceSaveData:
case SaveDataType::TemporaryStorage:
case SaveDataType::CacheStorage:
case SaveDataType::Account:
case SaveDataType::Bcat:
case SaveDataType::Device:
case SaveDataType::Temporary:
case SaveDataType::Cache:
return false;
default:
UNREACHABLE();
@ -117,13 +117,13 @@ public:
static bool IsWipingNeededAtCleanUp(const SaveDataInfo& info) {
switch (info.type) {
case SaveDataType::SystemSaveData:
case SaveDataType::System:
break;
case SaveDataType::SaveData:
case SaveDataType::BcatDeliveryCacheStorage:
case SaveDataType::DeviceSaveData:
case SaveDataType::TemporaryStorage:
case SaveDataType::CacheStorage:
case SaveDataType::Account:
case SaveDataType::Bcat:
case SaveDataType::Device:
case SaveDataType::Temporary:
case SaveDataType::Cache:
return true;
default:
UNREACHABLE();
@ -146,14 +146,14 @@ public:
static bool IsValidSpaceIdForSaveDataMover(SaveDataType type, SaveDataSpaceId space_id) {
switch (type) {
case SaveDataType::SystemSaveData:
case SaveDataType::SaveData:
case SaveDataType::BcatDeliveryCacheStorage:
case SaveDataType::DeviceSaveData:
case SaveDataType::TemporaryStorage:
case SaveDataType::System:
case SaveDataType::Account:
case SaveDataType::Bcat:
case SaveDataType::Device:
case SaveDataType::Temporary:
return false;
case SaveDataType::CacheStorage:
return space_id == SaveDataSpaceId::NandUser || space_id == SaveDataSpaceId::SdCardUser;
case SaveDataType::Cache:
return space_id == SaveDataSpaceId::User || space_id == SaveDataSpaceId::SdUser;
default:
UNREACHABLE();
return false;
@ -162,26 +162,26 @@ public:
static bool IsReconstructible(SaveDataType type, SaveDataSpaceId space_id) {
switch (space_id) {
case SaveDataSpaceId::NandSystem:
case SaveDataSpaceId::NandUser:
case SaveDataSpaceId::System:
case SaveDataSpaceId::User:
case SaveDataSpaceId::ProperSystem:
case SaveDataSpaceId::SafeMode:
switch (type) {
case SaveDataType::SystemSaveData:
case SaveDataType::SaveData:
case SaveDataType::DeviceSaveData:
case SaveDataType::System:
case SaveDataType::Account:
case SaveDataType::Device:
return false;
case SaveDataType::BcatDeliveryCacheStorage:
case SaveDataType::TemporaryStorage:
case SaveDataType::CacheStorage:
case SaveDataType::Bcat:
case SaveDataType::Temporary:
case SaveDataType::Cache:
return true;
default:
UNREACHABLE();
return false;
}
case SaveDataSpaceId::SdCardSystem:
case SaveDataSpaceId::TemporaryStorage:
case SaveDataSpaceId::SdCardUser:
case SaveDataSpaceId::SdSystem:
case SaveDataSpaceId::Temporary:
case SaveDataSpaceId::SdUser:
return true;
default:
UNREACHABLE();

View File

@ -4,8 +4,9 @@
#pragma once
#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_types.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/vfs/vfs_offset.h"

View File

@ -5,8 +5,8 @@
#include <optional>
#include "core/file_sys/fs_common.h"
#include "core/file_sys/fssystem/fs_i_storage.h"
#include "core/file_sys/fssystem/fs_types.h"
namespace FileSys {

View File

@ -8,7 +8,7 @@
#include "common/literals.h"
#include "core/file_sys/errors.h"
#include "core/file_sys/fssystem/fs_types.h"
#include "core/file_sys/fs_common.h"
namespace FileSys {

View File

@ -37,7 +37,7 @@ static u64 stoull_be(std::string_view str) {
}
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");
// 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) {
// System Save Data
info.emplace_back(SaveDataInfo{
info.emplace_back(FileSys::SaveDataInfo{
0,
space,
FileSys::SaveDataType::System,
@ -112,7 +112,7 @@ void ISaveDataInfoReader::FindNormalSaves(FileSys::SaveDataSpaceId space,
for (const auto& title_id : user_id->GetSubdirectories()) {
const auto device = std::all_of(user_id_numeric.begin(), user_id_numeric.end(),
[](u8 val) { return val == 0; });
info.emplace_back(SaveDataInfo{
info.emplace_back(FileSys::SaveDataInfo{
0,
space,
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());
std::reverse(user_id_numeric.begin(), user_id_numeric.end());
info.emplace_back(SaveDataInfo{
info.emplace_back(FileSys::SaveDataInfo{
0,
space,
FileSys::SaveDataType::Temporary,

View File

@ -5,6 +5,7 @@
#include <vector>
#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/service.h"
@ -19,23 +20,8 @@ public:
FileSys::SaveDataSpaceId space);
~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,
OutArray<SaveDataInfo, BufferAttr_HipcMapAlias> out_entries);
OutArray<FileSys::SaveDataInfo, BufferAttr_HipcMapAlias> out_entries);
private:
void FindAllSaves(FileSys::SaveDataSpaceId space);
@ -43,7 +29,7 @@ private:
void FindTemporaryStorageSaves(FileSys::SaveDataSpaceId space, const FileSys::VirtualDir& type);
std::shared_ptr<SaveDataController> save_data_controller;
std::vector<SaveDataInfo> info;
std::vector<FileSys::SaveDataInfo> info;
u64 next_entry_index = 0;
};

View File

@ -225,23 +225,23 @@ Result FSP_SRV::OpenSdCardFileSystem(OutInterface<IFileSystem> out_interface) {
R_SUCCEED();
}
Result FSP_SRV::CreateSaveDataFileSystem(FileSys::SaveDataCreationInfo save_create_struct,
FileSys::SaveDataAttribute save_struct, u128 uid) {
LOG_DEBUG(Service_FS, "called save_struct = {}, uid = {:016X}{:016X}", save_struct.DebugInfo(),
uid[1], uid[0]);
Result FSP_SRV::CreateSaveDataFileSystem(FileSys::SaveDataMetaInfo meta_info,
FileSys::SaveDataCreationInfo creation_info,
FileSys::SaveDataAttribute attribute) {
LOG_DEBUG(Service_FS, "called save_struct = {}", attribute.DebugInfo());
FileSys::VirtualDir save_data_dir{};
R_RETURN(save_data_controller->CreateSaveData(&save_data_dir, FileSys::SaveDataSpaceId::User,
save_struct));
attribute));
}
Result FSP_SRV::CreateSaveDataFileSystemBySystemSaveDataId(
FileSys::SaveDataAttribute save_struct, FileSys::SaveDataCreationInfo save_create_struct) {
LOG_DEBUG(Service_FS, "called save_struct = {}", save_struct.DebugInfo());
FileSys::SaveDataAttribute attribute, FileSys::SaveDataCreationInfo save_create_struct) {
LOG_DEBUG(Service_FS, "called save_struct = {}", attribute.DebugInfo());
FileSys::VirtualDir save_data_dir{};
R_RETURN(save_data_controller->CreateSaveData(&save_data_dir, FileSys::SaveDataSpaceId::System,
save_struct));
attribute));
}
Result FSP_SRV::OpenSaveDataFileSystem(OutInterface<IFileSystem> out_interface,

View File

@ -51,10 +51,11 @@ private:
Result OpenFileSystemWithPatch(OutInterface<IFileSystem> out_interface,
FileSystemProxyType type, u64 open_program_id);
Result OpenSdCardFileSystem(OutInterface<IFileSystem> out_interface);
Result CreateSaveDataFileSystem(FileSys::SaveDataCreationInfo save_create_struct,
FileSys::SaveDataAttribute save_struct, u128 uid);
Result CreateSaveDataFileSystem(FileSys::SaveDataMetaInfo meta_info,
FileSys::SaveDataCreationInfo creation_info,
FileSys::SaveDataAttribute attribute);
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,
FileSys::SaveDataSpaceId space_id,
FileSys::SaveDataAttribute attribute);