diff options
Diffstat (limited to 'sys/compat/linux/linux_sysctl.c')
-rw-r--r-- | sys/compat/linux/linux_sysctl.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/sys/compat/linux/linux_sysctl.c b/sys/compat/linux/linux_sysctl.c index 86a8758..699b5d6 100644 --- a/sys/compat/linux/linux_sysctl.c +++ b/sys/compat/linux/linux_sysctl.c @@ -35,10 +35,13 @@ #include <sys/proc.h> #include <sys/sysctl.h> #include <sys/systm.h> +#include <sys/sbuf.h> #include <machine/../linux/linux.h> #include <machine/../linux/linux_proto.h> +#include <compat/linux/linux_util.h> + #define LINUX_CTL_KERN 1 #define LINUX_CTL_VM 2 #define LINUX_CTL_NET 3 @@ -78,6 +81,7 @@ int linux_sysctl(struct thread *td, struct linux_sysctl_args *args) { struct l___sysctl_args la; + struct sbuf *sb; l_int *mib; int error, i; @@ -113,10 +117,18 @@ linux_sysctl(struct thread *td, struct linux_sysctl_args *args) break; } - printf("linux: sysctl: unhandled name="); - for (i = 0; i < la.nlen; i++) - printf("%c%d", (i) ? ',' : '{', mib[i]); - printf("}\n"); + sb = sbuf_new(NULL, NULL, 20 + la.nlen * 5, SBUF_AUTOEXTEND); + if (sb == NULL) { + linux_msg(td, "sysctl is not implemented"); + } else { + sbuf_printf(sb, "sysctl "); + for (i = 0; i < la.nlen; i++) + sbuf_printf(sb, "%c%d", (i) ? ',' : '{', mib[i]); + sbuf_printf(sb, "} is not implemented"); + sbuf_finish(sb); + linux_msg(td, "%s", sbuf_data(sb)); + sbuf_delete(sb); + } free(mib, M_TEMP); return (ENOTDIR); |