diff options
Diffstat (limited to 'meta/recipes-core/systemd/systemd/uclibc-get-physmem.patch')
-rw-r--r-- | meta/recipes-core/systemd/systemd/uclibc-get-physmem.patch | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/meta/recipes-core/systemd/systemd/uclibc-get-physmem.patch b/meta/recipes-core/systemd/systemd/uclibc-get-physmem.patch new file mode 100644 index 0000000000..39dfc9e2ea --- /dev/null +++ b/meta/recipes-core/systemd/systemd/uclibc-get-physmem.patch | |||
@@ -0,0 +1,37 @@ | |||
1 | bypass unimplemented _SC_PHYS_PAGES system configuration API in uclibc | ||
2 | |||
3 | Upstream-Status: Inappropriate [uclibc-specific] | ||
4 | |||
5 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
6 | |||
7 | Index: git/src/shared/util.c | ||
8 | =================================================================== | ||
9 | --- git.orig/src/shared/util.c 2014-03-15 18:09:34.796358146 -0700 | ||
10 | +++ git/src/shared/util.c 2014-03-15 20:16:33.836501084 -0700 | ||
11 | @@ -6332,11 +6332,24 @@ | ||
12 | |||
13 | /* We return this as uint64_t in case we are running as 32bit | ||
14 | * process on a 64bit kernel with huge amounts of memory */ | ||
15 | - | ||
16 | +#ifdef __UCLIBC__ | ||
17 | + char line[128]; | ||
18 | + FILE *f = fopen("/proc/meminfo", "r"); | ||
19 | + if (f == NULL) | ||
20 | + return 0; | ||
21 | + while (!feof(f) && fgets(line, sizeof(line)-1, f)) { | ||
22 | + if (sscanf(line, "MemTotal: %l kB", &mem) == 1) { | ||
23 | + mem *= 1024; | ||
24 | + break; | ||
25 | + } | ||
26 | + } | ||
27 | + fclose(f); | ||
28 | + return (uint64_t) mem; | ||
29 | +#else | ||
30 | mem = sysconf(_SC_PHYS_PAGES); | ||
31 | assert(mem > 0); | ||
32 | - | ||
33 | return (uint64_t) mem * (uint64_t) page_size(); | ||
34 | +#endif | ||
35 | } | ||
36 | |||
37 | char* mount_test_option(const char *haystack, const char *needle) { | ||