Vitaliy Makkoveev <m...@openbsd.org> writes:

> On Thu, Apr 29, 2021 at 09:31:57AM -0700, Greg Steuck wrote:
>> Alexander Bluhm <alexander.bl...@gmx.net> writes:
>> >> I like this too. I somehow got the impression that macros are severely
>> >> frowned upon and didn't offer this kind of interface before.
>> >> 
>> >> If you get this submitted, I can do a pass through the codebase to be
>> >> sure we catch them all.
>> 
>> Vitaliy, I volunteer to do a separate pass, no reason to gate this clear
>> improvement.

See below. I tested the diff on amd64, i386 seems trivially correct, but
if somebody feels like testing (or asking me to spin up a VM), we can do
it.

>> > diff -u -p -r1.214 sysctl.h
>> > --- sys/sysctl.h   10 Mar 2021 10:21:47 -0000      1.214
>> > +++ sys/sysctl.h   28 Apr 2021 10:04:02 -0000
>> > @@ -1000,6 +1000,9 @@ struct sysctl_bounded_args {
>> >    int maximum; /* read-only variable if minimum > maximum */
>> >  };
>> >  
>> > +#define SYSCTL_INT_UNBOUNDED      0,0
>> 
>> Unused, maybe introduce a single usage as an example?
>> 
>
> Or introduce this with the separate diff which will convert all related
> structures?

I failed to find a case where to use SYSCTL_INT_UNBOUNDED. We always
find better "common sense" limits than completely unconstrained.

>From 691cf8f4635f22593fe8319055da7aa340a8164b Mon Sep 17 00:00:00 2001
From: Greg Steuck <g...@lenny.nest.cx>
Date: Fri, 30 Apr 2021 21:54:39 -0700
Subject: [PATCH] Update the remaining SYSCTL_INT_READONLY cases

---
 sys/arch/amd64/amd64/machdep.c |  8 +++----
 sys/arch/i386/i386/machdep.c   | 10 ++++----
 sys/kern/kern_sysctl.c         | 44 +++++++++++++++++-----------------
 sys/miscfs/fuse/fuse_vfsops.c  |  8 +++----
 sys/ufs/ffs/ffs_vfsops.c       | 22 ++++++++---------
 5 files changed, 46 insertions(+), 46 deletions(-)

