From b758e3fc558d0f760a544b2764e057c059ae59e2 Mon Sep 17 00:00:00 2001 From: Michael Scire Date: Thu, 21 Nov 2019 00:28:32 -0800 Subject: [PATCH] strat: update for latest libnx. --- stratosphere/boot/source/boot_calibration.cpp | 4 ++-- stratosphere/fatal/source/fatal_repair.cpp | 2 +- .../include/stratosphere/ncm/ncm_types.hpp | 18 +++++++------- .../source/boot2/boot2_api.cpp | 8 +++---- .../source/updater/updater_api.cpp | 10 ++++---- .../source/updater/updater_bis_management.hpp | 24 +++++++++---------- .../loader/source/ldr_content_management.cpp | 6 ++--- .../pm/source/impl/pm_process_manager.cpp | 2 +- stratosphere/pm/source/pm_main.cpp | 2 +- 9 files changed, 39 insertions(+), 37 deletions(-) diff --git a/stratosphere/boot/source/boot_calibration.cpp b/stratosphere/boot/source/boot_calibration.cpp index b6e1068c4..248e4b406 100644 --- a/stratosphere/boot/source/boot_calibration.cpp +++ b/stratosphere/boot/source/boot_calibration.cpp @@ -55,7 +55,7 @@ namespace ams::boot { Result GetBatteryVendorImpl(u32 *vendor) { FsStorage s; - R_TRY(fsOpenBisStorage(&s, FsBisStorageId_CalibrationBinary)); + R_TRY(fsOpenBisStorage(&s, FsBisPartitionId_CalibrationBinary)); ON_SCOPE_EXIT { fsStorageClose(&s); }; u8 battery_lot[BatteryLotSize]; @@ -69,7 +69,7 @@ namespace ams::boot { Result GetBatteryVersionImpl(u32 *version) { FsStorage s; - R_TRY(fsOpenBisStorage(&s, FsBisStorageId_CalibrationBinary)); + R_TRY(fsOpenBisStorage(&s, FsBisPartitionId_CalibrationBinary)); ON_SCOPE_EXIT { fsStorageClose(&s); }; u8 battery_version[BatteryVersionSize]; diff --git a/stratosphere/fatal/source/fatal_repair.cpp b/stratosphere/fatal/source/fatal_repair.cpp index da309cfd9..c702c4d12 100644 --- a/stratosphere/fatal/source/fatal_repair.cpp +++ b/stratosphere/fatal/source/fatal_repair.cpp @@ -94,7 +94,7 @@ namespace ams::fatal::srv { } /* Check that the gamecard is a repair tool. */ - return (gc_attr & FsGameCardAttribute_Repair) == FsGameCardAttribute_Repair; + return (gc_attr & FsGameCardAttribute_RepairToolFlag); } bool IsInRepairWithoutTimeReviserCartridge() { diff --git a/stratosphere/libstratosphere/include/stratosphere/ncm/ncm_types.hpp b/stratosphere/libstratosphere/include/stratosphere/ncm/ncm_types.hpp index 6860404ec..0c13966b3 100644 --- a/stratosphere/libstratosphere/include/stratosphere/ncm/ncm_types.hpp +++ b/stratosphere/libstratosphere/include/stratosphere/ncm/ncm_types.hpp @@ -15,19 +15,21 @@ */ #pragma once - -#include +#include namespace ams::ncm { /* Storage IDs. */ enum class StorageId : u8 { - None = 0, - Host = 1, - GameCard = 2, - NandSystem = 3, - NandUser = 4, - SdCard = 5, + #define DEFINE_ENUM_MEMBER(nm) nm = NcmStorageId_##nm + DEFINE_ENUM_MEMBER(None), + DEFINE_ENUM_MEMBER(Host), + DEFINE_ENUM_MEMBER(GameCard), + DEFINE_ENUM_MEMBER(BuiltInSystem), + DEFINE_ENUM_MEMBER(BuiltInUser), + DEFINE_ENUM_MEMBER(SdCard), + DEFINE_ENUM_MEMBER(Any), + #undef DEFINE_ENUM_MEMBER }; /* Program IDs (Formerly: Title IDs). */ diff --git a/stratosphere/libstratosphere/source/boot2/boot2_api.cpp b/stratosphere/libstratosphere/source/boot2/boot2_api.cpp index 83cb69bc2..63e57b842 100644 --- a/stratosphere/libstratosphere/source/boot2/boot2_api.cpp +++ b/stratosphere/libstratosphere/source/boot2/boot2_api.cpp @@ -152,7 +152,7 @@ namespace ams::boot2 { void LaunchList(const ncm::ProgramId *launch_list, size_t num_entries) { for (size_t i = 0; i < num_entries; i++) { - LaunchProgram(nullptr, ncm::ProgramLocation::Make(launch_list[i], ncm::StorageId::NandSystem), 0); + LaunchProgram(nullptr, ncm::ProgramLocation::Make(launch_list[i], ncm::StorageId::BuiltInSystem), 0); } } @@ -313,7 +313,7 @@ namespace ams::boot2 { R_ASSERT(sm::mitm::WaitMitm(sm::ServiceName::Encode("bpc:c"))); } - /* Launch Atmosphere boot2, using FsStorageId_None to force SD card boot. */ + /* Launch Atmosphere boot2, using NcmStorageId_None to force SD card boot. */ LaunchProgram(nullptr, ncm::ProgramLocation::Make(ncm::ProgramId::Boot2, ncm::StorageId::None), 0); } @@ -326,7 +326,7 @@ namespace ams::boot2 { pm::bm::SetMaintenanceBoot(); } - /* Launch Atmosphere dmnt, using FsStorageId_None to force SD card boot. */ + /* Launch Atmosphere dmnt, using NcmStorageId_None to force SD card boot. */ LaunchProgram(nullptr, ncm::ProgramLocation::Make(ncm::ProgramId::Dmnt, ncm::StorageId::None), 0); /* Check for and forward declare non-atmosphere mitm modules. */ @@ -337,7 +337,7 @@ namespace ams::boot2 { LaunchList(AdditionalMaintenanceLaunchPrograms, NumAdditionalMaintenanceLaunchPrograms); /* Starting in 7.0.0, npns is launched during maintenance boot. */ if (hos::GetVersion() >= hos::Version_700) { - LaunchProgram(nullptr, ncm::ProgramLocation::Make(ncm::ProgramId::Npns, ncm::StorageId::NandSystem), 0); + LaunchProgram(nullptr, ncm::ProgramLocation::Make(ncm::ProgramId::Npns, ncm::StorageId::BuiltInSystem), 0); } } else { LaunchList(AdditionalLaunchPrograms, NumAdditionalLaunchPrograms); diff --git a/stratosphere/libstratosphere/source/updater/updater_api.cpp b/stratosphere/libstratosphere/source/updater/updater_api.cpp index 2af61ee32..cb7a7ddbf 100644 --- a/stratosphere/libstratosphere/source/updater/updater_api.cpp +++ b/stratosphere/libstratosphere/source/updater/updater_api.cpp @@ -143,7 +143,7 @@ namespace ams::updater { /* Open NAND System meta database, list contents. */ NcmContentMetaDatabase meta_db; - R_TRY(ncmOpenContentMetaDatabase(&meta_db, FsStorageId_NandSystem)); + R_TRY(ncmOpenContentMetaDatabase(&meta_db, NcmStorageId_BuiltInSystem)); ON_SCOPE_EXIT { serviceClose(&meta_db.s); }; NcmContentMetaKey *records = reinterpret_cast(work_buffer); @@ -190,7 +190,7 @@ namespace ams::updater { /* Ensure work buffer is big enough for us to do what we want to do. */ R_TRY(ValidateWorkBuffer(work_buffer, work_buffer_size)); - R_TRY_CATCH(romfsMountFromDataArchive(data_id, FsStorageId_NandSystem, GetBootImagePackageMountPath())) { + R_TRY_CATCH(romfsMountFromDataArchive(data_id, NcmStorageId_BuiltInSystem, GetBootImagePackageMountPath())) { R_CONVERT(fs::ResultTargetNotFound, ResultBootImagePackageNotFound()) } R_END_TRY_CATCH; ON_SCOPE_EXIT { R_ASSERT(romfsUnmount(GetBootImagePackageMountPath())); }; @@ -243,7 +243,7 @@ namespace ams::updater { /* Ensure work buffer is big enough for us to do what we want to do. */ R_TRY(ValidateWorkBuffer(work_buffer, work_buffer_size)); - R_TRY_CATCH(romfsMountFromDataArchive(data_id, FsStorageId_NandSystem, GetBootImagePackageMountPath())) { + R_TRY_CATCH(romfsMountFromDataArchive(data_id, NcmStorageId_BuiltInSystem, GetBootImagePackageMountPath())) { R_CONVERT(fs::ResultTargetNotFound, ResultBootImagePackageNotFound()) } R_END_TRY_CATCH; ON_SCOPE_EXIT { R_ASSERT(romfsUnmount(GetBootImagePackageMountPath())); }; @@ -311,7 +311,7 @@ namespace ams::updater { /* Ensure work buffer is big enough for us to do what we want to do. */ R_TRY(ValidateWorkBuffer(work_buffer, work_buffer_size)); - R_TRY_CATCH(romfsMountFromDataArchive(data_id, FsStorageId_NandSystem, GetBootImagePackageMountPath())) { + R_TRY_CATCH(romfsMountFromDataArchive(data_id, NcmStorageId_BuiltInSystem, GetBootImagePackageMountPath())) { R_CONVERT(fs::ResultTargetNotFound, ResultBootImagePackageNotFound()) } R_END_TRY_CATCH; ON_SCOPE_EXIT { R_ASSERT(romfsUnmount(GetBootImagePackageMountPath())); }; @@ -366,7 +366,7 @@ namespace ams::updater { /* Ensure work buffer is big enough for us to do what we want to do. */ R_TRY(ValidateWorkBuffer(work_buffer, work_buffer_size)); - R_TRY_CATCH(romfsMountFromDataArchive(data_id, FsStorageId_NandSystem, GetBootImagePackageMountPath())) { + R_TRY_CATCH(romfsMountFromDataArchive(data_id, NcmStorageId_BuiltInSystem, GetBootImagePackageMountPath())) { R_CONVERT(fs::ResultTargetNotFound, ResultBootImagePackageNotFound()) } R_END_TRY_CATCH; ON_SCOPE_EXIT { R_ASSERT(romfsUnmount(GetBootImagePackageMountPath())); }; diff --git a/stratosphere/libstratosphere/source/updater/updater_bis_management.hpp b/stratosphere/libstratosphere/source/updater/updater_bis_management.hpp index 73ae1e7db..cb60d4410 100644 --- a/stratosphere/libstratosphere/source/updater/updater_bis_management.hpp +++ b/stratosphere/libstratosphere/source/updater/updater_bis_management.hpp @@ -24,10 +24,10 @@ namespace ams::updater { static constexpr size_t SectorAlignment = 0x200; private: FsStorage storage = {}; - FsBisStorageId partition_id; + FsBisPartitionId partition_id; bool active; public: - BisAccessor(FsBisStorageId id) : partition_id(id), active(false) { } + BisAccessor(FsBisPartitionId id) : partition_id(id), active(false) { } ~BisAccessor() { if (this->active) { fsStorageClose(&storage); @@ -125,7 +125,7 @@ namespace ams::updater { using EnumType = typename Meta::EnumType; using OffsetSizeType = typename Meta::OffsetSizeType; public: - PartitionAccessor(FsBisStorageId id) : BisAccessor(id) { } + PartitionAccessor(FsBisPartitionId id) : BisAccessor(id) { } private: constexpr const OffsetSizeType *FindEntry(EnumType which) { const OffsetSizeType *entry = nullptr; @@ -182,27 +182,27 @@ namespace ams::updater { RepairSub, }; - static constexpr FsBisStorageId GetPackage2StorageId(Package2Type which) { + static constexpr FsBisPartitionId GetPackage2StorageId(Package2Type which) { switch (which) { case Package2Type::NormalMain: - return FsBisStorageId_BootConfigAndPackage2NormalMain; + return FsBisPartitionId_BootConfigAndPackage2Part1; case Package2Type::NormalSub: - return FsBisStorageId_BootConfigAndPackage2NormalSub; + return FsBisPartitionId_BootConfigAndPackage2Part2; case Package2Type::SafeMain: - return FsBisStorageId_BootConfigAndPackage2SafeMain; + return FsBisPartitionId_BootConfigAndPackage2Part3; case Package2Type::SafeSub: - return FsBisStorageId_BootConfigAndPackage2SafeSub; + return FsBisPartitionId_BootConfigAndPackage2Part4; case Package2Type::RepairMain: - return FsBisStorageId_BootConfigAndPackage2RepairMain; + return FsBisPartitionId_BootConfigAndPackage2Part5; case Package2Type::RepairSub: - return FsBisStorageId_BootConfigAndPackage2RepairSub; + return FsBisPartitionId_BootConfigAndPackage2Part6; AMS_UNREACHABLE_DEFAULT_CASE(); } } class Boot0Accessor : public PartitionAccessor { public: - static constexpr FsBisStorageId PartitionId = FsBisStorageId_Boot0; + static constexpr FsBisPartitionId PartitionId = FsBisPartitionId_BootPartition1Root; static constexpr size_t BctPubkOffset = 0x210; static constexpr size_t BctPubkSize = 0x100; static constexpr size_t BctEksOffset = 0x450; @@ -222,7 +222,7 @@ namespace ams::updater { class Boot1Accessor : public PartitionAccessor { public: - static constexpr FsBisStorageId PartitionId = FsBisStorageId_Boot1; + static constexpr FsBisPartitionId PartitionId = FsBisPartitionId_BootPartition2Root; public: Boot1Accessor() : PartitionAccessor(PartitionId) { } }; diff --git a/stratosphere/loader/source/ldr_content_management.cpp b/stratosphere/loader/source/ldr_content_management.cpp index 64f2c6982..f7e48e89f 100644 --- a/stratosphere/loader/source/ldr_content_management.cpp +++ b/stratosphere/loader/source/ldr_content_management.cpp @@ -288,7 +288,7 @@ namespace ams::ldr { R_CATCH(lr::ResultProgramNotFound) { /* Program wasn't found via registered resolver, fall back to the normal resolver. */ LrLocationResolver lr; - R_TRY(lrOpenLocationResolver(static_cast(loc.storage_id), &lr)); + R_TRY(lrOpenLocationResolver(static_cast(loc.storage_id), &lr)); ON_SCOPE_EXIT { serviceClose(&lr.s); }; R_TRY(lrLrResolveProgramPath(&lr, static_cast(loc.program_id), path)); @@ -303,7 +303,7 @@ namespace ams::ldr { Result RedirectContentPath(const char *path, const ncm::ProgramLocation &loc) { LrLocationResolver lr; - R_TRY(lrOpenLocationResolver(static_cast(loc.storage_id), &lr)); + R_TRY(lrOpenLocationResolver(static_cast(loc.storage_id), &lr)); ON_SCOPE_EXIT { serviceClose(&lr.s); }; return lrLrRedirectProgramPath(&lr, static_cast(loc.program_id), path); @@ -314,7 +314,7 @@ namespace ams::ldr { /* Open a location resolver. */ LrLocationResolver lr; - R_TRY(lrOpenLocationResolver(static_cast(loc.storage_id), &lr)); + R_TRY(lrOpenLocationResolver(static_cast(loc.storage_id), &lr)); ON_SCOPE_EXIT { serviceClose(&lr.s); }; /* If there's already a Html Document path, we don't need to set one. */ diff --git a/stratosphere/pm/source/impl/pm_process_manager.cpp b/stratosphere/pm/source/impl/pm_process_manager.cpp index 3eef9ac9f..de26de373 100644 --- a/stratosphere/pm/source/impl/pm_process_manager.cpp +++ b/stratosphere/pm/source/impl/pm_process_manager.cpp @@ -331,7 +331,7 @@ namespace ams::pm::impl { const u8 *aci_fah = acid_fac + program_info.acid_fac_size; /* Register with FS and SM. */ - R_TRY(fsprRegisterProgram(static_cast(process_id), static_cast(location.program_id), static_cast(location.storage_id), aci_fah, program_info.aci_fah_size, acid_fac, program_info.acid_fac_size)); + R_TRY(fsprRegisterProgram(static_cast(process_id), static_cast(location.program_id), static_cast(location.storage_id), aci_fah, program_info.aci_fah_size, acid_fac, program_info.acid_fac_size)); R_TRY(sm::manager::RegisterProcess(process_id, location.program_id, acid_sac, program_info.acid_sac_size, aci_sac, program_info.aci_sac_size)); /* Set flags. */ diff --git a/stratosphere/pm/source/pm_main.cpp b/stratosphere/pm/source/pm_main.cpp index 8a0365fe9..b2bd892bd 100644 --- a/stratosphere/pm/source/pm_main.cpp +++ b/stratosphere/pm/source/pm_main.cpp @@ -104,7 +104,7 @@ namespace { /* It also registers privileged processes with SM, so that their program ids can be known. */ void RegisterPrivilegedProcess(os::ProcessId process_id) { fsprUnregisterProgram(static_cast(process_id)); - fsprRegisterProgram(static_cast(process_id), static_cast(process_id), FsStorageId_NandSystem, PrivilegedFileAccessHeader, sizeof(PrivilegedFileAccessHeader), PrivilegedFileAccessControl, sizeof(PrivilegedFileAccessControl)); + fsprRegisterProgram(static_cast(process_id), static_cast(process_id), NcmStorageId_BuiltInSystem, PrivilegedFileAccessHeader, sizeof(PrivilegedFileAccessHeader), PrivilegedFileAccessControl, sizeof(PrivilegedFileAccessControl)); sm::manager::UnregisterProcess(process_id); sm::manager::RegisterProcess(process_id, GetProcessProgramId(process_id), PrivilegedServiceAccessControl, sizeof(PrivilegedServiceAccessControl), PrivilegedServiceAccessControl, sizeof(PrivilegedServiceAccessControl)); }