From 0eea43494add09f1ea2ecda0e6892298c9070630 Mon Sep 17 00:00:00 2001 From: William Pitcock Date: Wed, 14 Jun 2017 20:35:53 +0000 Subject: add sysctl() --- Makefile | 1 + libgcompat/sysctl.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 libgcompat/sysctl.c diff --git a/Makefile b/Makefile index b6e497a..e71ad20 100644 --- a/Makefile +++ b/Makefile @@ -11,6 +11,7 @@ LIBGCOMPAT_SRC = \ libgcompat/stdio.c \ libgcompat/stdlib.c \ libgcompat/string.c \ + libgcompat/sysctl.c \ libgcompat/version.c LIBGCOMPAT_OBJ = ${LIBGCOMPAT_SRC:.c=.o} LIBGCOMPAT_SOVERSION = 0 diff --git a/libgcompat/sysctl.c b/libgcompat/sysctl.c new file mode 100644 index 0000000..5671055 --- /dev/null +++ b/libgcompat/sysctl.c @@ -0,0 +1,28 @@ +#include +#include +#include +#include + + +struct __sysctl_args { + int *name; + int nlen; + void *oldval; + size_t *oldlenp; + void *newval; + size_t newlen; +}; + + +int sysctl (int *name, int nlen, void *oldval, size_t *oldlenp, void *newval, size_t newlen) { + struct __sysctl_args args = { + .name = name, + .nlen = nlen, + .oldval = oldval, + .oldlenp = oldlenp, + .newval = newval, + .newlen = newlen + }; + + return syscall(SYS__sysctl, &args); +} -- cgit v1.2.3-60-g2f50