39 lines
687 B
C
39 lines
687 B
C
|
/*
|
||
|
#progos: linux
|
||
|
*/
|
||
|
|
||
|
#include <unistd.h>
|
||
|
#include <sys/syscall.h>
|
||
|
#include <stdio.h>
|
||
|
#include <stdlib.h>
|
||
|
#include <errno.h>
|
||
|
|
||
|
/* I can't seem to include the right things, so we do it brute force. */
|
||
|
int main (void)
|
||
|
{
|
||
|
static int sysctl_args[] = { 1, 4 };
|
||
|
size_t x = 8;
|
||
|
|
||
|
struct __sysctl_args {
|
||
|
int *name;
|
||
|
int nlen;
|
||
|
void *oldval;
|
||
|
size_t *oldlenp;
|
||
|
void *newval;
|
||
|
size_t newlen;
|
||
|
unsigned long __unused[4];
|
||
|
} scargs
|
||
|
=
|
||
|
{
|
||
|
sysctl_args,
|
||
|
sizeof (sysctl_args) / sizeof (sysctl_args[0]),
|
||
|
(void *) -1, &x, NULL, 0
|
||
|
};
|
||
|
|
||
|
if (syscall (SYS__sysctl, &scargs) != -1
|
||
|
|| errno != EFAULT)
|
||
|
abort ();
|
||
|
printf ("pass\n");
|
||
|
exit (0);
|
||
|
}
|