/*** Copyright (C) 2021 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: Memory.cpp Date: 2021-6-12 Author: Reece ***/ #include #include "Memory.hpp" #include #include #if defined(AURORA_IS_LINUX_DERIVED) #include #endif namespace Aurora::Memory { AUKN_SYM AuUInt GetChunkSize(const void *head) { return mi_malloc_size(head); } #define CHECK_WRAP_RETURN(exp, string) \ auto pRet = exp; \ if (!pRet && gRuntimeConfig.debug.bIsMemoryErrorFatal) \ { \ SysPanic(string); \ } \ return pRet; AUKN_SYM void *_ZAlloc(Types::size_t length) { CHECK_WRAP_RETURN(mi_zalloc(length), "ZAlloc out of memory"); } AUKN_SYM void *_ZAlloc(Types::size_t length, Types::size_t align) { CHECK_WRAP_RETURN(mi_zalloc_aligned(length, align), "ZAlloc out of memory"); } AUKN_SYM void *_FAlloc(Types::size_t length) { CHECK_WRAP_RETURN(mi_malloc(length), "FAlloc out of memory"); } AUKN_SYM void *_FAlloc(Types::size_t length, Types::size_t align) { CHECK_WRAP_RETURN(mi_malloc_aligned(length, align), "FAlloc out of memory"); } AUKN_SYM void *_ZRealloc(void *buffer, Types::size_t length, Types::size_t align) { CHECK_WRAP_RETURN(mi_rezalloc_aligned(buffer, length, align), "ZAlloc out of memory"); } AUKN_SYM void *_ZRealloc(void *buffer, Types::size_t length) { CHECK_WRAP_RETURN(mi_rezalloc(buffer, length), "ZAlloc out of memory"); } AUKN_SYM void *_FRealloc(void *buffer, Types::size_t length, Types::size_t align) { CHECK_WRAP_RETURN(mi_realloc_aligned(buffer, length, align), "MAlloc out of memory"); } AUKN_SYM void *_FRealloc(void *buffer, Types::size_t length) { CHECK_WRAP_RETURN(mi_realloc(buffer, length), "MAlloc out of memory"); } AUKN_SYM void _Free(void *buffer) { mi_free(buffer); } AUKN_SYM AuUInt GetPageSize() { return AuHwInfo::GetPageSize(); } }