Start going for consistent memory representation - instead of

'memory used' needs to become 'memory free'
This commit is contained in:
twinaphex 2019-09-22 03:57:31 +02:00
parent a855447d11
commit ed29c6f59c
8 changed files with 37 additions and 84 deletions

View File

@ -504,8 +504,9 @@ static uint64_t frontend_ctr_get_mem_total(void)
return osGetMemRegionSize(MEMREGION_ALL); 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); return osGetMemRegionUsed(MEMREGION_ALL);
} }
@ -609,7 +610,7 @@ frontend_ctx_driver_t frontend_ctx_ctr =
frontend_ctr_get_powerstate, frontend_ctr_get_powerstate,
frontend_ctr_parse_drive_list, frontend_ctr_parse_drive_list,
frontend_ctr_get_mem_total, frontend_ctr_get_mem_total,
frontend_ctr_get_mem_used, frontend_ctr_get_mem_free,
NULL, /* install_signal_handler */ NULL, /* install_signal_handler */
NULL, /* get_signal_handler_state */ NULL, /* get_signal_handler_state */
NULL, /* set_signal_handler_state */ NULL, /* set_signal_handler_state */

View File

@ -525,10 +525,11 @@ static uint64_t frontend_gx_get_mem_total(void)
return total; 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(); uint64_t total = SYSMEM1_SIZE - SYS_GetArena1Size();
#if defined(HW_RVL) && !defined(IS_SALAMANDER) #if defined(HW_RVL) && !defined(IS_SALAMANDER)
/* TODO/FIXME - this needs to change */
total += gx_mem2_used(); total += gx_mem2_used();
#endif #endif
return total; return total;
@ -555,7 +556,7 @@ frontend_ctx_driver_t frontend_ctx_gx = {
NULL, /* get_powerstate */ NULL, /* get_powerstate */
frontend_gx_parse_drive_list, frontend_gx_parse_drive_list,
frontend_gx_get_mem_total, frontend_gx_get_mem_total,
frontend_gx_get_mem_used, frontend_gx_get_mem_free,
NULL, /* install_signal_handler */ NULL, /* install_signal_handler */
NULL, /* get_sighandler_state */ NULL, /* get_sighandler_state */
NULL, /* set_sighandler_state */ NULL, /* set_sighandler_state */

View File

@ -820,13 +820,16 @@ static uint64_t frontend_switch_get_mem_total(void)
{ {
uint64_t memoryTotal = 0; uint64_t memoryTotal = 0;
svcGetInfo(&memoryTotal, 6, 0xffff8001, 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; 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; uint64_t memoryUsed = 0;
svcGetInfo(&memoryUsed, 7, 0xffff8001, 0); svcGetInfo(&memoryUsed, 7, 0xffff8001, 0);

View File

@ -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) static uint64_t frontend_unix_get_mem_total(void)
{ {
char line[256]; long pages = sysconf(_SC_PHYS_PAGES);
uint64_t total = 0; long page_size = sysconf(_SC_PAGE_SIZE);
FILE * data = fopen("/proc/meminfo", "r"); return pages * page_size;
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;
} }
static uint64_t frontend_unix_get_mem_used(void) static uint64_t frontend_unix_get_mem_free(void)
{ {
char line[256]; unsigned long long ps = sysconf(_SC_PAGESIZE);
uint64_t total = 0; unsigned long long pn = sysconf(_SC_AVPHYS_PAGES);
uint64_t freemem = 0; return ps * pn;
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;
} }
/*#include <valgrind/valgrind.h>*/ /*#include <valgrind/valgrind.h>*/
@ -2418,7 +2383,7 @@ frontend_ctx_driver_t frontend_ctx_unix = {
frontend_unix_get_powerstate, frontend_unix_get_powerstate,
frontend_unix_parse_drive_list, frontend_unix_parse_drive_list,
frontend_unix_get_mem_total, frontend_unix_get_mem_total,
frontend_unix_get_mem_used, frontend_unix_get_mem_free,
frontend_unix_install_signal_handlers, frontend_unix_install_signal_handlers,
frontend_unix_get_signal_handler_state, frontend_unix_get_signal_handler_state,
frontend_unix_set_signal_handler_state, frontend_unix_set_signal_handler_state,

View File

@ -370,12 +370,12 @@ uint64_t frontend_driver_get_total_memory(void)
return frontend->get_total_mem(); 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(); frontend_ctx_driver_t *frontend = frontend_get_ptr();
if (!frontend || !frontend->get_used_mem) if (!frontend || !frontend->get_free_mem)
return 0; return 0;
return frontend->get_used_mem(); return frontend->get_free_mem();
} }
void frontend_driver_install_signal_handler(void) void frontend_driver_install_signal_handler(void)

View File

@ -95,7 +95,7 @@ typedef struct frontend_ctx_driver
enum frontend_powerstate (*get_powerstate)(int *seconds, int *percent); enum frontend_powerstate (*get_powerstate)(int *seconds, int *percent);
int (*parse_drive_list)(void*, bool); int (*parse_drive_list)(void*, bool);
uint64_t (*get_total_mem)(void); uint64_t (*get_total_mem)(void);
uint64_t (*get_used_mem)(void); uint64_t (*get_free_mem)(void);
void (*install_signal_handler)(void); void (*install_signal_handler)(void);
int (*get_signal_handler_state)(void); int (*get_signal_handler_state)(void);
void (*set_signal_handler_state)(int value); 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_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); void frontend_driver_install_signal_handler(void);

View File

@ -579,47 +579,25 @@ static unsigned menu_displaylist_parse_system_info(menu_displaylist_info_t *info
char tmp[PATH_MAX_LENGTH]; char tmp[PATH_MAX_LENGTH];
char tmp2[PATH_MAX_LENGTH]; char tmp2[PATH_MAX_LENGTH];
char tmp3[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(); uint64_t memory_total = frontend_driver_get_total_memory();
tmp[0] = tmp2[0] = tmp3[0] = '\0'; 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), 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", "%s %s: %" PRIu64 "/%" PRIu64 " MB",
msg_hash_to_str(MSG_MEMORY), msg_hash_to_str(MSG_MEMORY),
msg_hash_to_str(MSG_IN_MEGABYTES), msg_hash_to_str(MSG_IN_MEGABYTES),
BYTES_TO_MB(memory_used), BYTES_TO_MB(memory_free),
BYTES_TO_MB(memory_total) 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, "", if (menu_entries_append_enum(info->list, tmp, "",
MENU_ENUM_LABEL_SYSTEM_INFO_ENTRY, MENU_ENUM_LABEL_SYSTEM_INFO_ENTRY,
MENU_SETTINGS_CORE_INFO_NONE, 0, 0)) MENU_SETTINGS_CORE_INFO_NONE, 0, 0))
count++; 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++;
} }
} }

View File

@ -11285,11 +11285,16 @@ static void retroarch_overlay_deinit(void)
static void retroarch_overlay_init(void) static void retroarch_overlay_init(void)
{ {
settings_t *settings = configuration_settings; settings_t *settings = configuration_settings;
#if 0
#if defined(GEKKO) #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 */ /* Avoid a crash at startup or even when toggling overlay in rgui */
uint64_t memory_used = frontend_driver_get_used_memory(); uint64_t memory_free = frontend_driver_get_free_memory();
if (memory_used > (72 * 1024 * 1024)) if (memory_free > (72 * 1024 * 1024))
return; return;
#endif
#endif #endif
retroarch_overlay_deinit(); retroarch_overlay_deinit();
@ -19152,7 +19157,7 @@ static void video_driver_frame(const void *data, unsigned width,
if (video_info.memory_show) if (video_info.memory_show)
{ {
char mem[128]; 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(); uint64_t mem_bytes_total = frontend_driver_get_total_memory();
mem[0] = '\0'; 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()); 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(); 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()) ? filestream_printf(file, "GPU Device: %s\n", !string_is_empty(video_driver_get_gpu_device_string()) ?