mirror of
https://github.com/Atmosphere-NX/Atmosphere-libs.git
synced 2025-06-27 13:32:43 +02:00
strat: update for latest libnx.
This commit is contained in:
parent
ef090419f7
commit
f58c45b2c3
@ -15,19 +15,21 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
#include <atmosphere/common.hpp>
|
||||||
#include <type_traits>
|
|
||||||
|
|
||||||
namespace ams::ncm {
|
namespace ams::ncm {
|
||||||
|
|
||||||
/* Storage IDs. */
|
/* Storage IDs. */
|
||||||
enum class StorageId : u8 {
|
enum class StorageId : u8 {
|
||||||
None = 0,
|
#define DEFINE_ENUM_MEMBER(nm) nm = NcmStorageId_##nm
|
||||||
Host = 1,
|
DEFINE_ENUM_MEMBER(None),
|
||||||
GameCard = 2,
|
DEFINE_ENUM_MEMBER(Host),
|
||||||
NandSystem = 3,
|
DEFINE_ENUM_MEMBER(GameCard),
|
||||||
NandUser = 4,
|
DEFINE_ENUM_MEMBER(BuiltInSystem),
|
||||||
SdCard = 5,
|
DEFINE_ENUM_MEMBER(BuiltInUser),
|
||||||
|
DEFINE_ENUM_MEMBER(SdCard),
|
||||||
|
DEFINE_ENUM_MEMBER(Any),
|
||||||
|
#undef DEFINE_ENUM_MEMBER
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Program IDs (Formerly: Title IDs). */
|
/* Program IDs (Formerly: Title IDs). */
|
||||||
|
@ -152,7 +152,7 @@ namespace ams::boot2 {
|
|||||||
|
|
||||||
void LaunchList(const ncm::ProgramId *launch_list, size_t num_entries) {
|
void LaunchList(const ncm::ProgramId *launch_list, size_t num_entries) {
|
||||||
for (size_t i = 0; i < num_entries; i++) {
|
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")));
|
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);
|
LaunchProgram(nullptr, ncm::ProgramLocation::Make(ncm::ProgramId::Boot2, ncm::StorageId::None), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -326,7 +326,7 @@ namespace ams::boot2 {
|
|||||||
pm::bm::SetMaintenanceBoot();
|
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);
|
LaunchProgram(nullptr, ncm::ProgramLocation::Make(ncm::ProgramId::Dmnt, ncm::StorageId::None), 0);
|
||||||
|
|
||||||
/* Check for and forward declare non-atmosphere mitm modules. */
|
/* Check for and forward declare non-atmosphere mitm modules. */
|
||||||
@ -337,7 +337,7 @@ namespace ams::boot2 {
|
|||||||
LaunchList(AdditionalMaintenanceLaunchPrograms, NumAdditionalMaintenanceLaunchPrograms);
|
LaunchList(AdditionalMaintenanceLaunchPrograms, NumAdditionalMaintenanceLaunchPrograms);
|
||||||
/* Starting in 7.0.0, npns is launched during maintenance boot. */
|
/* Starting in 7.0.0, npns is launched during maintenance boot. */
|
||||||
if (hos::GetVersion() >= hos::Version_700) {
|
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 {
|
} else {
|
||||||
LaunchList(AdditionalLaunchPrograms, NumAdditionalLaunchPrograms);
|
LaunchList(AdditionalLaunchPrograms, NumAdditionalLaunchPrograms);
|
||||||
|
@ -143,7 +143,7 @@ namespace ams::updater {
|
|||||||
|
|
||||||
/* Open NAND System meta database, list contents. */
|
/* Open NAND System meta database, list contents. */
|
||||||
NcmContentMetaDatabase meta_db;
|
NcmContentMetaDatabase meta_db;
|
||||||
R_TRY(ncmOpenContentMetaDatabase(&meta_db, FsStorageId_NandSystem));
|
R_TRY(ncmOpenContentMetaDatabase(&meta_db, NcmStorageId_BuiltInSystem));
|
||||||
ON_SCOPE_EXIT { serviceClose(&meta_db.s); };
|
ON_SCOPE_EXIT { serviceClose(&meta_db.s); };
|
||||||
|
|
||||||
NcmContentMetaKey *records = reinterpret_cast<NcmContentMetaKey *>(work_buffer);
|
NcmContentMetaKey *records = reinterpret_cast<NcmContentMetaKey *>(work_buffer);
|
||||||
@ -190,7 +190,7 @@ namespace ams::updater {
|
|||||||
/* Ensure work buffer is big enough for us to do what we want to do. */
|
/* 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(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_CONVERT(fs::ResultTargetNotFound, ResultBootImagePackageNotFound())
|
||||||
} R_END_TRY_CATCH;
|
} R_END_TRY_CATCH;
|
||||||
ON_SCOPE_EXIT { R_ASSERT(romfsUnmount(GetBootImagePackageMountPath())); };
|
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. */
|
/* 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(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_CONVERT(fs::ResultTargetNotFound, ResultBootImagePackageNotFound())
|
||||||
} R_END_TRY_CATCH;
|
} R_END_TRY_CATCH;
|
||||||
ON_SCOPE_EXIT { R_ASSERT(romfsUnmount(GetBootImagePackageMountPath())); };
|
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. */
|
/* 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(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_CONVERT(fs::ResultTargetNotFound, ResultBootImagePackageNotFound())
|
||||||
} R_END_TRY_CATCH;
|
} R_END_TRY_CATCH;
|
||||||
ON_SCOPE_EXIT { R_ASSERT(romfsUnmount(GetBootImagePackageMountPath())); };
|
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. */
|
/* 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(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_CONVERT(fs::ResultTargetNotFound, ResultBootImagePackageNotFound())
|
||||||
} R_END_TRY_CATCH;
|
} R_END_TRY_CATCH;
|
||||||
ON_SCOPE_EXIT { R_ASSERT(romfsUnmount(GetBootImagePackageMountPath())); };
|
ON_SCOPE_EXIT { R_ASSERT(romfsUnmount(GetBootImagePackageMountPath())); };
|
||||||
|
@ -24,10 +24,10 @@ namespace ams::updater {
|
|||||||
static constexpr size_t SectorAlignment = 0x200;
|
static constexpr size_t SectorAlignment = 0x200;
|
||||||
private:
|
private:
|
||||||
FsStorage storage = {};
|
FsStorage storage = {};
|
||||||
FsBisStorageId partition_id;
|
FsBisPartitionId partition_id;
|
||||||
bool active;
|
bool active;
|
||||||
public:
|
public:
|
||||||
BisAccessor(FsBisStorageId id) : partition_id(id), active(false) { }
|
BisAccessor(FsBisPartitionId id) : partition_id(id), active(false) { }
|
||||||
~BisAccessor() {
|
~BisAccessor() {
|
||||||
if (this->active) {
|
if (this->active) {
|
||||||
fsStorageClose(&storage);
|
fsStorageClose(&storage);
|
||||||
@ -125,7 +125,7 @@ namespace ams::updater {
|
|||||||
using EnumType = typename Meta::EnumType;
|
using EnumType = typename Meta::EnumType;
|
||||||
using OffsetSizeType = typename Meta::OffsetSizeType;
|
using OffsetSizeType = typename Meta::OffsetSizeType;
|
||||||
public:
|
public:
|
||||||
PartitionAccessor(FsBisStorageId id) : BisAccessor(id) { }
|
PartitionAccessor(FsBisPartitionId id) : BisAccessor(id) { }
|
||||||
private:
|
private:
|
||||||
constexpr const OffsetSizeType *FindEntry(EnumType which) {
|
constexpr const OffsetSizeType *FindEntry(EnumType which) {
|
||||||
const OffsetSizeType *entry = nullptr;
|
const OffsetSizeType *entry = nullptr;
|
||||||
@ -182,27 +182,27 @@ namespace ams::updater {
|
|||||||
RepairSub,
|
RepairSub,
|
||||||
};
|
};
|
||||||
|
|
||||||
static constexpr FsBisStorageId GetPackage2StorageId(Package2Type which) {
|
static constexpr FsBisPartitionId GetPackage2StorageId(Package2Type which) {
|
||||||
switch (which) {
|
switch (which) {
|
||||||
case Package2Type::NormalMain:
|
case Package2Type::NormalMain:
|
||||||
return FsBisStorageId_BootConfigAndPackage2NormalMain;
|
return FsBisPartitionId_BootConfigAndPackage2Part1;
|
||||||
case Package2Type::NormalSub:
|
case Package2Type::NormalSub:
|
||||||
return FsBisStorageId_BootConfigAndPackage2NormalSub;
|
return FsBisPartitionId_BootConfigAndPackage2Part2;
|
||||||
case Package2Type::SafeMain:
|
case Package2Type::SafeMain:
|
||||||
return FsBisStorageId_BootConfigAndPackage2SafeMain;
|
return FsBisPartitionId_BootConfigAndPackage2Part3;
|
||||||
case Package2Type::SafeSub:
|
case Package2Type::SafeSub:
|
||||||
return FsBisStorageId_BootConfigAndPackage2SafeSub;
|
return FsBisPartitionId_BootConfigAndPackage2Part4;
|
||||||
case Package2Type::RepairMain:
|
case Package2Type::RepairMain:
|
||||||
return FsBisStorageId_BootConfigAndPackage2RepairMain;
|
return FsBisPartitionId_BootConfigAndPackage2Part5;
|
||||||
case Package2Type::RepairSub:
|
case Package2Type::RepairSub:
|
||||||
return FsBisStorageId_BootConfigAndPackage2RepairSub;
|
return FsBisPartitionId_BootConfigAndPackage2Part6;
|
||||||
AMS_UNREACHABLE_DEFAULT_CASE();
|
AMS_UNREACHABLE_DEFAULT_CASE();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class Boot0Accessor : public PartitionAccessor<Boot0Meta> {
|
class Boot0Accessor : public PartitionAccessor<Boot0Meta> {
|
||||||
public:
|
public:
|
||||||
static constexpr FsBisStorageId PartitionId = FsBisStorageId_Boot0;
|
static constexpr FsBisPartitionId PartitionId = FsBisPartitionId_BootPartition1Root;
|
||||||
static constexpr size_t BctPubkOffset = 0x210;
|
static constexpr size_t BctPubkOffset = 0x210;
|
||||||
static constexpr size_t BctPubkSize = 0x100;
|
static constexpr size_t BctPubkSize = 0x100;
|
||||||
static constexpr size_t BctEksOffset = 0x450;
|
static constexpr size_t BctEksOffset = 0x450;
|
||||||
@ -222,7 +222,7 @@ namespace ams::updater {
|
|||||||
|
|
||||||
class Boot1Accessor : public PartitionAccessor<Boot1Meta> {
|
class Boot1Accessor : public PartitionAccessor<Boot1Meta> {
|
||||||
public:
|
public:
|
||||||
static constexpr FsBisStorageId PartitionId = FsBisStorageId_Boot1;
|
static constexpr FsBisPartitionId PartitionId = FsBisPartitionId_BootPartition2Root;
|
||||||
public:
|
public:
|
||||||
Boot1Accessor() : PartitionAccessor<Boot1Meta>(PartitionId) { }
|
Boot1Accessor() : PartitionAccessor<Boot1Meta>(PartitionId) { }
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user