mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 13:48:06 +02:00
util/os_misc: add os_get_available_system_memory()
Add os_get_available_system_memory() derived from src/intel/vulkan/anv_device.c get_available_system_memory() Fixes:b80930a6fe("anv: add support for VK_EXT_memory_budget") Signed-off-by: Jonathan Gray <jsg@jsg.id.au> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6517> (cherry picked from commit033dcb2978)
This commit is contained in:
parent
f08f211cd0
commit
b28d1178aa
3 changed files with 38 additions and 1 deletions
|
|
@ -121,7 +121,7 @@
|
|||
"description": "util/os_misc: add os_get_available_system_memory()",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"master_sha": null,
|
||||
"because_sha": "b80930a6fea075d2ef283ceac5a2a64e65fd7bc4"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@
|
|||
|
||||
|
||||
#include "os_misc.h"
|
||||
#include "os_file.h"
|
||||
|
||||
#include <stdarg.h>
|
||||
|
||||
|
|
@ -44,6 +45,8 @@
|
|||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <inttypes.h>
|
||||
|
||||
#endif
|
||||
|
||||
|
|
@ -182,3 +185,31 @@ os_get_total_physical_memory(uint64_t *size)
|
|||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
bool
|
||||
os_get_available_system_memory(uint64_t *size)
|
||||
{
|
||||
#if DETECT_OS_LINUX
|
||||
char *meminfo = os_read_file("/proc/meminfo", NULL);
|
||||
if (!meminfo)
|
||||
return false;
|
||||
|
||||
char *str = strstr(meminfo, "MemAvailable:");
|
||||
if (!str) {
|
||||
free(meminfo);
|
||||
return false;
|
||||
}
|
||||
|
||||
uint64_t kb_mem_available;
|
||||
if (sscanf(str, "MemAvailable: %" PRIx64, &kb_mem_available) == 1) {
|
||||
free(meminfo);
|
||||
*size = kb_mem_available << 10;
|
||||
return true;
|
||||
}
|
||||
|
||||
free(meminfo);
|
||||
return false;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
|
|
|||
|
|
@ -95,6 +95,12 @@ os_get_option(const char *name);
|
|||
bool
|
||||
os_get_total_physical_memory(uint64_t *size);
|
||||
|
||||
/*
|
||||
* Amount of physical memory available to a process
|
||||
*/
|
||||
bool
|
||||
os_get_available_system_memory(uint64_t *size);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue