Include the psind in data returned by mincore(2).

Currently we use a single bit to indicate whether the virtual page is
part of a superpage.  To support a forthcoming implementation of
non-transparent 1GB superpages, it is useful to provide more detailed
information about large page sizes.

The change converts MINCORE_SUPER into a mask for MINCORE_PSIND(psind)
values, indicating a mapping of size psind, where psind is an index into
the pagesizes array returned by getpagesizes(3), which in turn comes
from the hw.pagesizes sysctl.  MINCORE_PSIND(1) is equal to the old
value of MINCORE_SUPER.

For now, two bits are used to record the page size, permitting values
of MAXPAGESIZES up to 4.

Reviewed by:	alc, kib
Sponsored by:	Juniper Networks, Inc.
Sponsored by:	Klara, Inc.
Differential Revision:	https://reviews.freebsd.org/D26238
This commit is contained in:
Mark Johnston 2020-09-02 18:16:43 +00:00 committed by Sebastian Huber
parent d066d123f1
commit 1a5f14a0c5
1 changed files with 2 additions and 1 deletions

View File

@ -179,7 +179,8 @@
#define MINCORE_MODIFIED 0x4 /* Page has been modified by us */ #define MINCORE_MODIFIED 0x4 /* Page has been modified by us */
#define MINCORE_REFERENCED_OTHER 0x8 /* Page has been referenced */ #define MINCORE_REFERENCED_OTHER 0x8 /* Page has been referenced */
#define MINCORE_MODIFIED_OTHER 0x10 /* Page has been modified */ #define MINCORE_MODIFIED_OTHER 0x10 /* Page has been modified */
#define MINCORE_SUPER 0x20 /* Page is a "super" page */ #define MINCORE_SUPER 0x60 /* Page is a "super" page */
#define MINCORE_PSIND(i) (((i) << 5) & MINCORE_SUPER) /* Page size */
/* /*
* Anonymous object constant for shm_open(). * Anonymous object constant for shm_open().