mirror of
https://github.com/Atmosphere-NX/Atmosphere.git
synced 2025-05-19 09:25:08 -04:00
os: implement MemoryHeapManager, SetMemoryAttribute
This commit is contained in:
parent
4e112de223
commit
a65b6df8d2
26 changed files with 1120 additions and 13 deletions
|
@ -14,17 +14,47 @@
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include <stratosphere.hpp>
|
||||
#include "impl/os_memory_heap_manager.hpp"
|
||||
|
||||
namespace ams::os {
|
||||
|
||||
Result SetMemoryHeapSize(size_t size) {
|
||||
/* Check pre-conditions. */
|
||||
AMS_ASSERT(util::IsAligned(size, MemoryHeapUnitSize));
|
||||
|
||||
/* Set the heap size. */
|
||||
R_RETURN(impl::GetMemoryHeapManager().SetHeapSize(size));
|
||||
}
|
||||
|
||||
uintptr_t GetMemoryHeapAddress() {
|
||||
return impl::GetMemoryHeapManager().GetHeapAddress();
|
||||
}
|
||||
|
||||
size_t GetMemoryHeapSize() {
|
||||
return impl::GetMemoryHeapManager().GetHeapSize();
|
||||
}
|
||||
|
||||
Result AllocateMemoryBlock(uintptr_t *out_address, size_t size) {
|
||||
AMS_UNUSED(out_address, size);
|
||||
AMS_ABORT("Not implemented yet");
|
||||
/* Check pre-conditions. */
|
||||
AMS_ASSERT(size > 0);
|
||||
AMS_ASSERT(util::IsAligned(size, MemoryBlockUnitSize));
|
||||
|
||||
/* Allocate from heap. */
|
||||
R_RETURN(impl::GetMemoryHeapManager().AllocateFromHeap(out_address, size));
|
||||
}
|
||||
|
||||
void FreeMemoryBlock(uintptr_t address, size_t size) {
|
||||
AMS_UNUSED(address, size);
|
||||
AMS_ABORT("Not implemented yet");
|
||||
/* Get memory heap manager. */
|
||||
auto &manager = impl::GetMemoryHeapManager();
|
||||
|
||||
/* Check pre-conditions. */
|
||||
AMS_ASSERT(util::IsAligned(address, MemoryBlockUnitSize));
|
||||
AMS_ASSERT(size > 0);
|
||||
AMS_ASSERT(util::IsAligned(size, MemoryBlockUnitSize));
|
||||
AMS_ABORT_UNLESS(manager.IsRegionInMemoryHeap(address, size));
|
||||
|
||||
/* Release the memory block. */
|
||||
manager.ReleaseToHeap(address, size);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue