mirror of
https://github.com/Atmosphere-NX/Atmosphere.git
synced 2024-11-17 17:36:44 +00:00
kern: update for new slab resource counts/extents
This commit is contained in:
parent
6a368d3d1a
commit
15956fcf9a
3 changed files with 9 additions and 14 deletions
|
@ -44,9 +44,8 @@ namespace ams::kern {
|
||||||
constexpr size_t KernelInitialPageHeapSize = 128_KB;
|
constexpr size_t KernelInitialPageHeapSize = 128_KB;
|
||||||
|
|
||||||
constexpr size_t KernelSlabHeapDataSize = 5_MB;
|
constexpr size_t KernelSlabHeapDataSize = 5_MB;
|
||||||
constexpr size_t KernelSlabHeapGapsSize = 2_MB - 64_KB;
|
constexpr size_t KernelSlabHeapGapsSizeMax = 2_MB - 64_KB;
|
||||||
constexpr size_t KernelSlabHeapGapsSizeDeprecated = 2_MB;
|
constexpr size_t KernelSlabHeapSize = KernelSlabHeapDataSize + KernelSlabHeapGapsSizeMax;
|
||||||
constexpr size_t KernelSlabHeapSize = KernelSlabHeapDataSize + KernelSlabHeapGapsSize;
|
|
||||||
|
|
||||||
/* NOTE: This is calculated from KThread slab counts, assuming KThread size <= 0x860. */
|
/* NOTE: This is calculated from KThread slab counts, assuming KThread size <= 0x860. */
|
||||||
constexpr size_t KernelSlabHeapAdditionalSize = 0x68000;
|
constexpr size_t KernelSlabHeapAdditionalSize = 0x68000;
|
||||||
|
|
|
@ -57,14 +57,14 @@ namespace ams::kern::init {
|
||||||
/* Constexpr counts. */
|
/* Constexpr counts. */
|
||||||
constexpr size_t SlabCountKProcess = 80;
|
constexpr size_t SlabCountKProcess = 80;
|
||||||
constexpr size_t SlabCountKThread = 800;
|
constexpr size_t SlabCountKThread = 800;
|
||||||
constexpr size_t SlabCountKEvent = 700;
|
constexpr size_t SlabCountKEvent = 900;
|
||||||
constexpr size_t SlabCountKInterruptEvent = 100;
|
constexpr size_t SlabCountKInterruptEvent = 100;
|
||||||
constexpr size_t SlabCountKPort = 256 + 0x20 /* Extra 0x20 ports over Nintendo for homebrew. */;
|
constexpr size_t SlabCountKPort = 256 + 0x20 /* Extra 0x20 ports over Nintendo for homebrew. */;
|
||||||
constexpr size_t SlabCountKSharedMemory = 80;
|
constexpr size_t SlabCountKSharedMemory = 80;
|
||||||
constexpr size_t SlabCountKTransferMemory = 200;
|
constexpr size_t SlabCountKTransferMemory = 200;
|
||||||
constexpr size_t SlabCountKCodeMemory = 10;
|
constexpr size_t SlabCountKCodeMemory = 10;
|
||||||
constexpr size_t SlabCountKDeviceAddressSpace = 300;
|
constexpr size_t SlabCountKDeviceAddressSpace = 300;
|
||||||
constexpr size_t SlabCountKSession = 933;
|
constexpr size_t SlabCountKSession = 1133;
|
||||||
constexpr size_t SlabCountKLightSession = 100;
|
constexpr size_t SlabCountKLightSession = 100;
|
||||||
constexpr size_t SlabCountKObjectName = 7;
|
constexpr size_t SlabCountKObjectName = 7;
|
||||||
constexpr size_t SlabCountKResourceLimit = 5;
|
constexpr size_t SlabCountKResourceLimit = 5;
|
||||||
|
@ -82,7 +82,7 @@ namespace ams::kern::init {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Global to hold our resource counts. */
|
/* Global to hold our resource counts. */
|
||||||
KSlabResourceCounts g_slab_resource_counts = {
|
constinit KSlabResourceCounts g_slab_resource_counts = {
|
||||||
.num_KProcess = SlabCountKProcess,
|
.num_KProcess = SlabCountKProcess,
|
||||||
.num_KThread = SlabCountKThread,
|
.num_KThread = SlabCountKThread,
|
||||||
.num_KEvent = SlabCountKEvent,
|
.num_KEvent = SlabCountKEvent,
|
||||||
|
@ -131,7 +131,9 @@ namespace ams::kern::init {
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t CalculateSlabHeapGapSize() {
|
size_t CalculateSlabHeapGapSize() {
|
||||||
return (kern::GetTargetFirmware() >= TargetFirmware_10_0_0) ? KernelSlabHeapGapsSize : KernelSlabHeapGapsSizeDeprecated;
|
constexpr size_t KernelSlabHeapGapSize = 2_MB - 296_KB;
|
||||||
|
static_assert(KernelSlabHeapGapSize <= KernelSlabHeapGapsSizeMax);
|
||||||
|
return KernelSlabHeapGapSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t CalculateTotalSlabHeapSize() {
|
size_t CalculateTotalSlabHeapSize() {
|
||||||
|
|
|
@ -170,14 +170,8 @@ namespace ams::kern {
|
||||||
size_t KMemoryLayout::GetResourceRegionSizeForInit() {
|
size_t KMemoryLayout::GetResourceRegionSizeForInit() {
|
||||||
/* Calculate resource region size based on whether we allow extra threads. */
|
/* Calculate resource region size based on whether we allow extra threads. */
|
||||||
const bool use_extra_resources = KSystemControl::Init::ShouldIncreaseThreadResourceLimit();
|
const bool use_extra_resources = KSystemControl::Init::ShouldIncreaseThreadResourceLimit();
|
||||||
size_t resource_region_size = KernelResourceSize + (use_extra_resources ? KernelSlabHeapAdditionalSize : 0);
|
|
||||||
|
|
||||||
/* 10.0.0 reduced the slab heap gaps by 64K. */
|
return KernelResourceSize + (use_extra_resources ? KernelSlabHeapAdditionalSize : 0);
|
||||||
if (kern::GetTargetFirmware() < ams::TargetFirmware_10_0_0) {
|
|
||||||
resource_region_size += (KernelSlabHeapGapsSizeDeprecated - KernelSlabHeapGapsSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
return resource_region_size;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue