blob: 75f9236d0f7b8a1a335429655abf1b9a093135ff (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
/*
* _sysctl() for uClibc
*
* Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
*
* Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
*/
#include <sys/syscall.h>
#if defined __NR__sysctl && (defined __USE_GNU || defined __USE_BSD)
/* psm: including sys/sysctl.h would depend on kernel headers */
struct __sysctl_args {
int *name;
int nlen;
void *oldval;
size_t *oldlenp;
void *newval;
size_t newlen;
unsigned long __unused[4];
};
extern int sysctl (int *__name, int __nlen, void *__oldval,
size_t *__oldlenp, void *__newval, size_t __newlen) __THROW;
int sysctl(int *name, int nlen, void *oldval, size_t * oldlenp,
void *newval, size_t newlen)
{
/* avoid initializing on the stack as gcc will call memset() */
struct __sysctl_args args;
args.name = name;
args.nlen = nlen;
args.oldval = oldval;
args.oldlenp = oldlenp;
args.newval = newval;
args.newlen = newlen;
return INLINE_SYSCALL(_sysctl, 1, &args);
}
#endif
|