Skip to content

Commit

Permalink
getpagesizes(3): drop support for kernels before 9.0
Browse files Browse the repository at this point in the history
AT_PAGESIZES and elf_aux_info where added prior to FreeBSD 9.0 in commit
ee235be.  It's safe to say that a
FreeBSD 15 libc won't work on a 8.x kernel so drop sysctl fallback.

Reviewed by:	kevans, imp, emaste
Sponsored by:	DARPA
Differential Revision:	https://reviews.freebsd.org/D42707
  • Loading branch information
brooksdavis committed Nov 28, 2023
1 parent 9f20787 commit df65c89
Showing 1 changed file with 7 additions and 16 deletions.
23 changes: 7 additions & 16 deletions lib/libc/gen/getpagesizes.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,8 @@
*/

#include <sys/param.h>
#include <sys/mman.h>
#include <sys/sysctl.h>

#include <errno.h>
#include <link.h>
#include <sys/auxv.h>
#include <sys/errno.h>

#include "libc_private.h"

Expand All @@ -52,24 +49,18 @@ getpagesizes(size_t pagesize[], int nelem)
{
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--;
}
Expand Down

0 comments on commit df65c89

Please sign in to comment.