39#include <sys/sysproto.h>
40#include <sys/kernel.h>
45#include <sys/socket.h>
46#include <sys/sysctl.h>
47#include <sys/utsname.h>
49#include <vm/vm_param.h>
54ogethostname(
struct thread *td,
struct ogethostname_args *uap)
57 size_t len = uap->len;
60 name[1] = KERN_HOSTNAME;
66osethostname(
struct thread *td,
struct osethostname_args *uap)
71 name[1] = KERN_HOSTNAME;
76#ifndef _SYS_SYSPROTO_H_
77struct ogethostid_args {
83ogethostid(
struct thread *td,
struct ogethostid_args *uap)
85 size_t len =
sizeof(long);
89 name[1] = KERN_HOSTID;
95osethostid(
struct thread *td,
struct osethostid_args *uap)
100 name[1] = KERN_HOSTID;
102 sizeof(uap->hostid), NULL, 0));
106oquota(
struct thread *td,
struct oquota_args *uap)
112#define KINFO_PROC (0<<8)
113#define KINFO_RT (1<<8)
114#define KINFO_VNODE (2<<8)
115#define KINFO_FILE (3<<8)
116#define KINFO_METER (4<<8)
117#define KINFO_LOADAVG (5<<8)
118#define KINFO_CLOCKRATE (6<<8)
121#define KINFO_BSDI_SYSINFO (101<<8)
152 struct timeval pad16;
166static char bsdi_strings[80];
169ogetkerninfo(
struct thread *td,
struct ogetkerninfo_args *uap)
175 switch (uap->op & 0xff00) {
180 name[3] = (uap->op & 0xff0000) >> 16;
181 name[4] = uap->op & 0xff;
189 name[1] = KERN_VNODE;
197 name[2] = uap->op & 0xff;
219 name[1] = VM_LOADAVG;
224 case KINFO_CLOCKRATE:
226 name[1] = KERN_CLOCKRATE;
231 case KINFO_BSDI_SYSINFO: {
248 bzero((
char *)&bsdi_si,
sizeof(bsdi_si));
249 bzero(bsdi_strings,
sizeof(bsdi_strings));
253 bsdi_si.bsdi_ostype = (s - bsdi_strings) +
sizeof(bsdi_si);
257 bsdi_si.bsdi_osrelease = (s - bsdi_strings) +
sizeof(bsdi_si);
258 strcpy(s, osrelease);
261 bsdi_si.bsdi_machine = (s - bsdi_strings) +
sizeof(bsdi_si);
265 needed =
sizeof(bsdi_si) + (s - bsdi_strings);
267 if ((uap->where == NULL) || (uap->size == NULL)) {
274 if ((error = copyin(uap->size, &size,
sizeof(size))) != 0)
284 if ((error = copyout((
char *)&bsdi_si, uap->where, left)) != 0)
288 if (left >
sizeof(bsdi_si)) {
289 left -=
sizeof(bsdi_si);
290 error = copyout(&bsdi_strings,
291 uap->where +
sizeof(bsdi_si), left);
301 td->td_retval[0] = needed ? needed : size;
303 error = copyout(&size, uap->size,
sizeof(size));
310#ifdef COMPAT_FREEBSD4
317#error "FreeBSD-1.1 uname syscall has been broken"
319#ifndef _SYS_SYSPROTO_H_
321 struct utsname *
name;
326freebsd4_uname(
struct thread *td,
struct freebsd4_uname_args *uap)
333 name[1] = KERN_OSTYPE;
334 len =
sizeof (uap->name->sysname);
339 subyte( uap->name->sysname +
sizeof(uap->name->sysname) - 1, 0);
341 name[1] = KERN_HOSTNAME;
342 len =
sizeof uap->name->nodename;
347 subyte( uap->name->nodename +
sizeof(uap->name->nodename) - 1, 0);
349 name[1] = KERN_OSRELEASE;
350 len =
sizeof uap->name->release;
355 subyte( uap->name->release +
sizeof(uap->name->release) - 1, 0);
370 for(s = version; *s && *s !=
'#'; s++);
372 for(us = uap->name->version; *s && *s !=
':'; s++) {
373 error = subyte( us++, *s);
377 error = subyte( us++, 0);
382 name[1] = HW_MACHINE;
383 len =
sizeof uap->name->machine;
388 subyte( uap->name->machine +
sizeof(uap->name->machine) - 1, 0);
392#ifndef _SYS_SYSPROTO_H_
393struct getdomainname_args {
400freebsd4_getdomainname(
struct thread *td,
401 struct freebsd4_getdomainname_args *uap)
404 size_t len = uap->len;
407 name[1] = KERN_NISDOMAINNAME;
412#ifndef _SYS_SYSPROTO_H_
413struct setdomainname_args {
420freebsd4_setdomainname(
struct thread *td,
421 struct freebsd4_setdomainname_args *uap)
426 name[1] = KERN_NISDOMAINNAME;
int userland_sysctl(struct thread *td, int *name, u_int namelen, void *old, size_t *oldlenp, int inkernel, const void *new, size_t newlen, size_t *retval, int flags)
int kernel_sysctl(struct thread *td, int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen, size_t *retval, int flags)