[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