diff options
author | H. Peter Anvin <hpa@linux.intel.com> | 2010-12-07 16:35:01 -0800 |
---|---|---|
committer | H. Peter Anvin <hpa@linux.intel.com> | 2010-12-07 16:35:01 -0800 |
commit | a6f3691938a78833fc1643a5dd6db66dbef81644 (patch) | |
tree | b0f58b37efe6674660ead4ff0029c5a4b96980cb /utils | |
parent | d6fa7f83ac4e4c6498f6a28e5c90ecc3f2f6aa62 (diff) | |
download | syslinux-a6f3691938a78833fc1643a5dd6db66dbef81644.tar.gz |
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@linux.intel.com>
Diffstat (limited to 'utils')
-rw-r--r-- | utils/memdiskfind.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/utils/memdiskfind.c b/utils/memdiskfind.c index decc788f..815f8bc1 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; |