mirror of
https://github.com/libretro/RetroArch
synced 2025-02-21 18:40:09 +00:00
Start going for consistent memory representation - instead of
'memory used' needs to become 'memory free'
This commit is contained in:
parent
a855447d11
commit
ed29c6f59c
@ -504,8 +504,9 @@ static uint64_t frontend_ctr_get_mem_total(void)
|
||||
return osGetMemRegionSize(MEMREGION_ALL);
|
||||
}
|
||||
|
||||
static uint64_t frontend_ctr_get_mem_used(void)
|
||||
static uint64_t frontend_ctr_get_mem_free(void)
|
||||
{
|
||||
/* TODO/FIXME - does this return 'free memory'? */
|
||||
return osGetMemRegionUsed(MEMREGION_ALL);
|
||||
}
|
||||
|
||||
@ -609,7 +610,7 @@ frontend_ctx_driver_t frontend_ctx_ctr =
|
||||
frontend_ctr_get_powerstate,
|
||||
frontend_ctr_parse_drive_list,
|
||||
frontend_ctr_get_mem_total,
|
||||
frontend_ctr_get_mem_used,
|
||||
frontend_ctr_get_mem_free,
|
||||
NULL, /* install_signal_handler */
|
||||
NULL, /* get_signal_handler_state */
|
||||
NULL, /* set_signal_handler_state */
|
||||
|
@ -525,10 +525,11 @@ static uint64_t frontend_gx_get_mem_total(void)
|
||||
return total;
|
||||
}
|
||||
|
||||
static uint64_t frontend_gx_get_mem_used(void)
|
||||
static uint64_t frontend_gx_get_mem_free(void)
|
||||
{
|
||||
uint64_t total = SYSMEM1_SIZE - SYS_GetArena1Size();
|
||||
#if defined(HW_RVL) && !defined(IS_SALAMANDER)
|
||||
/* TODO/FIXME - this needs to change */
|
||||
total += gx_mem2_used();
|
||||
#endif
|
||||
return total;
|
||||
@ -555,7 +556,7 @@ frontend_ctx_driver_t frontend_ctx_gx = {
|
||||
NULL, /* get_powerstate */
|
||||
frontend_gx_parse_drive_list,
|
||||
frontend_gx_get_mem_total,
|
||||
frontend_gx_get_mem_used,
|
||||
frontend_gx_get_mem_free,
|
||||
NULL, /* install_signal_handler */
|
||||
NULL, /* get_sighandler_state */
|
||||
NULL, /* set_sighandler_state */
|
||||
|
@ -820,13 +820,16 @@ static uint64_t frontend_switch_get_mem_total(void)
|
||||
{
|
||||
uint64_t memoryTotal = 0;
|
||||
svcGetInfo(&memoryTotal, 6, 0xffff8001, 0);
|
||||
memoryTotal += frontend_switch_get_mem_used();
|
||||
/* TODO/FIXME - is now 'free memory', perhaps logic
|
||||
* here needs to change */
|
||||
memoryTotal += frontend_switch_get_mem_free();
|
||||
|
||||
return memoryTotal;
|
||||
}
|
||||
|
||||
static uint64_t frontend_switch_get_mem_used(void)
|
||||
static uint64_t frontend_switch_get_mem_free(void)
|
||||
{
|
||||
/* TODO/FIXME - should become 'free memory' */
|
||||
uint64_t memoryUsed = 0;
|
||||
svcGetInfo(&memoryUsed, 7, 0xffff8001, 0);
|
||||
|
||||
|
@ -2048,51 +2048,16 @@ static void frontend_unix_exitspawn(char *core_path, size_t core_path_size)
|
||||
|
||||
static uint64_t frontend_unix_get_mem_total(void)
|
||||
{
|
||||
char line[256];
|
||||
uint64_t total = 0;
|
||||
FILE * data = fopen("/proc/meminfo", "r");
|
||||
if (!data)
|
||||
return 0;
|
||||
|
||||
while (fgets(line, sizeof(line), data))
|
||||
{
|
||||
if (sscanf(line, "MemTotal: " STRING_REP_USIZE " kB", (size_t*)&total) == 1)
|
||||
{
|
||||
fclose(data);
|
||||
total *= 1024;
|
||||
return total;
|
||||
}
|
||||
}
|
||||
|
||||
fclose(data);
|
||||
return 0;
|
||||
long pages = sysconf(_SC_PHYS_PAGES);
|
||||
long page_size = sysconf(_SC_PAGE_SIZE);
|
||||
return pages * page_size;
|
||||
}
|
||||
|
||||
static uint64_t frontend_unix_get_mem_used(void)
|
||||
static uint64_t frontend_unix_get_mem_free(void)
|
||||
{
|
||||
char line[256];
|
||||
uint64_t total = 0;
|
||||
uint64_t freemem = 0;
|
||||
uint64_t buffers = 0;
|
||||
uint64_t cached = 0;
|
||||
FILE* data = fopen("/proc/meminfo", "r");
|
||||
if (!data)
|
||||
return 0;
|
||||
|
||||
while (fgets(line, sizeof(line), data))
|
||||
{
|
||||
if (sscanf(line, "MemTotal: " STRING_REP_USIZE " kB", (size_t*)&total) == 1)
|
||||
total *= 1024;
|
||||
if (sscanf(line, "MemFree: " STRING_REP_USIZE " kB", (size_t*)&freemem) == 1)
|
||||
freemem *= 1024;
|
||||
if (sscanf(line, "Buffers: " STRING_REP_USIZE " kB", (size_t*)&buffers) == 1)
|
||||
buffers *= 1024;
|
||||
if (sscanf(line, "Cached: " STRING_REP_USIZE " kB", (size_t*)&cached) == 1)
|
||||
cached *= 1024;
|
||||
}
|
||||
|
||||
fclose(data);
|
||||
return total - freemem - buffers - cached;
|
||||
unsigned long long ps = sysconf(_SC_PAGESIZE);
|
||||
unsigned long long pn = sysconf(_SC_AVPHYS_PAGES);
|
||||
return ps * pn;
|
||||
}
|
||||
|
||||
/*#include <valgrind/valgrind.h>*/
|
||||
@ -2418,7 +2383,7 @@ frontend_ctx_driver_t frontend_ctx_unix = {
|
||||
frontend_unix_get_powerstate,
|
||||
frontend_unix_parse_drive_list,
|
||||
frontend_unix_get_mem_total,
|
||||
frontend_unix_get_mem_used,
|
||||
frontend_unix_get_mem_free,
|
||||
frontend_unix_install_signal_handlers,
|
||||
frontend_unix_get_signal_handler_state,
|
||||
frontend_unix_set_signal_handler_state,
|
||||
|
@ -370,12 +370,12 @@ uint64_t frontend_driver_get_total_memory(void)
|
||||
return frontend->get_total_mem();
|
||||
}
|
||||
|
||||
uint64_t frontend_driver_get_used_memory(void)
|
||||
uint64_t frontend_driver_get_free_memory(void)
|
||||
{
|
||||
frontend_ctx_driver_t *frontend = frontend_get_ptr();
|
||||
if (!frontend || !frontend->get_used_mem)
|
||||
if (!frontend || !frontend->get_free_mem)
|
||||
return 0;
|
||||
return frontend->get_used_mem();
|
||||
return frontend->get_free_mem();
|
||||
}
|
||||
|
||||
void frontend_driver_install_signal_handler(void)
|
||||
|
@ -95,7 +95,7 @@ typedef struct frontend_ctx_driver
|
||||
enum frontend_powerstate (*get_powerstate)(int *seconds, int *percent);
|
||||
int (*parse_drive_list)(void*, bool);
|
||||
uint64_t (*get_total_mem)(void);
|
||||
uint64_t (*get_used_mem)(void);
|
||||
uint64_t (*get_free_mem)(void);
|
||||
void (*install_signal_handler)(void);
|
||||
int (*get_signal_handler_state)(void);
|
||||
void (*set_signal_handler_state)(int value);
|
||||
@ -193,7 +193,7 @@ bool frontend_driver_get_salamander_basename(char *s, size_t len);
|
||||
|
||||
uint64_t frontend_driver_get_total_memory(void);
|
||||
|
||||
uint64_t frontend_driver_get_used_memory(void);
|
||||
uint64_t frontend_driver_get_free_memory(void);
|
||||
|
||||
void frontend_driver_install_signal_handler(void);
|
||||
|
||||
|
@ -579,47 +579,25 @@ static unsigned menu_displaylist_parse_system_info(menu_displaylist_info_t *info
|
||||
char tmp[PATH_MAX_LENGTH];
|
||||
char tmp2[PATH_MAX_LENGTH];
|
||||
char tmp3[PATH_MAX_LENGTH];
|
||||
uint64_t memory_used = frontend_driver_get_used_memory();
|
||||
uint64_t memory_free = frontend_driver_get_free_memory();
|
||||
uint64_t memory_total = frontend_driver_get_total_memory();
|
||||
|
||||
tmp[0] = tmp2[0] = tmp3[0] = '\0';
|
||||
|
||||
if (memory_used != 0 && memory_total != 0)
|
||||
if (memory_free != 0 && memory_total != 0)
|
||||
{
|
||||
snprintf(tmp, sizeof(tmp),
|
||||
"%s %s: %" PRIu64 "/%" PRIu64 " B",
|
||||
msg_hash_to_str(MSG_MEMORY),
|
||||
msg_hash_to_str(MSG_IN_BYTES),
|
||||
memory_used,
|
||||
memory_total
|
||||
);
|
||||
snprintf(tmp2, sizeof(tmp2),
|
||||
"%s %s: %" PRIu64 "/%" PRIu64 " MB",
|
||||
msg_hash_to_str(MSG_MEMORY),
|
||||
msg_hash_to_str(MSG_IN_MEGABYTES),
|
||||
BYTES_TO_MB(memory_used),
|
||||
BYTES_TO_MB(memory_free),
|
||||
BYTES_TO_MB(memory_total)
|
||||
);
|
||||
snprintf(tmp3, sizeof(tmp3),
|
||||
"%s %s: %" PRIu64 "/%" PRIu64 " GB",
|
||||
msg_hash_to_str(MSG_MEMORY),
|
||||
msg_hash_to_str(MSG_IN_GIGABYTES),
|
||||
BYTES_TO_GB(memory_used),
|
||||
BYTES_TO_GB(memory_total)
|
||||
);
|
||||
|
||||
if (menu_entries_append_enum(info->list, tmp, "",
|
||||
MENU_ENUM_LABEL_SYSTEM_INFO_ENTRY,
|
||||
MENU_SETTINGS_CORE_INFO_NONE, 0, 0))
|
||||
count++;
|
||||
if (menu_entries_append_enum(info->list, tmp2, "",
|
||||
MENU_ENUM_LABEL_SYSTEM_INFO_ENTRY,
|
||||
MENU_SETTINGS_CORE_INFO_NONE, 0, 0))
|
||||
count++;
|
||||
if (menu_entries_append_enum(info->list, tmp3, "",
|
||||
MENU_ENUM_LABEL_SYSTEM_INFO_ENTRY,
|
||||
MENU_SETTINGS_CORE_INFO_NONE, 0, 0))
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
|
15
retroarch.c
15
retroarch.c
@ -11285,11 +11285,16 @@ static void retroarch_overlay_deinit(void)
|
||||
static void retroarch_overlay_init(void)
|
||||
{
|
||||
settings_t *settings = configuration_settings;
|
||||
|
||||
#if 0
|
||||
#if defined(GEKKO)
|
||||
/* TODO/FIXME - Wiimpathy - behavior here has changed - can you
|
||||
* rewrite this? */
|
||||
/* Avoid a crash at startup or even when toggling overlay in rgui */
|
||||
uint64_t memory_used = frontend_driver_get_used_memory();
|
||||
if (memory_used > (72 * 1024 * 1024))
|
||||
uint64_t memory_free = frontend_driver_get_free_memory();
|
||||
if (memory_free > (72 * 1024 * 1024))
|
||||
return;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
retroarch_overlay_deinit();
|
||||
@ -19152,7 +19157,7 @@ static void video_driver_frame(const void *data, unsigned width,
|
||||
if (video_info.memory_show)
|
||||
{
|
||||
char mem[128];
|
||||
uint64_t mem_bytes_used = frontend_driver_get_used_memory();
|
||||
uint64_t mem_bytes_used = frontend_driver_get_free_memory();
|
||||
uint64_t mem_bytes_total = frontend_driver_get_total_memory();
|
||||
|
||||
mem[0] = '\0';
|
||||
@ -25598,10 +25603,10 @@ static bool rarch_write_debug_info(void)
|
||||
filestream_printf(file, "CPU Cores: %u\n", cpu_features_get_core_amount());
|
||||
|
||||
{
|
||||
uint64_t memory_used = frontend_driver_get_used_memory();
|
||||
uint64_t memory_free = frontend_driver_get_free_memory();
|
||||
uint64_t memory_total = frontend_driver_get_total_memory();
|
||||
|
||||
filestream_printf(file, "Memory: %" PRIu64 "/%" PRIu64 " MB\n", memory_used / 1024 / 1024, memory_total / 1024 / 1024);
|
||||
filestream_printf(file, "Memory: %" PRIu64 "/%" PRIu64 " MB\n", memory_free / 1024 / 1024, memory_total / 1024 / 1024);
|
||||
}
|
||||
|
||||
filestream_printf(file, "GPU Device: %s\n", !string_is_empty(video_driver_get_gpu_device_string()) ?
|
||||
|
Loading…
x
Reference in New Issue
Block a user