Move the definitions of the hw.physmem, hw.usermem and hw.availpages
sysctls to MI code; this reduces code duplication and makes all of them available on sparc64, and the latter two on powerpc. The semantics by the i386 and pc98 hw.availpages is slightly changed: previously, holes between ranges of available pages would be included, while they are excluded now. The new behaviour should be more correct and brings i386 in line with the other architectures. Move physmem to vm/vm_init.c, where this variable is used in MI code.
This commit is contained in:
parent
bf1001fa0f
commit
0fca57b8b8
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=106605
@ -192,7 +192,6 @@ struct msgbuf *msgbufp=0;
|
||||
long Maxmem = 0;
|
||||
|
||||
long totalphysmem; /* total amount of physical memory in system */
|
||||
long physmem; /* physical memory used by NetBSD + some rsvd */
|
||||
long resvmem; /* amount of memory reserved for PROM */
|
||||
long unusedmem; /* amount of memory for OS that we don't use */
|
||||
long unknownmem; /* amount of memory with an unknown use */
|
||||
@ -200,32 +199,6 @@ int ncpus; /* number of cpus */
|
||||
|
||||
vm_offset_t phys_avail[10];
|
||||
|
||||
static int
|
||||
sysctl_hw_physmem(SYSCTL_HANDLER_ARGS)
|
||||
{
|
||||
u_long val;
|
||||
|
||||
val = alpha_ptob(physmem);
|
||||
return (sysctl_handle_long(oidp, &val, 0, req));
|
||||
}
|
||||
|
||||
SYSCTL_PROC(_hw, HW_PHYSMEM, physmem, CTLTYPE_ULONG | CTLFLAG_RD,
|
||||
0, 0, sysctl_hw_physmem, "LU", "");
|
||||
|
||||
static int
|
||||
sysctl_hw_usermem(SYSCTL_HANDLER_ARGS)
|
||||
{
|
||||
u_long val;
|
||||
|
||||
val = alpha_ptob(physmem - cnt.v_wire_count);
|
||||
return (sysctl_handle_long(oidp, &val, 0, req));
|
||||
}
|
||||
|
||||
SYSCTL_PROC(_hw, HW_USERMEM, usermem, CTLTYPE_ULONG | CTLFLAG_RD,
|
||||
0, 0, sysctl_hw_usermem, "LU", "");
|
||||
|
||||
SYSCTL_ULONG(_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)
|
||||
|
||||
|
@ -159,7 +159,6 @@ SYSCTL_INT(_debug, OID_AUTO, tlb_flush_count,
|
||||
CTLFLAG_RD, &tlb_flush_count, 0, "");
|
||||
#endif
|
||||
|
||||
long physmem = 0;
|
||||
int cold = 1;
|
||||
|
||||
#ifdef COMPAT_43
|
||||
@ -170,42 +169,6 @@ static void freebsd4_sendsig(sig_t catcher, int sig, sigset_t *mask,
|
||||
u_long code);
|
||||
#endif
|
||||
|
||||
static int
|
||||
sysctl_hw_physmem(SYSCTL_HANDLER_ARGS)
|
||||
{
|
||||
u_long val;
|
||||
|
||||
val = ctob(physmem);
|
||||
return (sysctl_handle_long(oidp, &val, 0, req));
|
||||
}
|
||||
|
||||
SYSCTL_PROC(_hw, HW_PHYSMEM, physmem, CTLTYPE_ULONG | CTLFLAG_RD,
|
||||
0, 0, sysctl_hw_physmem, "LU", "");
|
||||
|
||||
static int
|
||||
sysctl_hw_usermem(SYSCTL_HANDLER_ARGS)
|
||||
{
|
||||
u_long val;
|
||||
|
||||
val = ctob(physmem - cnt.v_wire_count);
|
||||
return (sysctl_handle_long(oidp, &val, 0, req));
|
||||
}
|
||||
|
||||
SYSCTL_PROC(_hw, HW_USERMEM, usermem, CTLTYPE_ULONG | CTLFLAG_RD,
|
||||
0, 0, sysctl_hw_usermem, "LU", "");
|
||||
|
||||
static int
|
||||
sysctl_hw_availpages(SYSCTL_HANDLER_ARGS)
|
||||
{
|
||||
u_long val;
|
||||
|
||||
val = i386_btop(avail_end - avail_start);
|
||||
return (sysctl_handle_long(oidp, &val, 0, req));
|
||||
}
|
||||
|
||||
SYSCTL_PROC(_hw, OID_AUTO, availpages, CTLTYPE_ULONG | CTLFLAG_RD,
|
||||
0, 0, sysctl_hw_availpages, "LU", "");
|
||||
|
||||
long Maxmem = 0;
|
||||
|
||||
vm_offset_t phys_avail[10];
|
||||
|
@ -159,7 +159,6 @@ SYSCTL_INT(_debug, OID_AUTO, tlb_flush_count,
|
||||
CTLFLAG_RD, &tlb_flush_count, 0, "");
|
||||
#endif
|
||||
|
||||
long physmem = 0;
|
||||
int cold = 1;
|
||||
|
||||
#ifdef COMPAT_43
|
||||
@ -170,42 +169,6 @@ static void freebsd4_sendsig(sig_t catcher, int sig, sigset_t *mask,
|
||||
u_long code);
|
||||
#endif
|
||||
|
||||
static int
|
||||
sysctl_hw_physmem(SYSCTL_HANDLER_ARGS)
|
||||
{
|
||||
u_long val;
|
||||
|
||||
val = ctob(physmem);
|
||||
return (sysctl_handle_long(oidp, &val, 0, req));
|
||||
}
|
||||
|
||||
SYSCTL_PROC(_hw, HW_PHYSMEM, physmem, CTLTYPE_ULONG | CTLFLAG_RD,
|
||||
0, 0, sysctl_hw_physmem, "LU", "");
|
||||
|
||||
static int
|
||||
sysctl_hw_usermem(SYSCTL_HANDLER_ARGS)
|
||||
{
|
||||
u_long val;
|
||||
|
||||
val = ctob(physmem - cnt.v_wire_count);
|
||||
return (sysctl_handle_long(oidp, &val, 0, req));
|
||||
}
|
||||
|
||||
SYSCTL_PROC(_hw, HW_USERMEM, usermem, CTLTYPE_ULONG | CTLFLAG_RD,
|
||||
0, 0, sysctl_hw_usermem, "LU", "");
|
||||
|
||||
static int
|
||||
sysctl_hw_availpages(SYSCTL_HANDLER_ARGS)
|
||||
{
|
||||
u_long val;
|
||||
|
||||
val = i386_btop(avail_end - avail_start);
|
||||
return (sysctl_handle_long(oidp, &val, 0, req));
|
||||
}
|
||||
|
||||
SYSCTL_PROC(_hw, OID_AUTO, availpages, CTLTYPE_ULONG | CTLFLAG_RD,
|
||||
0, 0, sysctl_hw_availpages, "LU", "");
|
||||
|
||||
long Maxmem = 0;
|
||||
|
||||
vm_offset_t phys_avail[10];
|
||||
|
@ -145,36 +145,9 @@ SYSINIT(cpu, SI_SUB_CPU, SI_ORDER_FIRST, cpu_startup, NULL)
|
||||
struct msgbuf *msgbufp=0;
|
||||
|
||||
long Maxmem = 0;
|
||||
long physmem; /* Physical conventional memory. */
|
||||
|
||||
vm_offset_t phys_avail[100];
|
||||
|
||||
static int
|
||||
sysctl_hw_physmem(SYSCTL_HANDLER_ARGS)
|
||||
{
|
||||
u_long val;
|
||||
|
||||
val = ia64_ptob(physmem);
|
||||
return (sysctl_handle_long(oidp, &val, 0, req));
|
||||
}
|
||||
|
||||
SYSCTL_PROC(_hw, HW_PHYSMEM, physmem, CTLTYPE_ULONG | CTLFLAG_RD,
|
||||
0, 0, sysctl_hw_physmem, "LU", "");
|
||||
|
||||
static int
|
||||
sysctl_hw_usermem(SYSCTL_HANDLER_ARGS)
|
||||
{
|
||||
u_long val;
|
||||
|
||||
val = ia64_ptob(physmem - cnt.v_wire_count);
|
||||
return (sysctl_handle_long(oidp, &val, 0, req));
|
||||
}
|
||||
|
||||
SYSCTL_PROC(_hw, HW_USERMEM, usermem, CTLTYPE_ULONG | CTLFLAG_RD,
|
||||
0, 0, sysctl_hw_usermem, "LU", "");
|
||||
|
||||
SYSCTL_ULONG(_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)
|
||||
|
||||
|
@ -149,6 +149,32 @@ SYSCTL_INT(_hw, HW_BYTEORDER, byteorder, CTLFLAG_RD,
|
||||
SYSCTL_INT(_hw, HW_PAGESIZE, pagesize, CTLFLAG_RD,
|
||||
0, PAGE_SIZE, "System memory page size");
|
||||
|
||||
static int
|
||||
sysctl_hw_physmem(SYSCTL_HANDLER_ARGS)
|
||||
{
|
||||
u_long val;
|
||||
|
||||
val = ctob(physmem);
|
||||
return (sysctl_handle_long(oidp, &val, 0, req));
|
||||
}
|
||||
|
||||
SYSCTL_PROC(_hw, HW_PHYSMEM, physmem, CTLTYPE_ULONG | CTLFLAG_RD,
|
||||
0, 0, sysctl_hw_physmem, "LU", "");
|
||||
|
||||
static int
|
||||
sysctl_hw_usermem(SYSCTL_HANDLER_ARGS)
|
||||
{
|
||||
u_long val;
|
||||
|
||||
val = ctob(physmem - cnt.v_wire_count);
|
||||
return (sysctl_handle_long(oidp, &val, 0, req));
|
||||
}
|
||||
|
||||
SYSCTL_PROC(_hw, HW_USERMEM, usermem, CTLTYPE_ULONG | CTLFLAG_RD,
|
||||
0, 0, sysctl_hw_usermem, "LU", "");
|
||||
|
||||
SYSCTL_ULONG(_hw, OID_AUTO, availpages, CTLFLAG_RD, &physmem, 0, "");
|
||||
|
||||
static char machine_arch[] = MACHINE_ARCH;
|
||||
SYSCTL_STRING(_hw, HW_MACHINE_ARCH, machine_arch, CTLFLAG_RD,
|
||||
machine_arch, 0, "System architecture");
|
||||
|
@ -176,7 +176,6 @@ static int ispc98 = 0;
|
||||
#endif
|
||||
SYSCTL_INT(_machdep, OID_AUTO, ispc98, CTLFLAG_RD, &ispc98, 0, "");
|
||||
|
||||
long physmem = 0;
|
||||
int cold = 1;
|
||||
|
||||
#ifdef COMPAT_43
|
||||
@ -187,42 +186,6 @@ static void freebsd4_sendsig(sig_t catcher, int sig, sigset_t *mask,
|
||||
u_long code);
|
||||
#endif
|
||||
|
||||
static int
|
||||
sysctl_hw_physmem(SYSCTL_HANDLER_ARGS)
|
||||
{
|
||||
u_long val;
|
||||
|
||||
val = ctob(physmem);
|
||||
return (sysctl_handle_long(oidp, &val, 0, req));
|
||||
}
|
||||
|
||||
SYSCTL_PROC(_hw, HW_PHYSMEM, physmem, CTLTYPE_ULONG | CTLFLAG_RD,
|
||||
0, 0, sysctl_hw_physmem, "LU", "");
|
||||
|
||||
static int
|
||||
sysctl_hw_usermem(SYSCTL_HANDLER_ARGS)
|
||||
{
|
||||
u_long val;
|
||||
|
||||
val = ctob(physmem - cnt.v_wire_count);
|
||||
return (sysctl_handle_long(oidp, &val, 0, req));
|
||||
}
|
||||
|
||||
SYSCTL_PROC(_hw, HW_USERMEM, usermem, CTLTYPE_ULONG | CTLFLAG_RD,
|
||||
0, 0, sysctl_hw_usermem, "LU", "");
|
||||
|
||||
static int
|
||||
sysctl_hw_availpages(SYSCTL_HANDLER_ARGS)
|
||||
{
|
||||
u_long val;
|
||||
|
||||
val = i386_btop(avail_end - avail_start);
|
||||
return (sysctl_handle_long(oidp, &val, 0, req));
|
||||
}
|
||||
|
||||
SYSCTL_PROC(_hw, OID_AUTO, availpages, CTLTYPE_ULONG | CTLFLAG_RD,
|
||||
0, 0, sysctl_hw_availpages, "LU", "");
|
||||
|
||||
long Maxmem = 0;
|
||||
#ifdef PC98
|
||||
int Maxmem_under16M = 0;
|
||||
|
@ -176,7 +176,6 @@ static int ispc98 = 0;
|
||||
#endif
|
||||
SYSCTL_INT(_machdep, OID_AUTO, ispc98, CTLFLAG_RD, &ispc98, 0, "");
|
||||
|
||||
long physmem = 0;
|
||||
int cold = 1;
|
||||
|
||||
#ifdef COMPAT_43
|
||||
@ -187,42 +186,6 @@ static void freebsd4_sendsig(sig_t catcher, int sig, sigset_t *mask,
|
||||
u_long code);
|
||||
#endif
|
||||
|
||||
static int
|
||||
sysctl_hw_physmem(SYSCTL_HANDLER_ARGS)
|
||||
{
|
||||
u_long val;
|
||||
|
||||
val = ctob(physmem);
|
||||
return (sysctl_handle_long(oidp, &val, 0, req));
|
||||
}
|
||||
|
||||
SYSCTL_PROC(_hw, HW_PHYSMEM, physmem, CTLTYPE_ULONG | CTLFLAG_RD,
|
||||
0, 0, sysctl_hw_physmem, "LU", "");
|
||||
|
||||
static int
|
||||
sysctl_hw_usermem(SYSCTL_HANDLER_ARGS)
|
||||
{
|
||||
u_long val;
|
||||
|
||||
val = ctob(physmem - cnt.v_wire_count);
|
||||
return (sysctl_handle_long(oidp, &val, 0, req));
|
||||
}
|
||||
|
||||
SYSCTL_PROC(_hw, HW_USERMEM, usermem, CTLTYPE_ULONG | CTLFLAG_RD,
|
||||
0, 0, sysctl_hw_usermem, "LU", "");
|
||||
|
||||
static int
|
||||
sysctl_hw_availpages(SYSCTL_HANDLER_ARGS)
|
||||
{
|
||||
u_long val;
|
||||
|
||||
val = i386_btop(avail_end - avail_start);
|
||||
return (sysctl_handle_long(oidp, &val, 0, req));
|
||||
}
|
||||
|
||||
SYSCTL_PROC(_hw, OID_AUTO, availpages, CTLTYPE_ULONG | CTLFLAG_RD,
|
||||
0, 0, sysctl_hw_availpages, "LU", "");
|
||||
|
||||
long Maxmem = 0;
|
||||
#ifdef PC98
|
||||
int Maxmem_under16M = 0;
|
||||
|
@ -114,7 +114,6 @@ static const char rcsid[] =
|
||||
#include <sys/vnode.h>
|
||||
#include <machine/sigframe.h>
|
||||
|
||||
long physmem = 0;
|
||||
int cold = 1;
|
||||
|
||||
char pcpu0[PAGE_SIZE];
|
||||
@ -153,18 +152,6 @@ void install_extint(void (*)(void));
|
||||
|
||||
int setfault(faultbuf); /* defined in locore.S */
|
||||
|
||||
static int
|
||||
sysctl_hw_physmem(SYSCTL_HANDLER_ARGS)
|
||||
{
|
||||
u_long val;
|
||||
|
||||
val = ctob(physmem);
|
||||
return (sysctl_handle_long(oidp, &val, 0, req));
|
||||
}
|
||||
|
||||
SYSCTL_PROC(_hw, HW_PHYSMEM, physmem, CTLTYPE_ULONG | CTLFLAG_RD,
|
||||
0, 0, sysctl_hw_physmem, "LU", "");
|
||||
|
||||
long Maxmem = 0;
|
||||
|
||||
static int chosen;
|
||||
|
@ -114,7 +114,6 @@ static const char rcsid[] =
|
||||
#include <sys/vnode.h>
|
||||
#include <machine/sigframe.h>
|
||||
|
||||
long physmem = 0;
|
||||
int cold = 1;
|
||||
|
||||
char pcpu0[PAGE_SIZE];
|
||||
@ -153,18 +152,6 @@ void install_extint(void (*)(void));
|
||||
|
||||
int setfault(faultbuf); /* defined in locore.S */
|
||||
|
||||
static int
|
||||
sysctl_hw_physmem(SYSCTL_HANDLER_ARGS)
|
||||
{
|
||||
u_long val;
|
||||
|
||||
val = ctob(physmem);
|
||||
return (sysctl_handle_long(oidp, &val, 0, req));
|
||||
}
|
||||
|
||||
SYSCTL_PROC(_hw, HW_PHYSMEM, physmem, CTLTYPE_ULONG | CTLFLAG_RD,
|
||||
0, 0, sysctl_hw_physmem, "LU", "");
|
||||
|
||||
long Maxmem = 0;
|
||||
|
||||
static int chosen;
|
||||
|
@ -86,6 +86,8 @@
|
||||
#include <vm/vm_pager.h>
|
||||
#include <vm/vm_extern.h>
|
||||
|
||||
long physmem;
|
||||
|
||||
/*
|
||||
* System initialization
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user