From 0d9b345ae01649365d06ea1ec5d0125be918fd3c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 19 Jun 2016 00:08:16 +0200 Subject: [PATCH] Simplify frontend_linux_get_mem_total - get_mem_used still wrong --- frontend/drivers/platform_linux.c | 52 ++++--------------------------- 1 file changed, 6 insertions(+), 46 deletions(-) diff --git a/frontend/drivers/platform_linux.c b/frontend/drivers/platform_linux.c index 5a0ca96889..7e7f68d1f9 100644 --- a/frontend/drivers/platform_linux.c +++ b/frontend/drivers/platform_linux.c @@ -1912,56 +1912,16 @@ static void frontend_linux_exitspawn(char *core_path, size_t core_path_size) static uint64_t frontend_linux_get_mem_total(void) { - /* Prefer sysctl() over sysconf() except sysctl() HW_REALMEM and HW_PHYSMEM */ -#if defined(CTL_HW) && (defined(HW_MEMSIZE) || defined(HW_PHYSMEM64)) - int mib[2]; - mib[0] = CTL_HW; -#if defined(HW_MEMSIZE) - mib[1] = HW_MEMSIZE; /* OSX. --------------------- */ -#elif defined(HW_PHYSMEM64) - mib[1] = HW_PHYSMEM64; /* NetBSD, OpenBSD. --------- */ -#endif - int64_t size = 0; /* 64-bit */ - size_t len = sizeof( size ); - if ( sysctl( mib, 2, &size, &len, NULL, 0 ) == 0 ) - return (size_t)size; - return 0L; /* Failed? */ -#elif defined(_SC_AIX_REALMEM) - /* AIX. ----------------------------------------------------- */ - return (size_t)sysconf( _SC_AIX_REALMEM ) * (size_t)1024L; - -#elif defined(_SC_PHYS_PAGES) && defined(_SC_PAGESIZE) - /* FreeBSD, Linux, OpenBSD, and Solaris. -------------------- */ - return (size_t)sysconf( _SC_PHYS_PAGES ) * - (size_t)sysconf( _SC_PAGESIZE ); - -#elif defined(_SC_PHYS_PAGES) && defined(_SC_PAGE_SIZE) - /* Legacy. -------------------------------------------------- */ - return (size_t)sysconf( _SC_PHYS_PAGES ) * - (size_t)sysconf( _SC_PAGE_SIZE ); - -#elif defined(CTL_HW) && (defined(HW_PHYSMEM) || defined(HW_REALMEM)) - /* DragonFly BSD, FreeBSD, NetBSD, OpenBSD, and OSX. -------- */ - int mib[2]; - mib[0] = CTL_HW; -#if defined(HW_REALMEM) - mib[1] = HW_REALMEM; /* FreeBSD. ----------------- */ -#elif defined(HW_PYSMEM) - mib[1] = HW_PHYSMEM; /* Others. ------------------ */ -#endif - unsigned int size = 0; /* 32-bit */ - size_t len = sizeof( size ); - if ( sysctl( mib, 2, &size, &len, NULL, 0 ) == 0 ) - return (size_t)size; - return 0L; /* Failed? */ -#endif /* sysctl and sysconf variants */ + uint64_t pageSize = sysconf(_SC_PAGESIZE); + uint64_t totalNumPages = sysconf(_SC_PHYS_PAGES); + return pageSize * totalNumPages; } static uint64_t frontend_linux_get_mem_used(void) { - long pages = sysconf(_SC_AVPHYS_PAGES); - long page_size = sysconf(_SC_PAGE_SIZE); - return pages * page_size; + uint64_t pageSize = sysconf(_SC_PAGESIZE); + uint64_t availNumPages = sysconf(_SC_AVPHYS_PAGES); + return pageSize * availNumPages; } frontend_ctx_driver_t frontend_ctx_linux = {