mirror of
https://github.com/libretro/RetroArch.git
synced 2026-11-11 03:11:33 -10:00
The tree's 3DS layer (the custom crt0 and link spec, system and memory setup, svchax, the old GPU command layer and the 3dsx/CIA launchers) lives under os/ctr, beside os/gekko and os/wiiu. The linear heap allocator is C: the same first-fit pool, so buffers land where they did, with live allocations found by address in an open-addressing table instead of a per-allocation tree node, and list nodes taken from cache-line-aligned slabs and reused. On the same trace it runs about half the instructions and practically no malloc/free calls. With the whole heap allocated, a further allocation now fails instead of starting the heap over and handing out its first address again, and the free-space queries no longer fault. samples/frontend/ctr_linear checks placement, alignment, coalescing, the full-heap case and pages handed back from the heap's end.
15 lines
420 B
C
15 lines
420 B
C
#ifndef EXEC_3DSX_H
|
|
#define EXEC_3DSX_H
|
|
|
|
/* since 3dsx programs are not guaranteed access to the OS,
|
|
* the 3dsx bootloader run by the exploit must run the next program
|
|
*
|
|
* your program must have no extra threads running when this is called,
|
|
* these limits do not apply to exec_cia
|
|
*/
|
|
int exec_3dsx_no_path_in_args(const char* path, const char** args);
|
|
|
|
int exec_3dsx(const char* path, const char** args);
|
|
|
|
#endif
|