diff options
-rw-r--r-- | Makefile | 1 | ||||
-rw-r--r-- | libgcompat/sysctl.c | 28 |
2 files changed, 29 insertions, 0 deletions
@@ -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 <errno.h> +#include <string.h> +#include <unistd.h> +#include <sys/syscall.h> + + +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); +} |