MFC r197316
Add a new sysctl for reporting all of the supported page sizes.
This commit is contained in:
parent
38c15033c7
commit
ebc91405bd
@ -118,6 +118,8 @@
|
||||
#define NBPML4 (1ul<<PML4SHIFT)/* bytes/page map lev4 table */
|
||||
#define PML4MASK (NBPML4-1)
|
||||
|
||||
#define MAXPAGESIZES 3 /* maximum number of supported page sizes */
|
||||
|
||||
#define IOPAGES 2 /* pages of i/o permission bitmap */
|
||||
|
||||
#ifndef KSTACK_PAGES
|
||||
|
@ -104,6 +104,8 @@
|
||||
#define NBPDR (1 << PDR_SHIFT)
|
||||
#define NPDEPG (1 << (32 - PDR_SHIFT))
|
||||
|
||||
#define MAXPAGESIZES 1 /* maximum number of supported page sizes */
|
||||
|
||||
#ifndef KSTACK_PAGES
|
||||
#define KSTACK_PAGES 2
|
||||
#endif /* !KSTACK_PAGES */
|
||||
|
@ -109,6 +109,8 @@
|
||||
#define NBPDR (1<<PDRSHIFT) /* bytes/page dir */
|
||||
#define PDRMASK (NBPDR-1)
|
||||
|
||||
#define MAXPAGESIZES 2 /* maximum number of supported page sizes */
|
||||
|
||||
#define IOPAGES 2 /* pages of i/o permission bitmap */
|
||||
|
||||
#ifndef KSTACK_PAGES
|
||||
|
@ -100,6 +100,8 @@
|
||||
#define PAGE_MASK (PAGE_SIZE-1)
|
||||
#define NPTEPG (PAGE_SIZE/(sizeof (pt_entry_t)))
|
||||
|
||||
#define MAXPAGESIZES 1 /* maximum number of supported page sizes */
|
||||
|
||||
#ifndef KSTACK_PAGES
|
||||
#define KSTACK_PAGES 4 /* pages of kernel stack */
|
||||
#endif
|
||||
|
@ -204,6 +204,33 @@ SYSCTL_PROC(_hw, HW_USERMEM, usermem, CTLTYPE_ULONG | CTLFLAG_RD,
|
||||
|
||||
SYSCTL_ULONG(_hw, OID_AUTO, availpages, CTLFLAG_RD, &physmem, 0, "");
|
||||
|
||||
u_long pagesizes[MAXPAGESIZES] = { PAGE_SIZE };
|
||||
|
||||
static int
|
||||
sysctl_hw_pagesizes(SYSCTL_HANDLER_ARGS)
|
||||
{
|
||||
int error;
|
||||
#ifdef SCTL_MASK32
|
||||
int i;
|
||||
uint32_t pagesizes32[MAXPAGESIZES];
|
||||
|
||||
if (req->flags & SCTL_MASK32) {
|
||||
/*
|
||||
* Recreate the "pagesizes" array with 32-bit elements. Truncate
|
||||
* any page size greater than UINT32_MAX to zero.
|
||||
*/
|
||||
for (i = 0; i < MAXPAGESIZES; i++)
|
||||
pagesizes32[i] = (uint32_t)pagesizes[i];
|
||||
|
||||
error = SYSCTL_OUT(req, pagesizes32, sizeof(pagesizes32));
|
||||
} else
|
||||
#endif
|
||||
error = SYSCTL_OUT(req, pagesizes, sizeof(pagesizes));
|
||||
return (error);
|
||||
}
|
||||
SYSCTL_PROC(_hw, OID_AUTO, pagesizes, CTLTYPE_ULONG | CTLFLAG_RD,
|
||||
NULL, 0, sysctl_hw_pagesizes, "LU", "Supported page sizes");
|
||||
|
||||
static char machine_arch[] = MACHINE_ARCH;
|
||||
SYSCTL_STRING(_hw, HW_MACHINE_ARCH, machine_arch, CTLFLAG_RD,
|
||||
machine_arch, 0, "System architecture");
|
||||
|
@ -115,6 +115,8 @@
|
||||
#define SEGOFSET (NBSEG-1) /* byte offset into segment */
|
||||
#define SEGSHIFT 22 /* LOG2(NBSEG) */
|
||||
|
||||
#define MAXPAGESIZES 1 /* maximum number of supported page sizes */
|
||||
|
||||
/* XXXimp: This has moved to vmparam.h */
|
||||
/* Also, this differs from the mips2 definition, but likely is better */
|
||||
/* since this means the kernel won't chew up TLBs when it is executing */
|
||||
|
@ -98,6 +98,8 @@
|
||||
#define PAGE_MASK (PAGE_SIZE - 1)
|
||||
#define NPTEPG (PAGE_SIZE/(sizeof (pt_entry_t)))
|
||||
|
||||
#define MAXPAGESIZES 1 /* maximum number of supported page sizes */
|
||||
|
||||
#ifndef KSTACK_PAGES
|
||||
#define KSTACK_PAGES 4 /* includes pcb */
|
||||
#endif
|
||||
|
@ -121,6 +121,8 @@
|
||||
#define PAGE_SIZE_MAX PAGE_SIZE_4M
|
||||
#define PAGE_MASK_MAX PAGE_MASK_4M
|
||||
|
||||
#define MAXPAGESIZES 1 /* maximum number of supported page sizes */
|
||||
|
||||
#ifndef KSTACK_PAGES
|
||||
#define KSTACK_PAGES 4 /* pages of kernel stack (with pcb) */
|
||||
#endif
|
||||
|
@ -116,6 +116,8 @@
|
||||
#define PAGE_SIZE_MAX PAGE_SIZE_4M
|
||||
#define PAGE_MASK_MAX PAGE_MASK_4M
|
||||
|
||||
#define MAXPAGESIZES 1 /* maximum number of supported page sizes */
|
||||
|
||||
#ifndef KSTACK_PAGES
|
||||
#define KSTACK_PAGES 4 /* pages of kernel stack (with pcb) */
|
||||
#endif
|
||||
|
@ -54,6 +54,7 @@ extern int kstack_pages; /* number of kernel stack pages */
|
||||
|
||||
extern int nswap; /* size of swap space */
|
||||
|
||||
extern u_long pagesizes[]; /* supported page sizes */
|
||||
extern long physmem; /* physical memory */
|
||||
extern long realmem; /* 'real' memory */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user