[syslinux:master] memdiskfind: abstract get page size so we can compile against klibc
syslinux-bot for H. Peter Anvin
hpa at linux.intel.com
Tue Dec 7 16:39:14 PST 2010
Commit-ID: a6f3691938a78833fc1643a5dd6db66dbef81644
Gitweb: http://syslinux.zytor.com/commit/a6f3691938a78833fc1643a5dd6db66dbef81644
Author: H. Peter Anvin <hpa at linux.intel.com>
AuthorDate: Tue, 7 Dec 2010 16:35:01 -0800
Committer: H. Peter Anvin <hpa at linux.intel.com>
CommitDate: Tue, 7 Dec 2010 16:35:01 -0800
memdiskfind: abstract get page size so we can compile against klibc
klibc doesn't have sysconf(), because it involves a hideously
inefficient multiplex. Thus, if _SC_PAGESIZE is not defined, invoke
getpagesize(). Call the routine get_page_size() so it doesn't
conflict on a platform which has both sysconf(_SC_PAGESIZE) and
getpagesize().
Signed-off-by: H. Peter Anvin <hpa at linux.intel.com>
---
utils/memdiskfind.c | 12 +++++++++++-
1 files changed, 11 insertions(+), 1 deletions(-)
diff --git a/utils/memdiskfind.c b/utils/memdiskfind.c
index decc788..815f8bc 100644
--- a/utils/memdiskfind.c
+++ b/utils/memdiskfind.c
@@ -94,13 +94,23 @@ static size_t memlimit(void)
return maxram;
}
+static inline size_t get_page_size(void)
+{
+#ifdef _SC_PAGESIZE
+ return sysconf(_SC_PAGESIZE);
+#else
+ /* klibc, for one, doesn't have sysconf() due to excessive multiplex */
+ return getpagesize();
+#endif
+}
+
int main(int argc, char *argv[])
{
const char *map;
int memfd;
size_t fbm;
const char *ptr, *end;
- size_t page = sysconf(_SC_PAGESIZE);
+ size_t page = get_page_size();
size_t mapbase, maplen;
int err = 1;
More information about the Syslinux-commits
mailing list