Vitaliy Makkoveev <[email protected]> writes:
> On Thu, Apr 29, 2021 at 09:31:57AM -0700, Greg Steuck wrote:
>> Alexander Bluhm <[email protected]> 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 <[email protected]>
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