diff options
Diffstat (limited to 'sim/testsuite/cris/c/sysctl1.c')
-rw-r--r-- | sim/testsuite/cris/c/sysctl1.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/sim/testsuite/cris/c/sysctl1.c b/sim/testsuite/cris/c/sysctl1.c new file mode 100644 index 0000000..6646fac --- /dev/null +++ b/sim/testsuite/cris/c/sysctl1.c @@ -0,0 +1,38 @@ +/* +#notarget: cris*-*-elf +*/ + +#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); +} |