add getauxval function

in a sense this implementation is incomplete since it doesn't provide
the HWCAP_* macros for use with AT_HWCAP, which is perhaps the most
important intended usage case for getauxval. they will be added at a
later time.
This commit is contained in:
Rich Felker 2014-04-07 02:46:15 -04:00
parent 89740868c9
commit 21ada94c4b
2 changed files with 28 additions and 0 deletions

16
include/sys/auxv.h Normal file
View File

@ -0,0 +1,16 @@
#ifndef _SYS_AUXV_H
#define _SYS_AUXV_H
#ifdef __cplusplus
extern "C" {
#endif
#include <elf.h>
unsigned long getauxval(unsigned long);
#ifdef __cplusplus
}
#endif
#endif

12
src/misc/getauxval.c Normal file
View File

@ -0,0 +1,12 @@
#include <sys/auxv.h>
#include <errno.h>
#include "libc.h"
unsigned long getauxval(unsigned long item)
{
size_t *auxv = libc.auxv;
for (; *auxv; auxv+=2)
if (*auxv==item) return auxv[1];
errno = ENOENT;
return 0;
}