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);
}
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 */

View File

@ -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 */

View File

@ -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);

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)
{
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,

View File

@ -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)

View File

@ -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);

View File

@ -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++;
}
}

View File

@ -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()) ?