mirror of
https://github.com/switchbrew/libnx.git
synced 2025-07-06 11:22:15 +02:00
tmem: Allow user override of automatic memory tmem allocation
This commit is contained in:
parent
877485a1a5
commit
7e0dcad440
@ -8,6 +8,14 @@
|
|||||||
#include "kernel/virtmem.h"
|
#include "kernel/virtmem.h"
|
||||||
#include "runtime/diag.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 tmemCreate(TransferMemory* t, size_t size, Permission perm)
|
||||||
{
|
{
|
||||||
Result rc = 0;
|
Result rc = 0;
|
||||||
@ -16,7 +24,7 @@ Result tmemCreate(TransferMemory* t, size_t size, Permission perm)
|
|||||||
t->size = size;
|
t->size = size;
|
||||||
t->perm = perm;
|
t->perm = perm;
|
||||||
t->map_addr = NULL;
|
t->map_addr = NULL;
|
||||||
t->src_addr = memalign(0x1000, size);
|
t->src_addr = __libnx_tmem_alloc(size);
|
||||||
|
|
||||||
if (t->src_addr == NULL) {
|
if (t->src_addr == NULL) {
|
||||||
rc = MAKERESULT(Module_Libnx, LibnxError_OutOfMemory);
|
rc = MAKERESULT(Module_Libnx, LibnxError_OutOfMemory);
|
||||||
@ -30,7 +38,7 @@ Result tmemCreate(TransferMemory* t, size_t size, Permission perm)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (R_FAILED(rc)) {
|
if (R_FAILED(rc)) {
|
||||||
free(t->src_addr);
|
__libnx_tmem_free(t->src_addr);
|
||||||
t->src_addr = NULL;
|
t->src_addr = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,7 +122,7 @@ Result tmemClose(TransferMemory* t)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (t->src_addr != NULL) {
|
if (t->src_addr != NULL) {
|
||||||
free(t->src_addr);
|
__libnx_tmem_free(t->src_addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
t->src_addr = NULL;
|
t->src_addr = NULL;
|
||||||
|
Loading…
Reference in New Issue
Block a user