mirror of
https://github.com/opnsense/src.git
synced 2026-06-04 22:32:43 -04:00
getpagesizes(3): drop support for kernels before 9.0
AT_PAGESIZES and elf_aux_info where added prior to FreeBSD 9.0 in commit
ee235befcb. 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
This commit is contained in:
parent
9f20787fe8
commit
df65c89375
1 changed files with 7 additions and 16 deletions
|
|
@ -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"
|
||||
|
||||
|
|
@ -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--;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue