Atmosphere/libraries/libstratosphere/source/os
Michael Scire b7ec64ea16 fs.mitm: add and use memlet module to temporarily steal applet memory while building romfs images.
Starting in 20.0.0, the browser needs more applet memory to function, so we can't steal as much any more.
Thus, we now steal 14 MB on 20.0.0+ instead of 40MB.

However, since this reduces memory available for custom system modules, we are adjusting to compensate.
ams.mitm's heap size has been reduced from 32MB to 12MB (recovering 20MB).
In addition, fs.mitm now uses a new mechanism for stealing memory from the applet pool while romfs is being built.

On net, we are compromising:
    * Custom sysmodules lose memory available to them.
        On 19.0.0/AMS 1.8.0, there was 30 MB available for custom sysmodules.
        Stealing 14 MB instead of 40 MB, we lose 26 MB of that. Reducing ams.mitm's usage will gain us back 20.
        Nintendo also appears to...use 4 extra MB, in 20.0.0, from my test homebrew.
        So on 20.0.0/AMS 1.9.0, there should be 20 MB available for custom sysmodules.
        On the bright side, on <20.0.0/AMS 1.9.0, I guess there will be 50 MB available for custom sysmodules now?
    * totk mods will lose the ability to...put every file in the romfs on sd card. There will be some unknown maximum filecount for totk mods.
        On the bright side, implementing the transient memory stealing should improve compatibility for some mods which strictly add files?
2025-05-09 11:55:21 -07:00
..
impl fs.mitm: add and use memlet module to temporarily steal applet memory while building romfs images. 2025-05-09 11:55:21 -07:00
os_argument.cpp strat: use ams::Main() instead of main(argc, argv) 2021-10-07 17:44:54 -07:00
os_barrier.cpp ams: support building unit test programs on windows/linux/macos 2022-03-21 17:21:44 -07:00
os_busy_mutex.cpp ams: support building unit test programs on windows/linux/macos 2022-03-21 17:21:44 -07:00
os_cache.cpp os: add FlushDataCache 2021-10-10 00:33:52 -07:00
os_condition_variable.cpp ams: the copyright^H^H^H^H^H^H^Hmplex plane is the algebraic closure of the reals 2021-10-04 12:59:10 -07:00
os_debug.cpp abort/error: print backtrace, abuse templates, overhaul result/diag (macos not done yet) 2022-03-21 17:21:44 -07:00
os_event.cpp os: refactor multi wait apis to better match Nintendo's latest implementation 2022-04-12 16:47:36 -07:00
os_insecure_memory.cpp os: update os namespace for 15.0.0, loader/ro: update to use csrng, spl: bump max sessions 2022-10-12 09:15:16 -07:00
os_interrupt_event.cpp os: update os namespace for 15.0.0, loader/ro: update to use csrng, spl: bump max sessions 2022-10-12 09:15:16 -07:00
os_io_region.cpp os: add DetachIoRegionHandle 2022-03-28 00:00:36 -07:00
os_light_event.cpp ams: support building unit test programs on windows/linux/macos 2022-03-21 17:21:44 -07:00
os_light_message_queue.cpp ams: the copyright^H^H^H^H^H^H^Hmplex plane is the algebraic closure of the reals 2021-10-04 12:59:10 -07:00
os_light_semaphore.cpp ams: the copyright^H^H^H^H^H^H^Hmplex plane is the algebraic closure of the reals 2021-10-04 12:59:10 -07:00
os_memory_attribute.cpp os: implement MemoryHeapManager, SetMemoryAttribute 2022-06-10 22:36:03 -07:00
os_memory_heap.cpp os: implement MemoryHeapManager, SetMemoryAttribute 2022-06-10 22:36:03 -07:00
os_memory_permission.cpp ams: the copyright^H^H^H^H^H^H^Hmplex plane is the algebraic closure of the reals 2021-10-04 12:59:10 -07:00
os_message_queue.cpp os: refactor multi wait apis to better match Nintendo's latest implementation 2022-04-12 16:47:36 -07:00
os_multiple_wait.cpp os: refactor multi wait apis to better match Nintendo's latest implementation 2022-04-12 16:47:36 -07:00
os_mutex.cpp libstrat: enable -Wextra, -Werror 2021-10-06 15:20:48 -07:00
os_native_handle_api.cpp ams: the copyright^H^H^H^H^H^H^Hmplex plane is the algebraic closure of the reals 2021-10-04 12:59:10 -07:00
os_process_code_memory.cpp os: update os namespace for 15.0.0, loader/ro: update to use csrng, spl: bump max sessions 2022-10-12 09:15:16 -07:00
os_process_handle_api.cpp ams: globally prefer R_RETURN to return for ams::Result 2022-03-26 14:48:33 -07:00
os_process_memory.cpp os: update os namespace for 15.0.0, loader/ro: update to use csrng, spl: bump max sessions 2022-10-12 09:15:16 -07:00
os_random.cpp kern: avoid constexpr init for many objects (avoids unnecessary memory clear) (#1668) 2021-10-23 15:25:20 -07:00
os_rw_busy_mutex.cpp ams: support building unit test programs on windows/linux/macos 2022-03-21 17:21:44 -07:00
os_rw_lock.cpp ams: the copyright^H^H^H^H^H^H^Hmplex plane is the algebraic closure of the reals 2021-10-04 12:59:10 -07:00
os_sdk_condition_variable.cpp ams: the copyright^H^H^H^H^H^H^Hmplex plane is the algebraic closure of the reals 2021-10-04 12:59:10 -07:00
os_sdk_mutex.cpp ams: support building unit test programs on windows/linux/macos 2022-03-21 17:21:44 -07:00
os_sdk_recursive_mutex.cpp ams: support building unit test programs on windows/linux/macos 2022-03-21 17:21:44 -07:00
os_sdk_reply_and_receive.cpp os: silence a maybe-uninit warning 2022-04-16 12:28:21 -07:00
os_sdk_thread_local_storage_api.cpp ams: globally prefer R_RETURN to return for ams::Result 2022-03-26 14:48:33 -07:00
os_semaphore.cpp os: refactor multi wait apis to better match Nintendo's latest implementation 2022-04-12 16:47:36 -07:00
os_shared_memory.cpp ams: use R_SUCCEED, R_THROW globally 2022-03-26 00:14:36 -07:00
os_system_event.cpp ams: use R_SUCCEED, R_THROW globally 2022-03-26 00:14:36 -07:00
os_thread.cpp ams: globally prefer R_RETURN to return for ams::Result 2022-03-26 14:48:33 -07:00
os_thread_local_storage_api.cpp ams: use R_SUCCEED, R_THROW globally 2022-03-26 00:14:36 -07:00
os_tick.cpp ams: the copyright^H^H^H^H^H^H^Hmplex plane is the algebraic closure of the reals 2021-10-04 12:59:10 -07:00
os_timer_event.cpp os: refactor multi wait apis to better match Nintendo's latest implementation 2022-04-12 16:47:36 -07:00
os_transfer_memory.cpp ams: use R_SUCCEED, R_THROW globally 2022-03-26 00:14:36 -07:00
os_unsafe_memory.cpp os: add UnsafeMemory apis 2023-03-01 03:20:49 -07:00
os_virtual_address_memory.cpp ams: support building unit test programs on windows/linux/macos 2022-03-21 17:21:44 -07:00