From 7e0dcad4406b82131d311e564253fceea339ca06 Mon Sep 17 00:00:00 2001 From: Michael Scire Date: Mon, 18 Jan 2021 07:35:28 -0800 Subject: [PATCH] tmem: Allow user override of automatic memory tmem allocation --- nx/source/kernel/tmem.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/nx/source/kernel/tmem.c b/nx/source/kernel/tmem.c index e5a9f7fe..438e48f8 100644 --- a/nx/source/kernel/tmem.c +++ b/nx/source/kernel/tmem.c @@ -8,6 +8,14 @@ #include "kernel/virtmem.h" #include "runtime/diag.h" +void* __attribute__((weak)) __libnx_tmem_alloc(size_t size) { + return memalign(0x1000, size); +} + +void __attribute__((weak)) __libnx_tmem_free(void* mem) { + free(mem); +} + Result tmemCreate(TransferMemory* t, size_t size, Permission perm) { Result rc = 0; @@ -16,7 +24,7 @@ Result tmemCreate(TransferMemory* t, size_t size, Permission perm) t->size = size; t->perm = perm; t->map_addr = NULL; - t->src_addr = memalign(0x1000, size); + t->src_addr = __libnx_tmem_alloc(size); if (t->src_addr == NULL) { rc = MAKERESULT(Module_Libnx, LibnxError_OutOfMemory); @@ -30,7 +38,7 @@ Result tmemCreate(TransferMemory* t, size_t size, Permission perm) } if (R_FAILED(rc)) { - free(t->src_addr); + __libnx_tmem_free(t->src_addr); t->src_addr = NULL; } @@ -114,7 +122,7 @@ Result tmemClose(TransferMemory* t) } if (t->src_addr != NULL) { - free(t->src_addr); + __libnx_tmem_free(t->src_addr); } t->src_addr = NULL;