32 #include <sys/cdefs.h>
35 #include "opt_compat.h"
37 #include <sys/param.h>
38 #include <sys/systm.h>
39 #include <sys/sysproto.h>
40 #include <sys/kernel.h>
44 #include <sys/mutex.h>
45 #include <sys/socket.h>
46 #include <sys/sysctl.h>
47 #include <sys/utsname.h>
49 #include <vm/vm_param.h>
51 #if defined(COMPAT_43)
53 #ifndef _SYS_SYSPROTO_H_
54 struct gethostname_args {
63 struct gethostname_args *uap;
66 size_t len = uap->len;
69 name[1] = KERN_HOSTNAME;
74 #ifndef _SYS_SYSPROTO_H_
75 struct sethostname_args {
84 register struct sethostname_args *uap;
89 name[1] = KERN_HOSTNAME;
94 #ifndef _SYS_SYSPROTO_H_
95 struct ogethostid_args {
103 struct ogethostid_args *uap;
105 size_t len =
sizeof(long);
109 name[1] = KERN_HOSTID;
110 return (
kernel_sysctl(td, name, 2, (
long *)td->td_retval, &len,
116 #ifndef _SYS_SYSPROTO_H_
117 struct osethostid_args {
125 struct osethostid_args *uap;
130 name[1] = KERN_HOSTID;
132 sizeof(uap->hostid), NULL, 0));
138 struct oquota_args *uap;
144 #define KINFO_PROC (0<<8)
145 #define KINFO_RT (1<<8)
146 #define KINFO_VNODE (2<<8)
147 #define KINFO_FILE (3<<8)
148 #define KINFO_METER (4<<8)
149 #define KINFO_LOADAVG (5<<8)
150 #define KINFO_CLOCKRATE (6<<8)
153 #define KINFO_BSDI_SYSINFO (101<<8)
184 struct timeval pad16;
198 static char bsdi_strings[80];
200 #ifndef _SYS_SYSPROTO_H_
201 struct getkerninfo_args {
209 ogetkerninfo(
struct thread *td,
struct getkerninfo_args *uap)
215 switch (uap->op & 0xff00) {
221 name[3] = (uap->op & 0xff0000) >> 16;
222 name[4] = uap->op & 0xff;
230 name[1] = KERN_VNODE;
238 name[2] = uap->op & 0xff;
260 name[1] = VM_LOADAVG;
265 case KINFO_CLOCKRATE:
267 name[1] = KERN_CLOCKRATE;
272 case KINFO_BSDI_SYSINFO: {
289 bzero((
char *)&bsdi_si,
sizeof(bsdi_si));
290 bzero(bsdi_strings,
sizeof(bsdi_strings));
294 bsdi_si.bsdi_ostype = (s - bsdi_strings) +
sizeof(bsdi_si);
298 bsdi_si.bsdi_osrelease = (s - bsdi_strings) +
sizeof(bsdi_si);
299 strcpy(s, osrelease);
302 bsdi_si.bsdi_machine = (s - bsdi_strings) +
sizeof(bsdi_si);
306 needed =
sizeof(bsdi_si) + (s - bsdi_strings);
308 if ((uap->where == NULL) || (uap->size == NULL)) {
315 if ((error = copyin(uap->size, &size,
sizeof(size))) != 0)
325 if ((error = copyout((
char *)&bsdi_si, uap->where, left)) != 0)
329 if (left >
sizeof(bsdi_si)) {
330 left -=
sizeof(bsdi_si);
331 error = copyout(&bsdi_strings,
332 uap->where +
sizeof(bsdi_si), left);
342 td->td_retval[0] = needed ? needed : size;
344 error = copyout(&size, uap->size,
sizeof(size));
351 #ifdef COMPAT_FREEBSD4
358 #error "FreeBSD-1.1 uname syscall has been broken"
360 #ifndef _SYS_SYSPROTO_H_
362 struct utsname *
name;
367 freebsd4_uname(
struct thread *td,
struct freebsd4_uname_args *uap)
374 name[1] = KERN_OSTYPE;
375 len =
sizeof (uap->name->sysname);
380 subyte( uap->name->sysname +
sizeof(uap->name->sysname) - 1, 0);
382 name[1] = KERN_HOSTNAME;
383 len =
sizeof uap->name->nodename;
388 subyte( uap->name->nodename +
sizeof(uap->name->nodename) - 1, 0);
390 name[1] = KERN_OSRELEASE;
391 len =
sizeof uap->name->release;
396 subyte( uap->name->release +
sizeof(uap->name->release) - 1, 0);
411 for(s = version; *s && *s !=
'#'; s++);
413 for(us = uap->name->version; *s && *s !=
':'; s++) {
414 error = subyte( us++, *s);
418 error = subyte( us++, 0);
423 name[1] = HW_MACHINE;
424 len =
sizeof uap->name->machine;
429 subyte( uap->name->machine +
sizeof(uap->name->machine) - 1, 0);
433 #ifndef _SYS_SYSPROTO_H_
434 struct getdomainname_args {
441 freebsd4_getdomainname(
struct thread *td,
442 struct freebsd4_getdomainname_args *uap)
445 size_t len = uap->len;
448 name[1] = KERN_NISDOMAINNAME;
453 #ifndef _SYS_SYSPROTO_H_
454 struct setdomainname_args {
461 freebsd4_setdomainname(
struct thread *td,
462 struct freebsd4_setdomainname_args *uap)
467 name[1] = KERN_NISDOMAINNAME;
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)
int userland_sysctl(struct thread *td, int *name, u_int namelen, void *old, size_t *oldlenp, int inkernel, void *new, size_t newlen, size_t *retval, int flags)