mirror of
https://github.com/opnsense/src.git
synced 2026-06-04 14:26:03 -04:00
getpagesize(3): drop support for non-ELF kernels
AT_PAGESZ was introduced with ELF support in 1996 (commit
e1743d02cd) so we can safely count on
being able to use it to get our page size via elf_aux_info(). As such
we don't need a fallback sysctl query.
Save a few bytes of bss by dropping caching as elf_aux_info() runs
in constant time for a given query.
Reviewed by: kevans, imp, emaste
Sponsored by: DARPA
Differential Revision: https://reviews.freebsd.org/D42708
This commit is contained in:
parent
df65c89375
commit
ea180bb379
1 changed files with 4 additions and 24 deletions
|
|
@ -30,18 +30,11 @@
|
|||
*/
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/sysctl.h>
|
||||
|
||||
#include <errno.h>
|
||||
#include <link.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/auxv.h>
|
||||
|
||||
#include "libc_private.h"
|
||||
|
||||
/*
|
||||
* This is unlikely to change over the running time of any
|
||||
* program, so we cache the result to save some syscalls.
|
||||
*
|
||||
* NB: This function may be called from malloc(3) at initialization
|
||||
* NB: so must not result in a malloc(3) related call!
|
||||
*/
|
||||
|
|
@ -49,23 +42,10 @@
|
|||
int
|
||||
getpagesize(void)
|
||||
{
|
||||
int mib[2];
|
||||
static int value;
|
||||
size_t size;
|
||||
int error;
|
||||
int value;
|
||||
|
||||
if (value != 0)
|
||||
return (value);
|
||||
|
||||
error = _elf_aux_info(AT_PAGESZ, &value, sizeof(value));
|
||||
if (error == 0 && value != 0)
|
||||
return (value);
|
||||
|
||||
mib[0] = CTL_HW;
|
||||
mib[1] = HW_PAGESIZE;
|
||||
size = sizeof value;
|
||||
if (sysctl(mib, nitems(mib), &value, &size, NULL, 0) == -1)
|
||||
return (PAGE_SIZE);
|
||||
if (_elf_aux_info(AT_PAGESZ, &value, sizeof(value)) != 0)
|
||||
value = PAGE_SIZE;
|
||||
|
||||
return (value);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue