aboutsummaryrefslogtreecommitdiffstats
path: root/main/libvirt/uclibc-physmem.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/libvirt/uclibc-physmem.patch')
-rw-r--r--main/libvirt/uclibc-physmem.patch33
1 files changed, 33 insertions, 0 deletions
diff --git a/main/libvirt/uclibc-physmem.patch b/main/libvirt/uclibc-physmem.patch
new file mode 100644
index 0000000000..73de5ac4ec
--- /dev/null
+++ b/main/libvirt/uclibc-physmem.patch
@@ -0,0 +1,33 @@
+--- ./gnulib/lib/physmem.c.orig
++++ ./gnulib/lib/physmem.c
+@@ -23,6 +23,7 @@
+ #include "physmem.h"
+
+ #include <unistd.h>
++#include <stdio.h>
+
+ #if HAVE_SYS_PSTAT_H
+ # include <sys/pstat.h>
+@@ -81,6 +82,22 @@
+ double
+ physmem_total (void)
+ {
++#if defined(__UCLIBC__)
++ char line[128];
++ FILE *f = fopen("/proc/meminfo", "r");
++ long double result = -1;
++ if (f == NULL)
++ return 0;
++ while (!feof(f) && fgets(line, sizeof(line)-1, f)) {
++ if (sscanf(line, "MemTotal: %Lf kB", &result) == 1) {
++ result *= 1024;
++ break;
++ }
++ }
++ fclose(f);
++ return result;
++#endif
++
+ #if defined _SC_PHYS_PAGES && defined _SC_PAGESIZE
+ { /* This works on linux-gnu, solaris2 and cygwin. */
+ double pages = sysconf (_SC_PHYS_PAGES);