diff --git a/sys/arch/amd64/amd64/machdep.c b/sys/arch/amd64/amd64/machdep.c
index 40f68fde765..8c0c456da45 100644
--- a/sys/arch/amd64/amd64/machdep.c
+++ b/sys/arch/amd64/amd64/machdep.c
@@ -475,10 +475,10 @@ extern int amd64_has_xcrypt;
 const struct sysctl_bounded_args cpuctl_vars[] = {
        { CPU_LIDACTION, &lid_action, 0, 2 },
        { CPU_PWRACTION, &pwr_action, 0, 2 },
-       { CPU_CPUID, &cpu_id, 1, 0 },
-       { CPU_CPUFEATURE, &cpu_feature, 1, 0 },
-       { CPU_XCRYPT, &amd64_has_xcrypt, 1, 0 },
-       { CPU_INVARIANTTSC, &tsc_is_invariant, 1, 0 },
+       { CPU_CPUID, &cpu_id, SYSCTL_INT_READONLY },
+       { CPU_CPUFEATURE, &cpu_feature, SYSCTL_INT_READONLY },
+       { CPU_XCRYPT, &amd64_has_xcrypt, SYSCTL_INT_READONLY },
+       { CPU_INVARIANTTSC, &tsc_is_invariant, SYSCTL_INT_READONLY },
 };
 
 /*
diff --git a/sys/arch/i386/i386/machdep.c b/sys/arch/i386/i386/machdep.c
index 87c5a0ed6a6..a8a45719ff6 100644
--- a/sys/arch/i386/i386/machdep.c
+++ b/sys/arch/i386/i386/machdep.c
@@ -3560,11 +3560,11 @@ idt_vec_free(int vec)
 
 const struct sysctl_bounded_args cpuctl_vars[] = {
        { CPU_LIDACTION, &lid_action, 0, 2 },
-       { CPU_CPUID, &cpu_id, 1, 0 },
-       { CPU_OSFXSR, &i386_use_fxsave, 1, 0 },
-       { CPU_SSE, &i386_has_sse, 1, 0 },
-       { CPU_SSE2, &i386_has_sse2, 1, 0 },
-       { CPU_XCRYPT, &i386_has_xcrypt, 1, 0 },
+       { CPU_CPUID, &cpu_id, SYSCTL_INT_READONLY },
+       { CPU_OSFXSR, &i386_use_fxsave, SYSCTL_INT_READONLY },
+       { CPU_SSE, &i386_has_sse, SYSCTL_INT_READONLY },
+       { CPU_SSE2, &i386_has_sse2, SYSCTL_INT_READONLY },
+       { CPU_XCRYPT, &i386_has_xcrypt, SYSCTL_INT_READONLY },
 };
 
 /*
diff --git a/sys/kern/kern_sysctl.c b/sys/kern/kern_sysctl.c
index 2a41db49833..45cd6471247 100644
--- a/sys/kern/kern_sysctl.c
+++ b/sys/kern/kern_sysctl.c
@@ -292,26 +292,26 @@ extern int uvm_wxabort;
 extern int global_ptrace;
 
 const struct sysctl_bounded_args kern_vars[] = {
-       {KERN_OSREV, &openbsd, 1, 0},
+       {KERN_OSREV, &openbsd, SYSCTL_INT_READONLY},
        {KERN_MAXVNODES, &maxvnodes, 0, INT_MAX},
        {KERN_MAXPROC, &maxprocess, 0, INT_MAX},
        {KERN_MAXFILES, &maxfiles, 0, INT_MAX},
-       {KERN_NFILES, &numfiles, 1, 0},
-       {KERN_TTYCOUNT, &tty_count, 1, 0},
-       {KERN_ARGMAX, &arg_max, 1, 0},
-       {KERN_NSELCOLL, &nselcoll, 1, 0},
-       {KERN_POSIX1, &posix_version, 1, 0},
-       {KERN_NGROUPS, &ngroups_max, 1, 0},
-       {KERN_JOB_CONTROL, &int_one, 1, 0},
-       {KERN_SAVED_IDS, &int_one, 1, 0},
-       {KERN_MAXPARTITIONS, &maxpartitions, 1, 0},
-       {KERN_RAWPARTITION, &raw_part, 1, 0},
+       {KERN_NFILES, &numfiles, SYSCTL_INT_READONLY},
+       {KERN_TTYCOUNT, &tty_count, SYSCTL_INT_READONLY},
+       {KERN_ARGMAX, &arg_max, SYSCTL_INT_READONLY},
+       {KERN_NSELCOLL, &nselcoll, SYSCTL_INT_READONLY},
+       {KERN_POSIX1, &posix_version, SYSCTL_INT_READONLY},
+       {KERN_NGROUPS, &ngroups_max, SYSCTL_INT_READONLY},
+       {KERN_JOB_CONTROL, &int_one, SYSCTL_INT_READONLY},
+       {KERN_SAVED_IDS, &int_one, SYSCTL_INT_READONLY},
+       {KERN_MAXPARTITIONS, &maxpartitions, SYSCTL_INT_READONLY},
+       {KERN_RAWPARTITION, &raw_part, SYSCTL_INT_READONLY},
        {KERN_MAXTHREAD, &maxthread, 0, INT_MAX},
-       {KERN_NTHREADS, &nthreads, 1, 0},
+       {KERN_NTHREADS, &nthreads, SYSCTL_INT_READONLY},
        {KERN_SOMAXCONN, &somaxconn, 0, SHRT_MAX},
        {KERN_SOMINCONN, &sominconn, 0, SHRT_MAX},
        {KERN_NOSUIDCOREDUMP, &nosuidcoredump, 0, 3},
-       {KERN_FSYNC, &int_one, 1, 0},
+       {KERN_FSYNC, &int_one, SYSCTL_INT_READONLY},
        {KERN_SYSVMSG,
 #ifdef SYSVMSG
         &int_one,
@@ -333,13 +333,13 @@ const struct sysctl_bounded_args kern_vars[] = {
         &int_zero,
 #endif
         1, 0},
-       {KERN_FSCALE, &fscale, 1, 0},
-       {KERN_CCPU, &ccpu, 1, 0},
-       {KERN_NPROCS, &nprocesses, 1, 0},
+       {KERN_FSCALE, &fscale, SYSCTL_INT_READONLY},
+       {KERN_CCPU, &ccpu, SYSCTL_INT_READONLY},
+       {KERN_NPROCS, &nprocesses, SYSCTL_INT_READONLY},
        {KERN_SPLASSERT, &splassert_ctl, 0, 3},
        {KERN_MAXLOCKSPERUID, &maxlocksperuid, 0, INT_MAX},
        {KERN_WXABORT, &uvm_wxabort, 0, 1},
-       {KERN_NETLIVELOCKS, &int_zero, 1, 0},
+       {KERN_NETLIVELOCKS, &int_zero, SYSCTL_INT_READONLY},
 #ifdef PTRACE
        {KERN_GLOBAL_PTRACE, &global_ptrace, 0, 1},
 #endif
@@ -660,11 +660,11 @@ static int byte_order = BYTE_ORDER;
 static int page_size = PAGE_SIZE;
 
 const struct sysctl_bounded_args hw_vars[] = {
-       {HW_NCPU, &ncpus, 1, 0},
-       {HW_NCPUFOUND, &ncpusfound, 1, 0},
-       {HW_BYTEORDER, &byte_order, 1, 0},
-       {HW_PAGESIZE, &page_size, 1, 0},
-       {HW_DISKCOUNT, &disk_count, 1, 0},
+       {HW_NCPU, &ncpus, SYSCTL_INT_READONLY},
+       {HW_NCPUFOUND, &ncpusfound, SYSCTL_INT_READONLY},
+       {HW_BYTEORDER, &byte_order, SYSCTL_INT_READONLY},
+       {HW_PAGESIZE, &page_size, SYSCTL_INT_READONLY},
+       {HW_DISKCOUNT, &disk_count, SYSCTL_INT_READONLY},
 };
 
 int
diff --git a/sys/miscfs/fuse/fuse_vfsops.c b/sys/miscfs/fuse/fuse_vfsops.c
index 3e2af8960af..97f08d6fe10 100644
--- a/sys/miscfs/fuse/fuse_vfsops.c
+++ b/sys/miscfs/fuse/fuse_vfsops.c
@@ -356,10 +356,10 @@ fusefs_init(struct vfsconf *vfc)
 extern int stat_fbufs_in, stat_fbufs_wait, stat_opened_fusedev;
 
 const struct sysctl_bounded_args fusefs_vars[] = {
-       { FUSEFS_OPENDEVS, &stat_opened_fusedev, 1, 0 },
-       { FUSEFS_INFBUFS, &stat_fbufs_in, 1, 0 },
-       { FUSEFS_WAITFBUFS, &stat_fbufs_wait, 1, 0 },
-       { FUSEFS_POOL_NBPAGES, &fusefs_fbuf_pool.pr_npages, 1, 0 },
+       { FUSEFS_OPENDEVS, &stat_opened_fusedev, SYSCTL_INT_READONLY },
+       { FUSEFS_INFBUFS, &stat_fbufs_in, SYSCTL_INT_READONLY },
+       { FUSEFS_WAITFBUFS, &stat_fbufs_wait, SYSCTL_INT_READONLY },
+       { FUSEFS_POOL_NBPAGES, &fusefs_fbuf_pool.pr_npages, SYSCTL_INT_READONLY 
},
 };
 
 int
diff --git a/sys/ufs/ffs/ffs_vfsops.c b/sys/ufs/ffs/ffs_vfsops.c
index bd488ef4773..69cabec2e98 100644
--- a/sys/ufs/ffs/ffs_vfsops.c
+++ b/sys/ufs/ffs/ffs_vfsops.c
@@ -1578,21 +1578,21 @@ const struct sysctl_bounded_args ffs_vars[] = {
 #ifdef FFS_SOFTUPDATES
        { FFS_MAX_SOFTDEPS, &max_softdeps, 0, INT_MAX },
        { FFS_SD_TICKDELAY, &tickdelay, 2, INT_MAX },
-       { FFS_SD_WORKLIST_PUSH, &stat_worklist_push, 1, 0 }, /* read-only */
-       { FFS_SD_BLK_LIMIT_PUSH, &stat_blk_limit_push, 1, 0 },
-       { FFS_SD_INO_LIMIT_PUSH, &stat_ino_limit_push, 1, 0 },
-       { FFS_SD_BLK_LIMIT_HIT, &stat_blk_limit_hit, 1, 0 },
-       { FFS_SD_INO_LIMIT_HIT, &stat_ino_limit_hit, 1, 0 },
-       { FFS_SD_SYNC_LIMIT_HIT, &stat_sync_limit_hit, 1, 0 },
-       { FFS_SD_INDIR_BLK_PTRS, &stat_indir_blk_ptrs, 1, 0 },
-       { FFS_SD_INODE_BITMAP, &stat_inode_bitmap, 1, 0 },
-       { FFS_SD_DIRECT_BLK_PTRS, &stat_direct_blk_ptrs, 1, 0 },
-       { FFS_SD_DIR_ENTRY, &stat_dir_entry, 1, 0 },
+       { FFS_SD_WORKLIST_PUSH, &stat_worklist_push, SYSCTL_INT_READONLY },
+       { FFS_SD_BLK_LIMIT_PUSH, &stat_blk_limit_push, SYSCTL_INT_READONLY },
+       { FFS_SD_INO_LIMIT_PUSH, &stat_ino_limit_push, SYSCTL_INT_READONLY },
+       { FFS_SD_BLK_LIMIT_HIT, &stat_blk_limit_hit, SYSCTL_INT_READONLY },
+       { FFS_SD_INO_LIMIT_HIT, &stat_ino_limit_hit, SYSCTL_INT_READONLY },
+       { FFS_SD_SYNC_LIMIT_HIT, &stat_sync_limit_hit, SYSCTL_INT_READONLY },
+       { FFS_SD_INDIR_BLK_PTRS, &stat_indir_blk_ptrs, SYSCTL_INT_READONLY },
+       { FFS_SD_INODE_BITMAP, &stat_inode_bitmap, SYSCTL_INT_READONLY },
+       { FFS_SD_DIRECT_BLK_PTRS, &stat_direct_blk_ptrs, SYSCTL_INT_READONLY },
+       { FFS_SD_DIR_ENTRY, &stat_dir_entry, SYSCTL_INT_READONLY },
 #endif
 #ifdef UFS_DIRHASH
        { FFS_DIRHASH_DIRSIZE, &ufs_mindirhashsize, 0, INT_MAX },
        { FFS_DIRHASH_MAXMEM, &ufs_dirhashmaxmem, 0, INT_MAX },
-       { FFS_DIRHASH_MEM, &ufs_dirhashmem, 1, 0 },
+       { FFS_DIRHASH_MEM, &ufs_dirhashmem, SYSCTL_INT_READONLY },
 #endif
 };
 
-- 
2.31.1

Reply via email to