sync with OpenBSD -current
This commit is contained in:
parent
04f8de21b3
commit
174ac28011
16 changed files with 313 additions and 118 deletions
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: kern_sysctl.c,v 1.430 2024/08/02 14:34:45 mvs Exp $ */
|
||||
/* $OpenBSD: kern_sysctl.c,v 1.433 2024/08/05 18:47:29 mvs Exp $ */
|
||||
/* $NetBSD: kern_sysctl.c,v 1.17 1996/05/20 17:49:05 mrg Exp $ */
|
||||
|
||||
/*-
|
||||
|
@ -172,26 +172,25 @@ sysctl_vslock(void *addr, size_t len)
|
|||
{
|
||||
int error;
|
||||
|
||||
KERNEL_LOCK();
|
||||
error = rw_enter(&sysctl_lock, RW_WRITE|RW_INTR);
|
||||
if (error)
|
||||
goto out;
|
||||
return (error);
|
||||
KERNEL_LOCK();
|
||||
|
||||
if (addr) {
|
||||
if (atop(len) > uvmexp.wiredmax - uvmexp.wired) {
|
||||
error = ENOMEM;
|
||||
goto out2;
|
||||
goto out;
|
||||
}
|
||||
error = uvm_vslock(curproc, addr, len, PROT_READ | PROT_WRITE);
|
||||
if (error)
|
||||
goto out2;
|
||||
goto out;
|
||||
}
|
||||
|
||||
return (0);
|
||||
out2:
|
||||
rw_exit_write(&sysctl_lock);
|
||||
out:
|
||||
KERNEL_UNLOCK();
|
||||
rw_exit_write(&sysctl_lock);
|
||||
return (error);
|
||||
}
|
||||
|
||||
|
@ -202,8 +201,8 @@ sysctl_vsunlock(void *addr, size_t len)
|
|||
|
||||
if (addr)
|
||||
uvm_vsunlock(curproc, addr, len);
|
||||
rw_exit_write(&sysctl_lock);
|
||||
KERNEL_UNLOCK();
|
||||
rw_exit_write(&sysctl_lock);
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -508,6 +507,12 @@ kern_sysctl(int *name, u_int namelen, void *oldp, size_t *oldlenp, void *newp,
|
|||
return (sysctl_rdstring(oldp, oldlenp, newp, version));
|
||||
case KERN_NUMVNODES: /* XXX numvnodes is a long */
|
||||
return (sysctl_rdint(oldp, oldlenp, newp, numvnodes));
|
||||
case KERN_BOOTTIME: {
|
||||
struct timeval bt;
|
||||
memset(&bt, 0, sizeof bt);
|
||||
microboottime(&bt);
|
||||
return (sysctl_rdstruct(oldp, oldlenp, newp, &bt, sizeof bt));
|
||||
}
|
||||
case KERN_MBSTAT: {
|
||||
extern struct cpumem *mbstat;
|
||||
uint64_t counters[MBSTAT_COUNT];
|
||||
|
@ -526,6 +531,30 @@ kern_sysctl(int *name, u_int namelen, void *oldp, size_t *oldlenp, void *newp,
|
|||
return (sysctl_rdstruct(oldp, oldlenp, newp,
|
||||
&mbs, sizeof(mbs)));
|
||||
}
|
||||
case KERN_OSREV:
|
||||
case KERN_NFILES:
|
||||
case KERN_TTYCOUNT:
|
||||
case KERN_ARGMAX:
|
||||
case KERN_POSIX1:
|
||||
case KERN_NGROUPS:
|
||||
case KERN_JOB_CONTROL:
|
||||
case KERN_SAVED_IDS:
|
||||
case KERN_MAXPARTITIONS:
|
||||
case KERN_RAWPARTITION:
|
||||
case KERN_NTHREADS:
|
||||
case KERN_SOMAXCONN:
|
||||
case KERN_SOMINCONN:
|
||||
case KERN_FSYNC:
|
||||
case KERN_SYSVMSG:
|
||||
case KERN_SYSVSEM:
|
||||
case KERN_SYSVSHM:
|
||||
case KERN_FSCALE:
|
||||
case KERN_CCPU:
|
||||
case KERN_NPROCS:
|
||||
case KERN_NETLIVELOCKS:
|
||||
case KERN_AUTOCONF_SERIAL:
|
||||
return (sysctl_bounded_arr(kern_vars, nitems(kern_vars), name,
|
||||
namelen, oldp, oldlenp, newp, newlen));
|
||||
}
|
||||
|
||||
savelen = *oldlenp;
|
||||
|
@ -587,12 +616,6 @@ kern_sysctl_locked(int *name, u_int namelen, void *oldp, size_t *oldlenp,
|
|||
return (error);
|
||||
case KERN_CLOCKRATE:
|
||||
return (sysctl_clockrate(oldp, oldlenp, newp));
|
||||
case KERN_BOOTTIME: {
|
||||
struct timeval bt;
|
||||
memset(&bt, 0, sizeof bt);
|
||||
microboottime(&bt);
|
||||
return (sysctl_rdstruct(oldp, oldlenp, newp, &bt, sizeof bt));
|
||||
}
|
||||
case KERN_MSGBUFSIZE:
|
||||
case KERN_CONSBUFSIZE: {
|
||||
struct msgbuf *mp;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue