From c3bdd669c3f39a9ac1166f5ca537aca7b8beff2b Mon Sep 17 00:00:00 2001 From: peter Date: Fri, 30 Aug 2002 04:04:37 +0000 Subject: Change hw.physmem and hw.usermem to unsigned long like they used to be in the original hardwired sysctl implementation. The buf size calculator still overflows an integer on machines with large KVA (eg: ia64) where the number of pages does not fit into an int. Use 'long' there. Change Maxmem and physmem and related variables to 'long', mostly for completeness. Machines are not likely to overflow 'int' pages in the near term, but then again, 640K ought to be enough for anybody. This comes for free on 32 bit machines, so why not? --- sys/ia64/ia64/machdep.c | 27 +++++++++++++++++---------- sys/ia64/include/md_var.h | 2 +- 2 files changed, 18 insertions(+), 11 deletions(-) (limited to 'sys/ia64') diff --git a/sys/ia64/ia64/machdep.c b/sys/ia64/ia64/machdep.c index 69fb171..0c04a66 100644 --- a/sys/ia64/ia64/machdep.c +++ b/sys/ia64/ia64/machdep.c @@ -146,33 +146,40 @@ SYSINIT(cpu, SI_SUB_CPU, SI_ORDER_FIRST, cpu_startup, NULL) struct msgbuf *msgbufp=0; -int Maxmem = 0; -int physmem; /* Physical conventional memory. */ +long Maxmem = 0; +long physmem; /* Physical conventional memory. */ vm_offset_t phys_avail[100]; static int sysctl_hw_physmem(SYSCTL_HANDLER_ARGS) { - int error = sysctl_handle_int(oidp, 0, ia64_ptob(physmem), req); + int error; + unsigned long val; + + val = ia64_ptob(physmem); + error = sysctl_handle_long(oidp, &val, 0, req); return (error); } -SYSCTL_PROC(_hw, HW_PHYSMEM, physmem, CTLTYPE_INT|CTLFLAG_RD, - 0, 0, sysctl_hw_physmem, "I", ""); +SYSCTL_PROC(_hw, HW_PHYSMEM, physmem, CTLTYPE_ULONG|CTLFLAG_RD, + 0, 0, sysctl_hw_physmem, "LU", ""); static int sysctl_hw_usermem(SYSCTL_HANDLER_ARGS) { - int error = sysctl_handle_int(oidp, 0, - ia64_ptob(physmem - cnt.v_wire_count), req); + int error; + unsigned long val; + + val = ia64_ptob(physmem - cnt.v_wire_count); + error = sysctl_handle_long(oidp, &val, 0, req); return (error); } -SYSCTL_PROC(_hw, HW_USERMEM, usermem, CTLTYPE_INT|CTLFLAG_RD, - 0, 0, sysctl_hw_usermem, "I", ""); +SYSCTL_PROC(_hw, HW_USERMEM, usermem, CTLTYPE_ULONG|CTLFLAG_RD, + 0, 0, sysctl_hw_usermem, "LU", ""); -SYSCTL_INT(_hw, OID_AUTO, availpages, CTLFLAG_RD, &physmem, 0, ""); +SYSCTL_LONG(_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) diff --git a/sys/ia64/include/md_var.h b/sys/ia64/include/md_var.h index 75eab8b..706294f 100644 --- a/sys/ia64/include/md_var.h +++ b/sys/ia64/include/md_var.h @@ -36,7 +36,7 @@ extern char sigcode[]; extern char esigcode[]; extern int szsigcode; -extern int Maxmem; +extern long Maxmem; struct fpreg; struct thread; -- cgit v1.1