diff --git a/lib/libc/gen/getpagesizes.c b/lib/libc/gen/getpagesizes.c --- a/lib/libc/gen/getpagesizes.c +++ b/lib/libc/gen/getpagesizes.c @@ -27,11 +27,8 @@ */ #include -#include -#include - -#include -#include +#include +#include #include "libc_private.h" @@ -52,24 +49,18 @@ { static u_long ps[MAXPAGESIZES]; static int nops; - size_t size; - int error, i; + int i; if (nelem < 0 || (nelem > 0 && pagesize == NULL)) { errno = EINVAL; return (-1); } - /* Cache the result of the sysctl(2). */ + /* Cache the result */ if (nops == 0) { - error = _elf_aux_info(AT_PAGESIZES, ps, sizeof(ps)); - size = sizeof(ps); - if (error != 0 || ps[0] == 0) { - if (sysctlbyname("hw.pagesizes", ps, &size, NULL, 0) - == -1) - return (-1); - } + if (_elf_aux_info(AT_PAGESIZES, ps, sizeof(ps)) != 0) + ps[0] = PAGE_SIZE; /* Count the number of page sizes that are supported. */ - nops = size / sizeof(ps[0]); + nops = nitems(ps); while (nops > 0 && ps[nops - 1] == 0) nops--; }