From owner-freebsd-bugs Wed Jul 5 17:20:14 2000 Delivered-To: freebsd-bugs@freebsd.org Received: from freefall.freebsd.org (freefall.FreeBSD.ORG [204.216.27.21]) by hub.freebsd.org (Postfix) with ESMTP id EF93837BA74 for ; Wed, 5 Jul 2000 17:20:00 -0700 (PDT) (envelope-from gnats@FreeBSD.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.9.3/8.9.2) id RAA06494; Wed, 5 Jul 2000 17:20:00 -0700 (PDT) (envelope-from gnats@FreeBSD.org) Received: from teapot.egroups.net (teapot.egroups.net [63.204.207.250]) by hub.freebsd.org (Postfix) with SMTP id 58F8337C041 for ; Wed, 5 Jul 2000 17:11:37 -0700 (PDT) (envelope-from kbyanc@teapot.egroups.com) Received: (qmail 24380 invoked from network); 6 Jul 2000 00:11:36 -0000 Received: (QMFILT: 1.0); 06 Jul 2000 01:11:36 -0000 Received: from dhcp147.corp.onelist.com (HELO kbyanc.corp.ONElist.com) (192.168.10.147) by teapot.egroups.net with SMTP; 6 Jul 2000 00:11:35 -0000 Received: (from kbyanc@localhost) by kbyanc.corp.ONElist.com (8.9.3/8.9.3) id RAA83029; Wed, 5 Jul 2000 17:11:35 -0700 (PDT) (envelope-from kbyanc@teapot.egroups.com) Message-Id: <200007060011.RAA83029@kbyanc.corp.ONElist.com> Date: Wed, 5 Jul 2000 17:11:35 -0700 (PDT) From: kbyanc@posi.net Reply-To: kbyanc@posi.net To: FreeBSD-gnats-submit@freebsd.org X-Send-Pr-Version: 3.2 Subject: kern/19720: more sysctl signed-ness patches Sender: owner-freebsd-bugs@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org >Number: 19720 >Category: kern >Synopsis: more sysctl signed-ness patches >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Wed Jul 05 17:20:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: Kelly Yancey >Release: FreeBSD 4.0-STABLE i386 >Organization: >Environment: FreeBSD backroom.corp.ONElist.com 5.0-CURRENT FreeBSD 5.0-CURRENT #5: Wed Jul 5 16:37:47 PDT 2000 root@backroom.corp.ONElist.com:/usr/src/sys/compile/BACKROOM i386 >Description: Now that John has so graciously committed my unsigned sysctl patches, here is a wave of patches to make more oids utilitize them. While scanning for candidates, I also found several cases where ints should have been u_ints in the code, so I fixed those while I was in there: hw.physmem - you can surely put more than 2G of RAM in hw.usermem and x86 server which caused these to wrap. vm.stats.misc.cnt_prezero - a long-running server will eventually pre-zero more than 2 billion pages...eventually kern.nselcoll - again, left running long enough, the number of select collisions can wrap to negative. However, this was changed more for 'logistics'...you'll never have a negative count, so why let it. debug.boothowto - signed bitmask looked negative to sysctl This patch also includes a 'fix' for the alpha to print the memory stats on boot as unsigned values. I was just being anal. You won't have negative memory, on the other hand, it is unlikely you'll have more than 2^63 bytes of RAM either. But the jist of the patch is making values that printed non-sensical values in sysctl because of integer wrapping use the new unsigned sysctl feature. Really, it's a simple patch, it just touches a lot of files. Kelly >How-To-Repeat: Run `sysctl -a | grep boothowto` Put more than 2G of RAM in an x86 machine and run `sysctl -a | grep mem`. >Fix: Index: alpha/alpha/machdep.c =================================================================== RCS file: /home/cvs/src/sys/alpha/alpha/machdep.c,v retrieving revision 1.86 diff -u -r1.86 machdep.c --- alpha/alpha/machdep.c 2000/07/04 11:24:59 1.86 +++ alpha/alpha/machdep.c 2000/07/05 23:23:09 @@ -186,11 +186,12 @@ struct msgbuf *msgbufp=0; -int bootverbose = 0, Maxmem = 0; +int bootverbose = 0; +u_int Maxmem = 0; long dumplo; -int totalphysmem; /* total amount of physical memory in system */ -int physmem; /* physical memory used by NetBSD + some rsvd */ +u_int totalphysmem; /* total amount of physical memory in system */ +u_int physmem; /* physical memory used by NetBSD + some rsvd */ int resvmem; /* amount of memory reserved for PROM */ int unusedmem; /* amount of memory for OS that we don't use */ int unknownmem; /* amount of memory with an unknown use */ @@ -206,7 +207,7 @@ } SYSCTL_PROC(_hw, HW_PHYSMEM, physmem, CTLTYPE_INT|CTLFLAG_RD, - 0, 0, sysctl_hw_physmem, "I", ""); + 0, 0, sysctl_hw_physmem, "IU", ""); static int sysctl_hw_usermem(SYSCTL_HANDLER_ARGS) @@ -219,7 +220,7 @@ SYSCTL_PROC(_hw, HW_USERMEM, usermem, CTLTYPE_INT|CTLFLAG_RD, 0, 0, sysctl_hw_usermem, "I", ""); -SYSCTL_INT(_hw, OID_AUTO, availpages, CTLFLAG_RD, &physmem, 0, ""); +SYSCTL_UINT(_hw, OID_AUTO, availpages, CTLFLAG_RD, &physmem, 0, ""); /* must be 2 less so 0 0 can signal end of chunks */ #define PHYS_AVAIL_ARRAY_END ((sizeof(phys_avail) / sizeof(vm_offset_t)) - 2) @@ -267,7 +268,7 @@ #ifdef PERFMON perfmon_init(); #endif - printf("real memory = %ld (%ldK bytes)\n", alpha_ptob(Maxmem), alpha_ptob(Maxmem) / 1024); + printf("real memory = %lu (%luK bytes)\n", alpha_ptob(Maxmem), alpha_ptob(Maxmem) / 1024); /* * Display any holes after the first chunk of extended memory. Index: alpha/alpha/vm_machdep.c =================================================================== RCS file: /home/cvs/src/sys/alpha/alpha/vm_machdep.c,v retrieving revision 1.32 diff -u -r1.32 vm_machdep.c --- alpha/alpha/vm_machdep.c 2000/06/19 18:41:27 1.32 +++ alpha/alpha/vm_machdep.c 2000/07/05 20:45:22 @@ -381,9 +381,9 @@ } -static int cnt_prezero; +static u_int cnt_prezero; -SYSCTL_INT(_machdep, OID_AUTO, cnt_prezero, CTLFLAG_RD, &cnt_prezero, 0, ""); +SYSCTL_UINT(_machdep, OID_AUTO, cnt_prezero, CTLFLAG_RD, &cnt_prezero, 0, ""); /* * Implement the pre-zeroed page mechanism. Index: i386/i386/machdep.c =================================================================== RCS file: /home/cvs/src/sys/i386/i386/machdep.c,v retrieving revision 1.398 diff -u -r1.398 machdep.c --- i386/i386/machdep.c 2000/07/04 11:25:17 1.398 +++ i386/i386/machdep.c 2000/07/05 23:26:04 @@ -150,7 +150,7 @@ #endif SYSCTL_INT(_machdep, OID_AUTO, ispc98, CTLFLAG_RD, &ispc98, 0, ""); -int physmem = 0; +u_int physmem = 0; int cold = 1; static void osendsig __P((sig_t catcher, int sig, sigset_t *mask, u_long code)); @@ -163,7 +163,7 @@ } SYSCTL_PROC(_hw, HW_PHYSMEM, physmem, CTLTYPE_INT|CTLFLAG_RD, - 0, 0, sysctl_hw_physmem, "I", ""); + 0, 0, sysctl_hw_physmem, "IU", ""); static int sysctl_hw_usermem(SYSCTL_HANDLER_ARGS) @@ -174,7 +174,7 @@ } SYSCTL_PROC(_hw, HW_USERMEM, usermem, CTLTYPE_INT|CTLFLAG_RD, - 0, 0, sysctl_hw_usermem, "I", ""); + 0, 0, sysctl_hw_usermem, "IU", ""); static int sysctl_hw_availpages(SYSCTL_HANDLER_ARGS) Index: i386/i386/vm_machdep.c =================================================================== RCS file: /home/cvs/src/sys/i386/i386/vm_machdep.c,v retrieving revision 1.136 diff -u -r1.136 vm_machdep.c --- i386/i386/vm_machdep.c 2000/06/10 02:05:57 1.136 +++ i386/i386/vm_machdep.c 2000/07/05 20:45:06 @@ -533,9 +533,9 @@ SYSCTL_DECL(_vm_stats_misc); -static int cnt_prezero; +static u_int cnt_prezero; -SYSCTL_INT(_vm_stats_misc, OID_AUTO, +SYSCTL_UINT(_vm_stats_misc, OID_AUTO, cnt_prezero, CTLFLAG_RD, &cnt_prezero, 0, ""); /* Index: kern/init_main.c =================================================================== RCS file: /home/cvs/src/sys/kern/init_main.c,v retrieving revision 1.136 diff -u -r1.136 init_main.c --- kern/init_main.c 2000/06/25 10:14:06 1.136 +++ kern/init_main.c 2000/07/05 22:54:01 @@ -91,8 +91,8 @@ extern struct user *proc0paddr; struct vnode *rootvp; -int boothowto = 0; /* initialized so that it can be patched */ -SYSCTL_INT(_debug, OID_AUTO, boothowto, CTLFLAG_RD, &boothowto, 0, ""); +u_int boothowto = 0; /* initialized so that it can be patched */ +SYSCTL_UINT(_debug, OID_AUTO, boothowto, CTLFLAG_RD, &boothowto, 0, ""); /* * Promiscuous argument pass for start_init() Index: kern/kern_mib.c =================================================================== RCS file: /home/cvs/src/sys/kern/kern_mib.c,v retrieving revision 1.37 diff -u -r1.37 kern_mib.c --- kern/kern_mib.c 2000/07/04 11:25:22 1.37 +++ kern/kern_mib.c 2000/07/05 20:50:20 @@ -187,8 +187,7 @@ &domainname, sizeof(domainname), "Name of the current YP/NIS domain"); long hostid; -/* Some trouble here, if sizeof (int) != sizeof (long) */ -SYSCTL_INT(_kern, KERN_HOSTID, hostid, CTLFLAG_RW, &hostid, 0, "Host ID"); +SYSCTL_LONG(_kern, KERN_HOSTID, hostid, CTLFLAG_RW, &hostid, 0, "Host ID"); /* * This is really cheating. These actually live in the libc, something Index: kern/kern_tc.c =================================================================== RCS file: /home/cvs/src/sys/kern/kern_tc.c,v retrieving revision 1.108 diff -u -r1.108 kern_tc.c --- kern/kern_tc.c 2000/07/04 11:25:23 1.108 +++ kern/kern_tc.c 2000/07/05 20:52:19 @@ -49,14 +49,14 @@ static unsigned nnanouptime; static unsigned ngetmicrouptime; static unsigned ngetnanouptime; -SYSCTL_INT(_kern_timecounter, OID_AUTO, nmicrotime, CTLFLAG_RD, &nmicrotime, 0, ""); -SYSCTL_INT(_kern_timecounter, OID_AUTO, nnanotime, CTLFLAG_RD, &nnanotime, 0, ""); -SYSCTL_INT(_kern_timecounter, OID_AUTO, nmicrouptime, CTLFLAG_RD, &nmicrouptime, 0, ""); -SYSCTL_INT(_kern_timecounter, OID_AUTO, nnanouptime, CTLFLAG_RD, &nnanouptime, 0, ""); -SYSCTL_INT(_kern_timecounter, OID_AUTO, ngetmicrotime, CTLFLAG_RD, &ngetmicrotime, 0, ""); -SYSCTL_INT(_kern_timecounter, OID_AUTO, ngetnanotime, CTLFLAG_RD, &ngetnanotime, 0, ""); -SYSCTL_INT(_kern_timecounter, OID_AUTO, ngetmicrouptime, CTLFLAG_RD, &ngetmicrouptime, 0, ""); -SYSCTL_INT(_kern_timecounter, OID_AUTO, ngetnanouptime, CTLFLAG_RD, &ngetnanouptime, 0, ""); +SYSCTL_UINT(_kern_timecounter, OID_AUTO, nmicrotime, CTLFLAG_RD, &nmicrotime, 0, ""); +SYSCTL_UINT(_kern_timecounter, OID_AUTO, nnanotime, CTLFLAG_RD, &nnanotime, 0, ""); +SYSCTL_UINT(_kern_timecounter, OID_AUTO, nmicrouptime, CTLFLAG_RD, &nmicrouptime, 0, ""); +SYSCTL_UINT(_kern_timecounter, OID_AUTO, nnanouptime, CTLFLAG_RD, &nnanouptime, 0, ""); +SYSCTL_UINT(_kern_timecounter, OID_AUTO, ngetmicrotime, CTLFLAG_RD, &ngetmicrotime, 0, ""); +SYSCTL_UINT(_kern_timecounter, OID_AUTO, ngetnanotime, CTLFLAG_RD, &ngetnanotime, 0, ""); +SYSCTL_UINT(_kern_timecounter, OID_AUTO, ngetmicrouptime, CTLFLAG_RD, &ngetmicrouptime, 0, ""); +SYSCTL_UINT(_kern_timecounter, OID_AUTO, ngetnanouptime, CTLFLAG_RD, &ngetnanouptime, 0, ""); /* * Implement a dummy timecounter which we can use until we get a real one Index: kern/subr_kobj.c =================================================================== RCS file: /home/cvs/src/sys/kern/subr_kobj.c,v retrieving revision 1.2 diff -u -r1.2 subr_kobj.c --- kern/subr_kobj.c 2000/05/01 10:45:15 1.2 +++ kern/subr_kobj.c 2000/07/05 20:56:49 @@ -47,12 +47,12 @@ #include -int kobj_lookup_hits; -int kobj_lookup_misses; +u_int kobj_lookup_hits; +u_int kobj_lookup_misses; -SYSCTL_INT(_kern, OID_AUTO, kobj_hits, CTLFLAG_RD, +SYSCTL_UINT(_kern, OID_AUTO, kobj_hits, CTLFLAG_RD, &kobj_lookup_hits, 0, "") -SYSCTL_INT(_kern, OID_AUTO, kobj_misses, CTLFLAG_RD, +SYSCTL_UINT(_kern, OID_AUTO, kobj_misses, CTLFLAG_RD, &kobj_lookup_misses, 0, "") #endif Index: kern/sys_generic.c =================================================================== RCS file: /home/cvs/src/sys/kern/sys_generic.c,v retrieving revision 1.58 diff -u -r1.58 sys_generic.c --- kern/sys_generic.c 2000/07/02 08:08:00 1.58 +++ kern/sys_generic.c 2000/07/05 20:57:59 @@ -603,9 +603,9 @@ return (error); } -static int nselcoll; /* Select collisions since boot */ -int selwait; -SYSCTL_INT(_kern, OID_AUTO, nselcoll, CTLFLAG_RD, &nselcoll, 0, ""); +static u_int nselcoll; /* Select collisions since boot */ +u_int selwait; +SYSCTL_UINT(_kern, OID_AUTO, nselcoll, CTLFLAG_RD, &nselcoll, 0, ""); /* * Select system call. Index: kern/vfs_subr.c =================================================================== RCS file: /home/cvs/src/sys/kern/vfs_subr.c,v retrieving revision 1.264 diff -u -r1.264 vfs_subr.c --- kern/vfs_subr.c 2000/07/04 11:25:23 1.264 +++ kern/vfs_subr.c 2000/07/05 21:18:43 @@ -138,6 +138,7 @@ static int syncer_maxdelay = SYNCER_MAXDELAY; /* maximum delay time */ time_t syncdelay = 30; /* max time to delay syncing data */ time_t filedelay = 30; /* time to delay syncing files */ +/* XXX time_t != int on all archetectures. */ SYSCTL_INT(_kern, OID_AUTO, filedelay, CTLFLAG_RW, &filedelay, 0, ""); time_t dirdelay = 29; /* time to delay syncing directories */ SYSCTL_INT(_kern, OID_AUTO, dirdelay, CTLFLAG_RW, &dirdelay, 0, ""); Index: pc98/i386/machdep.c =================================================================== RCS file: /home/cvs/src/sys/pc98/i386/machdep.c,v retrieving revision 1.166 diff -u -r1.166 machdep.c --- pc98/i386/machdep.c 2000/07/04 11:25:33 1.166 +++ pc98/i386/machdep.c 2000/07/05 23:28:07 @@ -160,7 +160,7 @@ #endif SYSCTL_INT(_machdep, OID_AUTO, ispc98, CTLFLAG_RD, &ispc98, 0, ""); -int physmem = 0; +u_int physmem = 0; int cold = 1; static void osendsig __P((sig_t catcher, int sig, sigset_t *mask, u_long code)); @@ -173,7 +173,7 @@ } SYSCTL_PROC(_hw, HW_PHYSMEM, physmem, CTLTYPE_INT|CTLFLAG_RD, - 0, 0, sysctl_hw_physmem, "I", ""); + 0, 0, sysctl_hw_physmem, "IU", ""); static int sysctl_hw_usermem(SYSCTL_HANDLER_ARGS) @@ -184,7 +184,7 @@ } SYSCTL_PROC(_hw, HW_USERMEM, usermem, CTLTYPE_INT|CTLFLAG_RD, - 0, 0, sysctl_hw_usermem, "I", ""); + 0, 0, sysctl_hw_usermem, "IU", ""); static int sysctl_hw_availpages(SYSCTL_HANDLER_ARGS) Index: sys/kobj.h =================================================================== RCS file: /home/cvs/src/sys/sys/kobj.h,v retrieving revision 1.4 diff -u -r1.4 kobj.h --- sys/kobj.h 2000/05/11 17:10:22 1.4 +++ sys/kobj.h 2000/07/05 20:54:51 @@ -130,8 +130,8 @@ * Maintain stats on hits/misses in lookup caches. */ #ifdef KOBJ_STATS -extern int kobj_lookup_hits; -extern int kobj_lookup_misses; +extern u_int kobj_lookup_hits; +extern u_int kobj_lookup_misses; #define KOBJOPHIT do { kobj_lookup_hits++; } while (0) #define KOBJOPMISS do { kobj_lookup_misses++; } while (0) #else Index: sys/sysctl.h =================================================================== RCS file: /home/cvs/src/sys/sys/sysctl.h,v retrieving revision 1.86 diff -u -r1.86 sysctl.h --- sys/sysctl.h 2000/07/05 07:46:41 1.86 +++ sys/sysctl.h 2000/07/05 23:29:48 @@ -349,8 +349,8 @@ #define HW_MODEL 2 /* string: specific machine model */ #define HW_NCPU 3 /* int: number of cpus */ #define HW_BYTEORDER 4 /* int: machine byte order */ -#define HW_PHYSMEM 5 /* int: total memory */ -#define HW_USERMEM 6 /* int: non-kernel memory */ +#define HW_PHYSMEM 5 /* uint: total memory */ +#define HW_USERMEM 6 /* uint: non-kernel memory */ #define HW_PAGESIZE 7 /* int: software page size */ #define HW_DISKNAMES 8 /* strings: disk drive names */ #define HW_DISKSTATS 9 /* struct: diskstats[] */ Index: sys/systm.h =================================================================== RCS file: /home/cvs/src/sys/sys/systm.h,v retrieving revision 1.116 diff -u -r1.116 systm.h --- sys/systm.h 2000/06/05 18:30:55 1.116 +++ sys/systm.h 2000/07/05 23:16:10 @@ -56,11 +56,12 @@ extern int nswap; /* size of swap space */ -extern int selwait; /* select timeout address */ +extern u_int selwait; /* select timeout address */ extern u_char curpriority; /* priority of current process */ -extern int physmem; /* physical memory */ +/* XXX Should be segsz_t. */ +extern u_int physmem; /* physical memory */ extern dev_t dumpdev; /* dump device */ extern long dumplo; /* offset into dumpdev */ @@ -70,7 +71,7 @@ extern char *rootdevnames[2]; /* names of possible root devices */ extern struct vnode *rootvp; /* vnode equivalent to above */ -extern int boothowto; /* reboot flags, from console subsystem */ +extern u_int boothowto; /* reboot flags, from console subsystem */ extern int bootverbose; /* nonzero to print verbose messages */ #ifdef INVARIANTS /* The option is always available */ Index: vm/vm_meter.c =================================================================== RCS file: /home/cvs/src/sys/vm/vm_meter.c,v retrieving revision 1.39 diff -u -r1.39 vm_meter.c --- vm/vm_meter.c 2000/07/05 07:46:41 1.39 +++ vm/vm_meter.c 2000/07/05 20:19:52 @@ -309,7 +309,7 @@ v_pageout_free_min, CTLFLAG_RD, &cnt.v_pageout_free_min, 0, ""); SYSCTL_UINT(_vm_stats_vm, OID_AUTO, v_interrupt_free_min, CTLFLAG_RD, &cnt.v_interrupt_free_min, 0, ""); -SYSCTL_INT(_vm_stats_misc, OID_AUTO, +SYSCTL_UINT(_vm_stats_misc, OID_AUTO, zero_page_count, CTLFLAG_RD, &vm_page_zero_count, 0, ""); #if 0 SYSCTL_INT(_vm_stats_misc, OID_AUTO, >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message