On Sat, 09 Jan 2021 14:39:53 -0800 Greg Steuck <[email protected]> wrote:
> Thanks for the reviews! > > Marcus Glocker <[email protected]> writes: > > > On Sat, 9 Jan 2021 22:09:06 +0100 > > Marcus Glocker <[email protected]> wrote: > > If you could fix the switch() indentation in a separate commit (as > > you already mentioned in one of your previous e-mails), that would > > be nice. > > How's this instead? OK? I saw you already committed, but yes, improves the readability. OK mglocker@ > Tested with the usual diff of before/after sysctl outputs and a random > sysctl -w poke. > > Subject: [PATCH] Split hierarchical calls into kern_sysctl_dirs > > Removed a rash of +/-1 and made both functions shorter and more > focused. --- > sys/kern/kern_sysctl.c | 86 > ++++++++++++++++++++++-------------------- 1 file changed, 45 > insertions(+), 41 deletions(-) > > diff --git sys/kern/kern_sysctl.c sys/kern/kern_sysctl.c > index 7b164d3d32a..383b2a7c074 100644 > --- sys/kern/kern_sysctl.c > +++ sys/kern/kern_sysctl.c > @@ -352,106 +352,110 @@ const struct sysctl_bounded_args kern_vars[] > = { #endif > }; > > -/* > - * kernel related system variables. > - */ > int > -kern_sysctl(int *name, u_int namelen, void *oldp, size_t *oldlenp, > void *newp, > - size_t newlen, struct proc *p) > +kern_sysctl_dirs(int top_name, int *name, u_int namelen, > + void *oldp, size_t *oldlenp, void *newp, size_t newlen, struct > proc *p) { > - int error, level, inthostid, stackgap; > - dev_t dev; > - extern int pool_debug; > - > - /* dispatch the non-terminal nodes first */ > - if (namelen != 1) { > - switch (name[0]) { > + switch (top_name) { > #ifndef SMALL_KERNEL > case KERN_PROC: > - return (sysctl_doproc(name + 1, namelen - 1, oldp, > oldlenp)); > + return (sysctl_doproc(name, namelen, oldp, oldlenp)); > case KERN_PROC_ARGS: > - return (sysctl_proc_args(name + 1, namelen - 1, > oldp, oldlenp, > - p)); > + return (sysctl_proc_args(name, namelen, oldp, > oldlenp, p)); case KERN_PROC_CWD: > - return (sysctl_proc_cwd(name + 1, namelen - 1, oldp, > oldlenp, > - p)); > + return (sysctl_proc_cwd(name, namelen, oldp, > oldlenp, p)); case KERN_PROC_NOBROADCASTKILL: > - return (sysctl_proc_nobroadcastkill(name + 1, > namelen - 1, > + return (sysctl_proc_nobroadcastkill(name, namelen, > newp, newlen, oldp, oldlenp, p)); > case KERN_PROC_VMMAP: > - return (sysctl_proc_vmmap(name + 1, namelen - 1, > oldp, oldlenp, > - p)); > + return (sysctl_proc_vmmap(name, namelen, oldp, > oldlenp, p)); case KERN_FILE: > - return (sysctl_file(name + 1, namelen - 1, oldp, > oldlenp, p)); > + return (sysctl_file(name, namelen, oldp, oldlenp, > p)); #endif > #if defined(GPROF) || defined(DDBPROF) > case KERN_PROF: > - return (sysctl_doprof(name + 1, namelen - 1, oldp, > oldlenp, > + return (sysctl_doprof(name, namelen, oldp, oldlenp, > newp, newlen)); > #endif > case KERN_MALLOCSTATS: > - return (sysctl_malloc(name + 1, namelen - 1, oldp, > oldlenp, > + return (sysctl_malloc(name, namelen, oldp, oldlenp, > newp, newlen, p)); > case KERN_TTY: > - return (sysctl_tty(name + 1, namelen - 1, oldp, > oldlenp, > + return (sysctl_tty(name, namelen, oldp, oldlenp, > newp, newlen)); > case KERN_POOL: > - return (sysctl_dopool(name + 1, namelen - 1, oldp, > oldlenp)); > + return (sysctl_dopool(name, namelen, oldp, oldlenp)); > #if defined(SYSVMSG) || defined(SYSVSEM) || defined(SYSVSHM) > case KERN_SYSVIPC_INFO: > - return (sysctl_sysvipc(name + 1, namelen - 1, oldp, > oldlenp)); > + return (sysctl_sysvipc(name, namelen, oldp, > oldlenp)); #endif > #ifdef SYSVSEM > case KERN_SEMINFO: > - return (sysctl_sysvsem(name + 1, namelen - 1, oldp, > oldlenp, > + return (sysctl_sysvsem(name, namelen, oldp, oldlenp, > newp, newlen)); > #endif > #ifdef SYSVSHM > case KERN_SHMINFO: > - return (sysctl_sysvshm(name + 1, namelen - 1, oldp, > oldlenp, > + return (sysctl_sysvshm(name, namelen, oldp, oldlenp, > newp, newlen)); > #endif > #ifndef SMALL_KERNEL > case KERN_INTRCNT: > - return (sysctl_intrcnt(name + 1, namelen - 1, oldp, > oldlenp)); > + return (sysctl_intrcnt(name, namelen, oldp, > oldlenp)); case KERN_WATCHDOG: > - return (sysctl_wdog(name + 1, namelen - 1, oldp, > oldlenp, > + return (sysctl_wdog(name, namelen, oldp, oldlenp, > newp, newlen)); > #endif > #ifndef SMALL_KERNEL > case KERN_EVCOUNT: > - return (evcount_sysctl(name + 1, namelen - 1, oldp, > oldlenp, > + return (evcount_sysctl(name, namelen, oldp, oldlenp, > newp, newlen)); > #endif > case KERN_TIMECOUNTER: > - return (sysctl_tc(name + 1, namelen - 1, oldp, > oldlenp, > - newp, newlen)); > + return (sysctl_tc(name, namelen, oldp, oldlenp, > newp, newlen)); case KERN_CPTIME2: > - return (sysctl_cptime2(name + 1, namelen -1, oldp, > oldlenp, > + return (sysctl_cptime2(name, namelen, oldp, oldlenp, > newp, newlen)); > #ifdef WITNESS > case KERN_WITNESSWATCH: > return witness_sysctl_watch(oldp, oldlenp, newp, > newlen); case KERN_WITNESS: > - return witness_sysctl(name + 1, namelen - 1, oldp, > oldlenp, > + return witness_sysctl(name, namelen, oldp, oldlenp, > newp, newlen); > #endif > #if NAUDIO > 0 > case KERN_AUDIO: > - return (sysctl_audio(name + 1, namelen - 1, oldp, > oldlenp, > + return (sysctl_audio(name, namelen, oldp, oldlenp, > newp, newlen)); > #endif > #if NVIDEO > 0 > case KERN_VIDEO: > - return (sysctl_video(name + 1, namelen - 1, oldp, > oldlenp, > + return (sysctl_video(name, namelen, oldp, oldlenp, > newp, newlen)); > #endif > case KERN_CPUSTATS: > - return (sysctl_cpustats(name + 1, namelen - 1, oldp, > oldlenp, > + return (sysctl_cpustats(name, namelen, oldp, oldlenp, > newp, newlen)); > - default: > - return (ENOTDIR); /* overloaded */ > - } > + default: > + return (ENOTDIR); /* overloaded */ > + } > +} > + > +/* > + * kernel related system variables. > + */ > +int > +kern_sysctl(int *name, u_int namelen, void *oldp, size_t *oldlenp, > void *newp, > + size_t newlen, struct proc *p) > +{ > + int error, level, inthostid, stackgap; > + dev_t dev; > + extern int pool_debug; > + > + /* dispatch the non-terminal nodes first */ > + if (namelen != 1) { > + return kern_sysctl_dirs(name[0], name + 1, namelen - > 1, > + oldp, oldlenp, newp, newlen, p); > } > > switch (name[0]) {
