Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 6 Jan 2012 16:54:16 +0000 (UTC)
From:      Mikolaj Golub <trociny@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject:   svn commit: r229707 - in stable/9/sys: kern sys
Message-ID:  <201201061654.q06GsGKb098348@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: trociny
Date: Fri Jan  6 16:54:16 2012
New Revision: 229707
URL: http://svn.freebsd.org/changeset/base/229707

Log:
  MFC r227316:
  
  Add KVME_FLAG_SUPER and use it in sysctl_kern_proc_vmmap for marking
  entries with superpages.
  
  Submitted by:	Mel Flynn <mel.flynn+fbsd.hackers@mailing.thruhere.net>
  Reviewed by:	alc, rwatson

Modified:
  stable/9/sys/kern/kern_proc.c
  stable/9/sys/sys/user.h
Directory Properties:
  stable/9/sys/   (props changed)

Modified: stable/9/sys/kern/kern_proc.c
==============================================================================
--- stable/9/sys/kern/kern_proc.c	Fri Jan  6 16:46:52 2012	(r229706)
+++ stable/9/sys/kern/kern_proc.c	Fri Jan  6 16:54:16 2012	(r229707)
@@ -46,6 +46,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/lock.h>
 #include <sys/loginclass.h>
 #include <sys/malloc.h>
+#include <sys/mman.h>
 #include <sys/mount.h>
 #include <sys/mutex.h>
 #include <sys/proc.h>
@@ -75,6 +76,7 @@ __FBSDID("$FreeBSD$");
 #include <vm/pmap.h>
 #include <vm/vm_map.h>
 #include <vm/vm_object.h>
+#include <vm/vm_page.h>
 #include <vm/uma.h>
 
 #ifdef COMPAT_FREEBSD32
@@ -1710,7 +1712,8 @@ sysctl_kern_proc_vmmap(SYSCTL_HANDLER_AR
 	    entry = entry->next) {
 		vm_object_t obj, tobj, lobj;
 		vm_offset_t addr;
-		int vfslocked;
+		vm_paddr_t locked_pa;
+		int vfslocked, mincoreinfo;
 
 		if (entry->eflags & MAP_ENTRY_IS_SUB_MAP)
 			continue;
@@ -1728,8 +1731,14 @@ sysctl_kern_proc_vmmap(SYSCTL_HANDLER_AR
 		kve->kve_resident = 0;
 		addr = entry->start;
 		while (addr < entry->end) {
-			if (pmap_extract(map->pmap, addr))
+			locked_pa = 0;
+			mincoreinfo = pmap_mincore(map->pmap, addr, &locked_pa);
+			if (locked_pa != 0)
+				vm_page_unlock(PHYS_TO_VM_PAGE(locked_pa));
+			if (mincoreinfo & MINCORE_INCORE)
 				kve->kve_resident++;
+			if (mincoreinfo & MINCORE_SUPER)
+				kve->kve_flags |= KVME_FLAG_SUPER;
 			addr += PAGE_SIZE;
 		}
 

Modified: stable/9/sys/sys/user.h
==============================================================================
--- stable/9/sys/sys/user.h	Fri Jan  6 16:46:52 2012	(r229706)
+++ stable/9/sys/sys/user.h	Fri Jan  6 16:54:16 2012	(r229707)
@@ -412,6 +412,7 @@ struct kinfo_file {
 #define	KVME_FLAG_COW		0x00000001
 #define	KVME_FLAG_NEEDS_COPY	0x00000002
 #define	KVME_FLAG_NOCOREDUMP	0x00000004
+#define	KVME_FLAG_SUPER		0x00000008
 
 #if defined(__amd64__)
 #define	KINFO_OVMENTRY_SIZE	1168



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201201061654.q06GsGKb098348>