[Midnightbsd-cvs] src [10668] trunk/lib/libkvm: sync

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Sat Jun 9 15:33:17 EDT 2018


Revision: 10668
          http://svnweb.midnightbsd.org/src/?rev=10668
Author:   laffer1
Date:     2018-06-09 15:33:16 -0400 (Sat, 09 Jun 2018)
Log Message:
-----------
sync

Modified Paths:
--------------
    trunk/lib/libkvm/Makefile
    trunk/lib/libkvm/kvm.3
    trunk/lib/libkvm/kvm.c
    trunk/lib/libkvm/kvm.h
    trunk/lib/libkvm/kvm_amd64.c
    trunk/lib/libkvm/kvm_arm.c
    trunk/lib/libkvm/kvm_cptime.c
    trunk/lib/libkvm/kvm_file.c
    trunk/lib/libkvm/kvm_getcptime.3
    trunk/lib/libkvm/kvm_geterr.3
    trunk/lib/libkvm/kvm_getfiles.3
    trunk/lib/libkvm/kvm_getloadavg.3
    trunk/lib/libkvm/kvm_getloadavg.c
    trunk/lib/libkvm/kvm_getpcpu.3
    trunk/lib/libkvm/kvm_getprocs.3
    trunk/lib/libkvm/kvm_getswapinfo.3
    trunk/lib/libkvm/kvm_getswapinfo.c
    trunk/lib/libkvm/kvm_i386.c
    trunk/lib/libkvm/kvm_ia64.c
    trunk/lib/libkvm/kvm_minidump_amd64.c
    trunk/lib/libkvm/kvm_minidump_arm.c
    trunk/lib/libkvm/kvm_minidump_i386.c
    trunk/lib/libkvm/kvm_minidump_mips.c
    trunk/lib/libkvm/kvm_mips.c
    trunk/lib/libkvm/kvm_nlist.3
    trunk/lib/libkvm/kvm_open.3
    trunk/lib/libkvm/kvm_pcpu.c
    trunk/lib/libkvm/kvm_powerpc.c
    trunk/lib/libkvm/kvm_powerpc64.c
    trunk/lib/libkvm/kvm_private.h
    trunk/lib/libkvm/kvm_proc.c
    trunk/lib/libkvm/kvm_read.3
    trunk/lib/libkvm/kvm_sparc.c
    trunk/lib/libkvm/kvm_sparc64.c
    trunk/lib/libkvm/kvm_vnet.c

Property Changed:
----------------
    trunk/lib/libkvm/kvm.3
    trunk/lib/libkvm/kvm_getcptime.3
    trunk/lib/libkvm/kvm_geterr.3
    trunk/lib/libkvm/kvm_getfiles.3
    trunk/lib/libkvm/kvm_getloadavg.3
    trunk/lib/libkvm/kvm_getpcpu.3
    trunk/lib/libkvm/kvm_getprocs.3
    trunk/lib/libkvm/kvm_getswapinfo.3
    trunk/lib/libkvm/kvm_nlist.3
    trunk/lib/libkvm/kvm_open.3
    trunk/lib/libkvm/kvm_read.3

Modified: trunk/lib/libkvm/Makefile
===================================================================
--- trunk/lib/libkvm/Makefile	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/Makefile	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,8 +1,10 @@
+# $MidnightBSD$
 #	@(#)Makefile	8.1 (Berkeley) 6/4/93
-# $FreeBSD$
+# $FreeBSD: stable/10/lib/libkvm/Makefile 319012 2017-05-27 23:26:10Z ngie $
 
 LIB=	kvm
 SHLIBDIR?= /lib
+SHLIB_MAJOR=	6
 CFLAGS+=-DLIBC_SCCS -I${.CURDIR}
 
 .if exists(${.CURDIR}/kvm_${MACHINE_ARCH}.c)
@@ -25,10 +27,18 @@
 	kvm_getpcpu.3 kvm_getprocs.3 kvm_getswapinfo.3 kvm_nlist.3 kvm_open.3 \
 	kvm_read.3
 
-MLINKS+=kvm_getpcpu.3 kvm_getmaxcpu.3
-MLINKS+=kvm_getpcpu.3 kvm_dpcpu_setcpu.3
+MLINKS+=kvm_getpcpu.3 kvm_getmaxcpu.3 \
+	kvm_getpcpu.3 kvm_dpcpu_setcpu.3 \
+	kvm_getpcpu.3 kvm_read_zpcpu.3 \
+	kvm_getpcpu.3 kvm_counter_u64_fetch.3
 MLINKS+=kvm_getprocs.3 kvm_getargv.3 kvm_getprocs.3 kvm_getenvv.3
 MLINKS+=kvm_open.3 kvm_close.3 kvm_open.3 kvm_openfiles.3
 MLINKS+=kvm_read.3 kvm_write.3
 
+.include <bsd.own.mk>
+
+.if ${MK_TESTS} != "no"
+SUBDIR+=	tests
+.endif
+
 .include <bsd.lib.mk>

Modified: trunk/lib/libkvm/kvm.3
===================================================================
--- trunk/lib/libkvm/kvm.3	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm.3	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,3 +1,4 @@
+.\" $MidnightBSD$
 .\" Copyright (c) 1992, 1993
 .\"	The Regents of the University of California.  All rights reserved.
 .\"
@@ -30,7 +31,7 @@
 .\" SUCH DAMAGE.
 .\"
 .\"     @(#)kvm.3	8.1 (Berkeley) 6/4/93
-.\" $FreeBSD$
+.\" $FreeBSD: stable/10/lib/libkvm/kvm.3 207187 2010-04-25 12:50:30Z jilles $
 .\"
 .Dd April 25, 2010
 .Dt KVM 3


Property changes on: trunk/lib/libkvm/kvm.3
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+MidnightBSD=%H
\ No newline at end of property
Modified: trunk/lib/libkvm/kvm.c
===================================================================
--- trunk/lib/libkvm/kvm.c	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm.c	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,3 +1,4 @@
+/* $MidnightBSD$ */
 /*-
  * Copyright (c) 1989, 1992, 1993
  *	The Regents of the University of California.  All rights reserved.
@@ -32,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: stable/10/lib/libkvm/kvm.c 316072 2017-03-28 06:05:26Z ngie $");
 
 #if defined(LIBC_SCCS) && !defined(lint)
 #if 0
@@ -76,9 +77,14 @@
 /* from src/lib/libc/gen/nlist.c */
 int __fdnlist(int, struct nlist *);
 
+static char _kd_is_null[] = "";
+
 char *
 kvm_geterr(kvm_t *kd)
 {
+
+	if (kd == NULL)
+		return (_kd_is_null);
 	return (kd->errbuf);
 }
 
@@ -198,8 +204,10 @@
 			return (kd);
 		}
 	}
+
 	/*
-	 * This is a crash dump.
+	 * This is either a crash dump or a remote live system with its physical
+	 * memory fully accessible via a special device.
 	 * Initialize the virtual address translation machinery,
 	 * but first setup the namelist fd.
 	 */
@@ -207,8 +215,11 @@
 		_kvm_syserr(kd, kd->program, "%s", uf);
 		goto failed;
 	}
-	if (strncmp(mf, _PATH_FWMEM, strlen(_PATH_FWMEM)) == 0)
+	if (strncmp(mf, _PATH_FWMEM, strlen(_PATH_FWMEM)) == 0 ||
+	    strncmp(mf, _PATH_DEVVMM, strlen(_PATH_DEVVMM)) == 0) {
 		kd->rawdump = 1;
+		kd->writable = 1;
+	}
 	if (_kvm_initvtop(kd) < 0)
 		goto failed;
 	return (kd);
@@ -219,7 +230,7 @@
 	if (errout != 0)
 		strlcpy(errout, kd->errbuf, _POSIX2_LINE_MAX);
 	(void)kvm_close(kd);
-	return (0);
+	return (NULL);
 }
 
 kvm_t *
@@ -230,7 +241,7 @@
 
 	if ((kd = calloc(1, sizeof(*kd))) == NULL) {
 		(void)strlcpy(errout, strerror(errno), _POSIX2_LINE_MAX);
-		return (0);
+		return (NULL);
 	}
 	kd->program = 0;
 	return (_kvm_open(kd, uf, mf, flag, errout));
@@ -246,7 +257,7 @@
 		if (errstr != NULL)
 			(void)fprintf(stderr, "%s: %s\n",
 				      errstr, strerror(errno));
-		return (0);
+		return (NULL);
 	}
 	kd->program = errstr;
 	return (_kvm_open(kd, uf, mf, flag, NULL));
@@ -257,6 +268,10 @@
 {
 	int error = 0;
 
+	if (kd == NULL) {
+		errno = EINVAL;
+		return (-1);
+	}
 	if (kd->pmfd >= 0)
 		error |= close(kd->pmfd);
 	if (kd->vmfd >= 0)
@@ -275,7 +290,7 @@
 		free((void *)kd->argv);
 	free((void *)kd);
 
-	return (0);
+	return (error);
 }
 
 /*
@@ -557,7 +572,16 @@
 kvm_write(kvm_t *kd, u_long kva, const void *buf, size_t len)
 {
 	int cc;
+	ssize_t cw;
+	off_t pa;
+	const char *cp;
 
+	if (!ISALIVE(kd) && !kd->writable) {
+		_kvm_err(kd, kd->program,
+		    "kvm_write not implemented for dead kernels");
+		return (-1);
+	}
+
 	if (ISALIVE(kd)) {
 		/*
 		 * Just like kvm_read, only we write.
@@ -574,10 +598,36 @@
 		} else if ((size_t)cc < len)
 			_kvm_err(kd, kd->program, "short write");
 		return (cc);
-	} else {
-		_kvm_err(kd, kd->program,
-		    "kvm_write not implemented for dead kernels");
-		return (-1);
 	}
-	/* NOTREACHED */
+
+	cp = buf;
+	while (len > 0) {
+		cc = _kvm_kvatop(kd, kva, &pa);
+		if (cc == 0)
+			return (-1);
+		if (cc > (ssize_t)len)
+			cc = len;
+		errno = 0;
+		if (lseek(kd->pmfd, pa, 0) == -1 && errno != 0) {
+			_kvm_syserr(kd, 0, _PATH_MEM);
+			break;
+		}
+		cw = write(kd->pmfd, cp, cc);
+		if (cw < 0) {
+			_kvm_syserr(kd, kd->program, "kvm_write");
+			break;
+		}
+		/*
+		 * If ka_kvatop returns a bogus value or our core file is
+		 * truncated, we might wind up seeking beyond the end of the
+		 * core file in which case the read will return 0 (EOF).
+		 */
+		if (cw == 0)
+			break;
+		cp += cw;
+		kva += cw;
+		len -= cw;
+	}
+
+	return (cp - (const char *)buf);
 }

Modified: trunk/lib/libkvm/kvm.h
===================================================================
--- trunk/lib/libkvm/kvm.h	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm.h	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,3 +1,4 @@
+/* $MidnightBSD$ */
 /*-
  * Copyright (c) 1989, 1993
  *	The Regents of the University of California.  All rights reserved.
@@ -27,7 +28,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)kvm.h	8.1 (Berkeley) 6/2/93
- * $FreeBSD$
+ * $FreeBSD: stable/10/lib/libkvm/kvm.h 312253 2017-01-16 03:52:20Z pfg $
  */
 
 #ifndef _KVM_H_
@@ -34,7 +35,7 @@
 #define	_KVM_H_
 
 #include <sys/cdefs.h>
-#include <sys/_types.h>
+#include <sys/types.h>
 #include <nlist.h>
 
 /* Default version symbol. */
@@ -58,11 +59,11 @@
 
 struct kvm_swap {
 	char	ksw_devname[32];
-	int	ksw_used;
-	int	ksw_total;
+	u_int	ksw_used;
+	u_int	ksw_total;
 	int	ksw_flags;
-	int	ksw_reserved1;
-	int	ksw_reserved2;
+	u_int	ksw_reserved1;
+	u_int	ksw_reserved2;
 };
 
 #define SWIF_DEV_PREFIX	0x0002
@@ -77,7 +78,9 @@
 char	 *kvm_getfiles(kvm_t *, int, int, int *);
 int	  kvm_getloadavg(kvm_t *, double [], int);
 int	  kvm_getmaxcpu(kvm_t *);
+int	  kvm_getncpus(kvm_t *);
 void	 *kvm_getpcpu(kvm_t *, int);
+uint64_t  kvm_counter_u64_fetch(kvm_t *, u_long);
 struct kinfo_proc *
 	  kvm_getprocs(kvm_t *, int, int, int *);
 int	  kvm_getswapinfo(kvm_t *, struct kvm_swap *, int, int);
@@ -87,8 +90,7 @@
 kvm_t	 *kvm_openfiles
 	    (const char *, const char *, const char *, int, char *);
 ssize_t	  kvm_read(kvm_t *, unsigned long, void *, size_t);
-ssize_t	  kvm_uread
-	    (kvm_t *, const struct kinfo_proc *, unsigned long, char *, size_t);
+ssize_t	  kvm_read_zpcpu(kvm_t *, unsigned long, void *, size_t, int);
 ssize_t	  kvm_write(kvm_t *, unsigned long, const void *, size_t);
 __END_DECLS
 

Modified: trunk/lib/libkvm/kvm_amd64.c
===================================================================
--- trunk/lib/libkvm/kvm_amd64.c	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm_amd64.c	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,3 +1,4 @@
+/* $MidnightBSD$ */
 /*-
  * Copyright (c) 1989, 1992, 1993
  *	The Regents of the University of California.  All rights reserved.
@@ -32,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: stable/10/lib/libkvm/kvm_amd64.c 299649 2016-05-13 09:49:52Z ngie $");
 
 #if defined(LIBC_SCCS) && !defined(lint)
 #if 0
@@ -200,6 +201,7 @@
 	PML4 = _kvm_malloc(kd, PAGE_SIZE);
 	if (kvm_read(kd, pa, PML4, PAGE_SIZE) != PAGE_SIZE) {
 		_kvm_err(kd, kd->program, "cannot read KPML4phys");
+		free(PML4);
 		return (-1);
 	}
 	kd->vmst->PML4 = PML4;

Modified: trunk/lib/libkvm/kvm_arm.c
===================================================================
--- trunk/lib/libkvm/kvm_arm.c	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm_arm.c	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,3 +1,4 @@
+/* $MidnightBSD$ */
 /*-
  * Copyright (c) 2005 Olivier Houchard
  * Copyright (c) 1989, 1992, 1993
@@ -36,7 +37,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: stable/10/lib/libkvm/kvm_arm.c 273828 2014-10-29 16:36:08Z andrew $");
 
 #include <sys/param.h>
 #include <sys/elf32.h>
@@ -128,8 +129,10 @@
 	u_long kernbase, physaddr, pa;
 	pd_entry_t *l1pt;
 	Elf32_Ehdr *ehdr;
+	Elf32_Phdr *phdr;
 	size_t hdrsz;
 	char minihdr[8];
+	int found, i;
 
 	if (!kd->rawdump) {
 		if (pread(kd->pmfd, &minihdr, 8, 0) == 8) {
@@ -154,19 +157,33 @@
 	hdrsz = ehdr->e_phoff + ehdr->e_phentsize * ehdr->e_phnum;
 	if (_kvm_maphdrs(kd, hdrsz) == -1)
 		return (-1);
-	nl[0].n_name = "kernbase";
+
+	phdr = (Elf32_Phdr *)((uint8_t *)ehdr + ehdr->e_phoff);
+	found = 0;
+	for (i = 0; i < ehdr->e_phnum; i++) {
+		if (phdr[i].p_type == PT_DUMP_DELTA) {
+			kernbase = phdr[i].p_vaddr;
+			physaddr = phdr[i].p_paddr;
+			found = 1;
+			break;
+		}
+	}
+
 	nl[1].n_name = NULL;
-	if (kvm_nlist(kd, nl) != 0)
-		kernbase = KERNBASE;
-	else
-		kernbase = nl[0].n_value;
+	if (!found) {
+		nl[0].n_name = "kernbase";
+		if (kvm_nlist(kd, nl) != 0)
+			kernbase = KERNBASE;
+		else
+			kernbase = nl[0].n_value;
 
-	nl[0].n_name = "physaddr";
-	if (kvm_nlist(kd, nl) != 0) {
-		_kvm_err(kd, kd->program, "couldn't get phys addr");
-		return (-1);
+		nl[0].n_name = "physaddr";
+		if (kvm_nlist(kd, nl) != 0) {
+			_kvm_err(kd, kd->program, "couldn't get phys addr");
+			return (-1);
+		}
+		physaddr = nl[0].n_value;
 	}
-	physaddr = nl[0].n_value;
 	nl[0].n_name = "kernel_l1pa";
 	if (kvm_nlist(kd, nl) != 0) {
 		_kvm_err(kd, kd->program, "bad namelist");

Modified: trunk/lib/libkvm/kvm_cptime.c
===================================================================
--- trunk/lib/libkvm/kvm_cptime.c	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm_cptime.c	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,3 +1,4 @@
+/* $MidnightBSD$ */
 /*-
  * Copyright (c) 2008 Yahoo!, Inc.
  * All rights reserved.
@@ -29,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: stable/10/lib/libkvm/kvm_cptime.c 217744 2011-01-23 11:08:28Z uqs $");
 
 #include <sys/param.h>
 #include <sys/pcpu.h>

Modified: trunk/lib/libkvm/kvm_file.c
===================================================================
--- trunk/lib/libkvm/kvm_file.c	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm_file.c	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,3 +1,4 @@
+/* $MidnightBSD$ */
 /*-
  * Copyright (c) 1989, 1992, 1993
  *	The Regents of the University of California.  All rights reserved.
@@ -28,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: stable/10/lib/libkvm/kvm_file.c 217744 2011-01-23 11:08:28Z uqs $");
 
 #if defined(LIBC_SCCS) && !defined(lint)
 #if 0

Modified: trunk/lib/libkvm/kvm_getcptime.3
===================================================================
--- trunk/lib/libkvm/kvm_getcptime.3	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm_getcptime.3	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,3 +1,4 @@
+.\" $MidnightBSD$
 .\" Copyright (c) 2008 Yahoo!, Inc.
 .\" All rights reserved.
 .\" Written by: John Baldwin <jhb at FreeBSD.org>
@@ -26,7 +27,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD$
+.\" $FreeBSD: stable/10/lib/libkvm/kvm_getcptime.3 181880 2008-08-19 21:30:36Z jhb $
 .\"
 .Dd August 19, 2008
 .Dt KVM_GETCPTIME 3


Property changes on: trunk/lib/libkvm/kvm_getcptime.3
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+MidnightBSD=%H
\ No newline at end of property
Modified: trunk/lib/libkvm/kvm_geterr.3
===================================================================
--- trunk/lib/libkvm/kvm_geterr.3	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm_geterr.3	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,3 +1,4 @@
+.\" $MidnightBSD$
 .\" Copyright (c) 1992, 1993
 .\"	The Regents of the University of California.  All rights reserved.
 .\"
@@ -30,9 +31,9 @@
 .\" SUCH DAMAGE.
 .\"
 .\"     @(#)kvm_geterr.3	8.1 (Berkeley) 6/4/93
-.\" $FreeBSD$
+.\" $FreeBSD: stable/10/lib/libkvm/kvm_geterr.3 316072 2017-03-28 06:05:26Z ngie $
 .\"
-.Dd June 4, 1993
+.Dd March 21, 2017
 .Dt KVM_GETERR 3
 .Os
 .Sh NAME
@@ -54,6 +55,15 @@
 The string returned is stored in memory owned by
 .Xr kvm 3
 so the message should be copied out and saved elsewhere if necessary.
+.Sh RETURN VALUES
+The function
+.Fn kvm_geterr
+will return "" if
+.Fa kd
+is
+.Dv NULL
+or an error has not been captured for
+.Fa kd .
 .Sh SEE ALSO
 .Xr kvm 3 ,
 .Xr kvm_close 3 ,


Property changes on: trunk/lib/libkvm/kvm_geterr.3
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+MidnightBSD=%H
\ No newline at end of property
Modified: trunk/lib/libkvm/kvm_getfiles.3
===================================================================
--- trunk/lib/libkvm/kvm_getfiles.3	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm_getfiles.3	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,3 +1,4 @@
+.\" $MidnightBSD$
 .\" Copyright (c) 1992, 1993
 .\"	The Regents of the University of California.  All rights reserved.
 .\"
@@ -30,7 +31,7 @@
 .\" SUCH DAMAGE.
 .\"
 .\"     @(#)kvm_getfiles.3	8.2 (Berkeley) 4/19/94
-.\" $FreeBSD$
+.\" $FreeBSD: stable/10/lib/libkvm/kvm_getfiles.3 165888 2007-01-08 17:35:36Z imp $
 .\"
 .Dd April 19, 1994
 .Dt KVM_GETFILES 3


Property changes on: trunk/lib/libkvm/kvm_getfiles.3
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+MidnightBSD=%H
\ No newline at end of property
Modified: trunk/lib/libkvm/kvm_getloadavg.3
===================================================================
--- trunk/lib/libkvm/kvm_getloadavg.3	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm_getloadavg.3	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,3 +1,4 @@
+.\" $MidnightBSD$
 .\" Copyright (c) 1992, 1993
 .\"	The Regents of the University of California.  All rights reserved.
 .\"
@@ -26,7 +27,7 @@
 .\" SUCH DAMAGE.
 .\"
 .\"     @(#)kvm_getloadavg.3	8.1 (Berkeley) 6/4/93
-.\" $FreeBSD$
+.\" $FreeBSD: stable/10/lib/libkvm/kvm_getloadavg.3 216756 2010-12-28 10:08:50Z uqs $
 .\"
 .Dd June 4, 1993
 .Dt KVM_GETLOADAVG 3


Property changes on: trunk/lib/libkvm/kvm_getloadavg.3
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+MidnightBSD=%H
\ No newline at end of property
Modified: trunk/lib/libkvm/kvm_getloadavg.c
===================================================================
--- trunk/lib/libkvm/kvm_getloadavg.c	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm_getloadavg.c	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,3 +1,4 @@
+/* $MidnightBSD$ */
 /*-
  * Copyright (c) 1993
  *	The Regents of the University of California.  All rights reserved.
@@ -28,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: stable/10/lib/libkvm/kvm_getloadavg.c 217744 2011-01-23 11:08:28Z uqs $");
 
 #if defined(LIBC_SCCS) && !defined(lint)
 #if 0

Modified: trunk/lib/libkvm/kvm_getpcpu.3
===================================================================
--- trunk/lib/libkvm/kvm_getpcpu.3	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm_getpcpu.3	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,3 +1,4 @@
+.\" $MidnightBSD$
 .\" Copyright (c) 2008 Yahoo!, Inc.
 .\" All rights reserved.
 .\" Written by: John Baldwin <jhb at FreeBSD.org>
@@ -26,13 +27,13 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD$
+.\" $FreeBSD: stable/10/lib/libkvm/kvm_getpcpu.3 315786 2017-03-23 04:50:50Z ngie $
 .\"
-.Dd February 28, 2010
+.Dd March 15, 2017
 .Dt KVM_GETPCPU 3
 .Os
 .Sh NAME
-.Nm kvm_dpcpu_setcpu
+.Nm kvm_dpcpu_setcpu ,
 .Nm kvm_getmaxcpu ,
 .Nm kvm_getpcpu
 .Nd access per-CPU data
@@ -47,8 +48,14 @@
 .Fn kvm_dpcpu_setcpu "kvm_t *kd" "u_int cpu"
 .Ft int
 .Fn kvm_getmaxcpu "kvm_t *kd"
+.Ft int
+.Fn kvm_getncpus "kvm_t *kd"
 .Ft void *
 .Fn kvm_getpcpu "kvm_t *kd" "int cpu"
+.Ft ssize_t
+.Fn kvm_read_zpcpu "kvm_t *kd" "u_long base" "void *buf" "size_t size" "int cpu"
+.Ft uint64_t
+.Fn kvm_counter_u64_fetch "kvm_t *kd" "u_long base"
 .Sh DESCRIPTION
 The
 .Fn kvm_dpcpu_setcpu ,
@@ -69,6 +76,10 @@
 function returns the maximum number of CPUs supported by the kernel.
 .Pp
 The
+.Fn kvm_getncpus
+function returns the current number of CPUs in the kernel.
+.Pp
+The
 .Fn kvm_getpcpu
 function returns a buffer holding the per-CPU data for a single CPU.
 This buffer is described by the
@@ -83,12 +94,34 @@
 .Dv NULL
 is returned instead.
 .Pp
+The
+.Fn kvm_read_zpcpu
+function is used to obtain private per-CPU copy from a
+.Dv UMA_ZONE_PCPU
+.Xr zone 9 .
+It takes
+.Fa base
+argument as base address of an allocation and copyies
+.Fa size
+bytes into
+.Fa buf
+from the part of allocation that is private to
+.Fa cpu .
+.Pp
+The
+.Fn kvm_counter_u64_fetch
+function fetches value of a
+.Xr counter 9
+pointed by
+.Fa base
+address.
+.Pp
 Symbols for dynamic per-CPU data are accessed via
 .Xr kvm_nlist 3
 as with other symbols.
 .Nm libkvm
 maintains a notion of the "current CPU", set by
-.Xr kvm_dpcpu_setcpu ,
+.Fn kvm_dpcpu_setcpu ,
 which defaults to 0.
 Once another CPU is selected,
 .Xr kvm_nlist 3
@@ -122,9 +155,16 @@
 .Fn kvm_dpcpu_setcpu
 call returns 0; if an error occurs, it returns -1 instead.
 .Pp
+On success, the
+.Fn kvm_read_zpcpu
+function returns number of bytes copied.
+If an error occurs, it returns -1 instead.
+.Pp
 If any function encounters an error,
 then an error message may be retrieved via
 .Xr kvm_geterr 3 .
 .Sh SEE ALSO
 .Xr free 3 ,
-.Xr kvm 3
+.Xr kvm 3 ,
+.Xr counter 9 ,
+.Xr zone 9


Property changes on: trunk/lib/libkvm/kvm_getpcpu.3
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+MidnightBSD=%H
\ No newline at end of property
Modified: trunk/lib/libkvm/kvm_getprocs.3
===================================================================
--- trunk/lib/libkvm/kvm_getprocs.3	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm_getprocs.3	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,3 +1,4 @@
+.\" $MidnightBSD$
 .\" Copyright (c) 1992, 1993
 .\"	The Regents of the University of California.  All rights reserved.
 .\"
@@ -30,7 +31,7 @@
 .\" SUCH DAMAGE.
 .\"
 .\"     @(#)kvm_getprocs.3	8.1 (Berkeley) 6/4/93
-.\" $FreeBSD$
+.\" $FreeBSD: stable/10/lib/libkvm/kvm_getprocs.3 316040 2017-03-27 18:23:45Z ngie $
 .\"
 .Dd November 22, 2011
 .Dt KVM_GETPROCS 3
@@ -47,7 +48,6 @@
 .In sys/param.h
 .In sys/sysctl.h
 .In sys/user.h
-.\" .Fa kvm_t *kd
 .Ft struct kinfo_proc *
 .Fn kvm_getprocs "kvm_t *kd" "int op" "int arg" "int *cnt"
 .Ft char **


Property changes on: trunk/lib/libkvm/kvm_getprocs.3
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+MidnightBSD=%H
\ No newline at end of property
Modified: trunk/lib/libkvm/kvm_getswapinfo.3
===================================================================
--- trunk/lib/libkvm/kvm_getswapinfo.3	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm_getswapinfo.3	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,3 +1,4 @@
+.\" $MidnightBSD$
 .\" Copyright (C) 1999 Matthew Dillon. All rights reserved.
 .\"
 .\" Redistribution and use in source and binary forms, with or without
@@ -21,9 +22,9 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD$
+.\" $FreeBSD: stable/10/lib/libkvm/kvm_getswapinfo.3 312253 2017-01-16 03:52:20Z pfg $
 .\"
-.Dd January 22, 1999
+.Dd January 2, 2017
 .Dt KVM_SWAPINFO 3
 .Os
 .Sh NAME
@@ -78,9 +79,9 @@
 .It
 .Va char ksw_devname[] ;
 .It
-.Va int ksw_total ;
+.Va u_int ksw_total ;
 .It
-.Va int ksw_used ;
+.Va u_int ksw_used ;
 .It
 .Va int ksw_flags ;
 .El


Property changes on: trunk/lib/libkvm/kvm_getswapinfo.3
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+MidnightBSD=%H
\ No newline at end of property
Modified: trunk/lib/libkvm/kvm_getswapinfo.c
===================================================================
--- trunk/lib/libkvm/kvm_getswapinfo.c	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm_getswapinfo.c	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,3 +1,4 @@
+/* $MidnightBSD$ */
 /*
  * Copyright (c) 1999, Matthew Dillon.  All Rights Reserved.
  * Copyright (c) 2001, Thomas Moestl.  All Rights Reserved.
@@ -25,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: stable/10/lib/libkvm/kvm_getswapinfo.c 312253 2017-01-16 03:52:20Z pfg $");
 
 #include <sys/param.h>
 #include <sys/time.h>
@@ -112,7 +113,8 @@
 kvm_getswapinfo_kvm(kvm_t *kd, struct kvm_swap *swap_ary, int swap_max,
     int flags)
 {
-	int i, ttl;
+	int i;
+	swblk_t ttl;
 	TAILQ_HEAD(, swdevt) swtailq;
 	struct swdevt *sp, swinfo;
 	struct kvm_swap tot;
@@ -157,7 +159,8 @@
 kvm_getswapinfo_sysctl(kvm_t *kd, struct kvm_swap *swap_ary, int swap_max,
     int flags)
 {
-	int ti, ttl;
+	int ti;
+	swblk_t ttl;
 	size_t mibi, len;
 	int soid[SWI_MAXMIB];
 	struct xswdev xsd;

Modified: trunk/lib/libkvm/kvm_i386.c
===================================================================
--- trunk/lib/libkvm/kvm_i386.c	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm_i386.c	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,3 +1,4 @@
+/* $MidnightBSD$ */
 /*-
  * Copyright (c) 1989, 1992, 1993
  *	The Regents of the University of California.  All rights reserved.
@@ -32,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: stable/10/lib/libkvm/kvm_i386.c 240301 2012-09-10 08:16:45Z kevlo $");
 
 #if defined(LIBC_SCCS) && !defined(lint)
 #if 0
@@ -238,7 +239,6 @@
 			return (-1);
 		}
 		kd->vmst->PTD = PTD;
-		return (0);
 		kd->vmst->pae = 0;
 	}
 	return (0);

Modified: trunk/lib/libkvm/kvm_ia64.c
===================================================================
--- trunk/lib/libkvm/kvm_ia64.c	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm_ia64.c	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,4 +1,5 @@
-/* $FreeBSD$ */
+/* $MidnightBSD$ */
+/* $FreeBSD: stable/10/lib/libkvm/kvm_ia64.c 269449 2014-08-02 22:25:24Z marcel $ */
 /*	$NetBSD: kvm_alpha.c,v 1.7.2.1 1997/11/02 20:34:26 mellon Exp $	*/
 
 /*
@@ -32,12 +33,21 @@
 #include <sys/elf64.h>
 #include <sys/mman.h>
 
+#ifndef CROSS_LIBKVM
 #include <machine/atomic.h>
 #include <machine/bootinfo.h>
+#include <machine/elf.h>
 #include <machine/pte.h>
+#else
+#include "../../sys/ia64/include/atomic.h"
+#include "../../sys/ia64/include/bootinfo.h"
+#include "../../sys/ia64/include/elf.h"
+#include "../../sys/ia64/include/pte.h"
+#endif
 
 #include <kvm.h>
 #include <limits.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <unistd.h>
 
@@ -55,6 +65,8 @@
 #define	PBVM_BASE		0x9ffc000000000000UL
 #define	PBVM_PGSZ		(64 * 1024)
 
+typedef size_t (a2p_f)(kvm_t *, uint64_t, off_t *);
+
 struct vmstate {
 	void	*mmapbase;
 	size_t	mmapsize;
@@ -62,6 +74,7 @@
 	u_long	kptdir;
 	u_long	*pbvm_pgtbl;
 	u_int	pbvm_pgtblsz;
+	a2p_f	*kvatop;
 };
 
 /*
@@ -70,7 +83,7 @@
  * set of headers.
  */
 static int
-_kvm_maphdrs(kvm_t *kd, size_t sz)
+ia64_maphdrs(kvm_t *kd, size_t sz)
 {
 	struct vmstate *vm = kd->vmst;
 
@@ -91,38 +104,103 @@
 }
 
 /*
- * Translate a physical memory address to a file-offset in the crash-dump.
+ * Physical core support.
  */
+
 static size_t
-_kvm_pa2off(kvm_t *kd, uint64_t pa, off_t *ofs, size_t pgsz)
+phys_addr2off(kvm_t *kd, uint64_t pa, off_t *ofs, size_t pgsz)
 {
-	Elf64_Ehdr *e = kd->vmst->mmapbase;
-	Elf64_Phdr *p = (Elf64_Phdr*)((char*)e + e->e_phoff);
-	int n = e->e_phnum;
+	Elf64_Ehdr *e;
+	Elf64_Phdr *p;
+	int n;
 
-	if (pa != REGION_ADDR(pa)) {
-		_kvm_err(kd, kd->program, "internal error");
-		return (0);
-	}
+	if (pa != REGION_ADDR(pa))
+		goto fail;
 
+	e = (Elf64_Ehdr *)(kd->vmst->mmapbase);
+	n = e->e_phnum;
+	p = (Elf64_Phdr *)(void *)((uintptr_t)(void *)e + e->e_phoff);
 	while (n && (pa < p->p_paddr || pa >= p->p_paddr + p->p_memsz))
 		p++, n--;
 	if (n == 0)
-		return (0);
+		goto fail;
 
 	*ofs = (pa - p->p_paddr) + p->p_offset;
 	if (pgsz == 0)
 		return (p->p_memsz - (pa - p->p_paddr));
 	return (pgsz - ((size_t)pa & (pgsz - 1)));
+
+ fail:
+	_kvm_err(kd, kd->program, "invalid physical address %#jx",
+	    (uintmax_t)pa);
+	return (0);
 }
 
+static size_t
+phys_kvatop(kvm_t *kd, uint64_t va, off_t *ofs)
+{
+	struct ia64_lpte pte;
+	uint64_t pa, pgaddr, pt0addr, pt1addr;
+	size_t pgno, pgsz, pt0no, pt1no;
+
+	if (va >= REGION_BASE(6)) {
+		/* Regions 6 and 7: direct mapped. */
+		pa = REGION_ADDR(va);
+		return (phys_addr2off(kd, pa, ofs, 0));
+	} else if (va >= REGION_BASE(5)) {
+		/* Region 5: Kernel Virtual Memory. */
+		va = REGION_ADDR(va);
+		pgsz = kd->vmst->pagesize;
+		pt0no = KPTE_DIR0_INDEX(va, pgsz);
+		pt1no = KPTE_DIR1_INDEX(va, pgsz);
+		pgno = KPTE_PTE_INDEX(va, pgsz);
+		if (pt0no >= NKPTEDIR(pgsz))
+			goto fail;
+		pt0addr = kd->vmst->kptdir + (pt0no << 3);
+		if (kvm_read(kd, pt0addr, &pt1addr, 8) != 8)
+			goto fail;
+		if (pt1addr == 0)
+			goto fail;
+		pt1addr += pt1no << 3;
+		if (kvm_read(kd, pt1addr, &pgaddr, 8) != 8)
+			goto fail;
+		if (pgaddr == 0)
+			goto fail;
+		pgaddr += pgno * sizeof(pte);
+		if (kvm_read(kd, pgaddr, &pte, sizeof(pte)) != sizeof(pte))
+			goto fail;
+		if (!(pte.pte & PTE_PRESENT))
+			goto fail;
+		pa = (pte.pte & PTE_PPN_MASK) + (va & (pgsz - 1));
+		return (phys_addr2off(kd, pa, ofs, pgsz));
+	} else if (va >= PBVM_BASE) {
+		/* Region 4: Pre-Boot Virtual Memory (PBVM). */
+		va -= PBVM_BASE;
+		pgsz = PBVM_PGSZ;
+		pt0no = va / pgsz;
+		if (pt0no >= (kd->vmst->pbvm_pgtblsz >> 3))
+			goto fail;
+		pt0addr = kd->vmst->pbvm_pgtbl[pt0no];
+		if (!(pt0addr & PTE_PRESENT))
+			goto fail;
+		pa = (pt0addr & PTE_PPN_MASK) + va % pgsz;
+		return (phys_addr2off(kd, pa, ofs, pgsz));
+	}
+
+ fail:
+	_kvm_err(kd, kd->program, "invalid kernel virtual address %#jx",
+	    (uintmax_t)va);
+	*ofs = -1;
+	return (0);
+}
+
 static ssize_t
-_kvm_read_phys(kvm_t *kd, uint64_t pa, void *buf, size_t bufsz)
+phys_read(kvm_t *kd, uint64_t pa, void *buf, size_t bufsz)
 {
 	off_t ofs;
 	size_t sz;
 
-	sz = _kvm_pa2off(kd, pa, &ofs, 0);
+	sz = phys_addr2off(kd, pa, &ofs, 0);
 	if (sz < bufsz)
 		return ((ssize_t)sz);
 
@@ -131,6 +209,50 @@
 	return (read(kd->pmfd, buf, bufsz));
 }
 
+/*
+ * Virtual core support (aka minidump).
+ */
+
+static size_t
+virt_addr2off(kvm_t *kd, uint64_t va, off_t *ofs, size_t pgsz)
+{
+	Elf64_Ehdr *e;
+	Elf64_Phdr *p;
+	int n;
+
+	if (va < REGION_BASE(4))
+		goto fail;
+
+	e = (Elf64_Ehdr *)(kd->vmst->mmapbase);
+	n = e->e_phnum;
+	p = (Elf64_Phdr *)(void *)((uintptr_t)(void *)e + e->e_phoff); 
+	while (n && (va < p->p_vaddr || va >= p->p_vaddr + p->p_memsz))
+		p++, n--;
+	if (n == 0)
+		goto fail;
+
+	*ofs = (va - p->p_vaddr) + p->p_offset;
+	if (pgsz == 0)
+		return (p->p_memsz - (va - p->p_vaddr));
+	return (pgsz - ((size_t)va & (pgsz - 1)));
+
+ fail:
+	_kvm_err(kd, kd->program, "invalid virtual address %#jx",
+	    (uintmax_t)va);
+	return (0);
+}
+
+static size_t
+virt_kvatop(kvm_t *kd, uint64_t va, off_t *ofs)
+{
+
+	return (virt_addr2off(kd, va, ofs, 0));
+}
+
+/*
+ * KVM architecture support functions.
+ */
+
 void
 _kvm_freevtop(kvm_t *kd)
 {
@@ -160,27 +282,37 @@
 		return (-1);
 	}
 
+#ifndef CROSS_LIBKVM
 	kd->vmst->pagesize = getpagesize();
+#else
+	kd->vmst->pagesize = 8192;
+#endif
 
-	if (_kvm_maphdrs(kd, sizeof(Elf64_Ehdr)) == -1)
+	if (ia64_maphdrs(kd, sizeof(Elf64_Ehdr)) == -1)
 		return (-1);
 
 	ehdr = kd->vmst->mmapbase;
 	hdrsz = ehdr->e_phoff + ehdr->e_phentsize * ehdr->e_phnum;
-	if (_kvm_maphdrs(kd, hdrsz) == -1)
+	if (ia64_maphdrs(kd, hdrsz) == -1)
 		return (-1);
 
+	kd->vmst->kvatop = (ehdr->e_flags & EF_IA_64_ABSOLUTE) ?
+	    phys_kvatop : virt_kvatop;
+
 	/*
 	 * Load the PBVM page table. We need this to resolve PBVM addresses.
 	 * The PBVM page table is obtained from the bootinfo structure, of
-	 * which the physical address is given to us in e_entry. If e_entry
-	 * is 0, then this is assumed to be a pre-PBVM kernel.
+	 * which the address is given to us in e_entry. If e_entry is 0, then
+	 * this is assumed to be a pre-PBVM kernel.
+	 * Note that the address of the bootinfo structure is either physical
+	 * or virtual, depending on whether the core is physical or virtual.
 	 */
-	if (ehdr->e_entry != 0) {
-		sz = _kvm_read_phys(kd, ehdr->e_entry, &bi, sizeof(bi));
+	if (ehdr->e_entry != 0 && (ehdr->e_flags & EF_IA_64_ABSOLUTE) != 0) {
+		sz = phys_read(kd, ehdr->e_entry, &bi, sizeof(bi));
 		if (sz != sizeof(bi)) {
 			_kvm_err(kd, kd->program,
-			    "cannot read bootinfo from PA %#lx", ehdr->e_entry);
+			    "cannot read bootinfo at physical address %#jx",
+			    (uintmax_t)ehdr->e_entry);
 			return (-1);
 		}
 		if (bi.bi_magic != BOOTINFO_MAGIC) {
@@ -193,12 +325,12 @@
 			return (-1);
 		}
 		kd->vmst->pbvm_pgtblsz = bi.bi_pbvm_pgtblsz;
-		sz = _kvm_read_phys(kd, bi.bi_pbvm_pgtbl, kd->vmst->pbvm_pgtbl,
+		sz = phys_read(kd, bi.bi_pbvm_pgtbl, kd->vmst->pbvm_pgtbl,
 		    bi.bi_pbvm_pgtblsz);
 		if (sz != bi.bi_pbvm_pgtblsz) {
 			_kvm_err(kd, kd->program,
-			    "cannot read page table from PA %#lx",
-			    bi.bi_pbvm_pgtbl);
+			    "cannot read page table at physical address %#jx",
+			    (uintmax_t)bi.bi_pbvm_pgtbl);
 			return (-1);
 		}
 	} else {
@@ -225,7 +357,7 @@
 		return (-1);
 	}
 
-	if (va < REGION_BASE(6)) {
+	if (va == REGION_BASE(5)) {
 		_kvm_err(kd, kd->program, "kptdir is itself virtual");
 		return (-1);
 	}
@@ -237,56 +369,8 @@
 int
 _kvm_kvatop(kvm_t *kd, u_long va, off_t *ofs)
 {
-	struct ia64_lpte pte;
-	uint64_t pa, pgaddr, pt0addr, pt1addr;
-	size_t pgno, pgsz, pt0no, pt1no;
+	size_t sz;
 
-	if (va >= REGION_BASE(6)) {
-		/* Regions 6 and 7: direct mapped. */
-		pa = REGION_ADDR(va);
-		return (_kvm_pa2off(kd, pa, ofs, 0));
-	} else if (va >= REGION_BASE(5)) {
-		/* Region 5: Kernel Virtual Memory. */
-		va = REGION_ADDR(va);
-		pgsz = kd->vmst->pagesize;
-		pt0no = KPTE_DIR0_INDEX(va, pgsz);
-		pt1no = KPTE_DIR1_INDEX(va, pgsz);
-		pgno = KPTE_PTE_INDEX(va, pgsz);
-		if (pt0no >= NKPTEDIR(pgsz))
-			goto fail;
-		pt0addr = kd->vmst->kptdir + (pt0no << 3);
-		if (kvm_read(kd, pt0addr, &pt1addr, 8) != 8)
-			goto fail;
-		if (pt1addr == 0)
-			goto fail;
-		pt1addr += pt1no << 3;
-		if (kvm_read(kd, pt1addr, &pgaddr, 8) != 8)
-			goto fail;
-		if (pgaddr == 0)
-			goto fail;
-		pgaddr += pgno * sizeof(pte);
-		if (kvm_read(kd, pgaddr, &pte, sizeof(pte)) != sizeof(pte))
-			goto fail;
-		if (!(pte.pte & PTE_PRESENT))
-			goto fail;
-		pa = (pte.pte & PTE_PPN_MASK) + (va & (pgsz - 1));
-		return (_kvm_pa2off(kd, pa, ofs, pgsz));
-	} else if (va >= PBVM_BASE) {
-		/* Region 4: Pre-Boot Virtual Memory (PBVM). */
-		va -= PBVM_BASE;
-		pgsz = PBVM_PGSZ;
-		pt0no = va / pgsz;
-		if (pt0no >= (kd->vmst->pbvm_pgtblsz >> 3))
-			goto fail;
-		pt0addr = kd->vmst->pbvm_pgtbl[pt0no];
-		if (!(pt0addr & PTE_PRESENT))
-			goto fail;
-		pa = (pt0addr & PTE_PPN_MASK) + va % pgsz;
-		return (_kvm_pa2off(kd, pa, ofs, pgsz));
-	}
-
- fail:
-	_kvm_err(kd, kd->program, "invalid kernel virtual address");
-	*ofs = ~0UL;
-	return (0);
+	sz = kd->vmst->kvatop(kd, va, ofs);
+	return ((sz > INT_MAX) ? INT_MAX : sz);
 }

Modified: trunk/lib/libkvm/kvm_minidump_amd64.c
===================================================================
--- trunk/lib/libkvm/kvm_minidump_amd64.c	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm_minidump_amd64.c	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,3 +1,4 @@
+/* $MidnightBSD$ */
 /*-
  * Copyright (c) 2006 Peter Wemm
  *
@@ -24,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: stable/10/lib/libkvm/kvm_minidump_amd64.c 269013 2014-07-23 14:29:28Z emaste $");
 
 /*
  * AMD64 machine dependent routines for kvm and minidumps. 
@@ -214,6 +215,8 @@
 
 	if (va >= vm->hdr.kernbase) {
 		pteindex = (va - vm->hdr.kernbase) >> PAGE_SHIFT;
+		if (pteindex >= vm->hdr.pmapsize / sizeof(*vm->page_map))
+			goto invalid;
 		pte = vm->page_map[pteindex];
 		if (((u_long)pte & PG_V) == 0) {
 			_kvm_err(kd, kd->program, "_kvm_vatop: pte not valid");
@@ -264,6 +267,8 @@
 
 	if (va >= vm->hdr.kernbase) {
 		pdeindex = (va - vm->hdr.kernbase) >> PDRSHIFT;
+		if (pdeindex >= vm->hdr.pmapsize / sizeof(*vm->page_map))
+			goto invalid;
 		pde = vm->page_map[pdeindex];
 		if (((u_long)pde & PG_V) == 0) {
 			_kvm_err(kd, kd->program, "_kvm_vatop: pde not valid");

Modified: trunk/lib/libkvm/kvm_minidump_arm.c
===================================================================
--- trunk/lib/libkvm/kvm_minidump_arm.c	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm_minidump_arm.c	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,3 +1,4 @@
+/* $MidnightBSD$ */
 /*-
  * Copyright (c) 2008 Semihalf, Grzegorz Bernacki
  * Copyright (c) 2006 Peter Wemm
@@ -27,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: stable/10/lib/libkvm/kvm_minidump_arm.c 217744 2011-01-23 11:08:28Z uqs $");
 
 /*
  * ARM machine dependent routines for kvm and minidumps.

Modified: trunk/lib/libkvm/kvm_minidump_i386.c
===================================================================
--- trunk/lib/libkvm/kvm_minidump_i386.c	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm_minidump_i386.c	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,3 +1,4 @@
+/* $MidnightBSD$ */
 /*-
  * Copyright (c) 2006 Peter Wemm
  *
@@ -24,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: stable/10/lib/libkvm/kvm_minidump_i386.c 217744 2011-01-23 11:08:28Z uqs $");
 
 /*
  * AMD64 machine dependent routines for kvm and minidumps. 

Modified: trunk/lib/libkvm/kvm_minidump_mips.c
===================================================================
--- trunk/lib/libkvm/kvm_minidump_mips.c	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm_minidump_mips.c	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,3 +1,4 @@
+/* $MidnightBSD$ */
 /*-
  * Copyright (c) 2010 Oleksandr Tymoshenko 
  * Copyright (c) 2008 Semihalf, Grzegorz Bernacki
@@ -28,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: stable/10/lib/libkvm/kvm_minidump_mips.c 217744 2011-01-23 11:08:28Z uqs $");
 
 /*
  * MIPS machine dependent routines for kvm and minidumps.

Modified: trunk/lib/libkvm/kvm_mips.c
===================================================================
--- trunk/lib/libkvm/kvm_mips.c	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm_mips.c	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,3 +1,4 @@
+/* $MidnightBSD$ */
 /*-
  * Copyright (C) 2006 Bruce M. Simpson.
  * All rights reserved.
@@ -10,22 +11,18 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *	This product includes software developed by Bruce M. Simpson.
- * 4. The name of Bruce M. Simpson may not be used to endorse or promote products
- *    derived from this software without specific prior written permission.
  *
- * THIS SOFTWARE IS PROVIDED BY BRUCE M. SIMPSON ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL BRUCE M. SIMPSON BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
  */
 
 /*
@@ -33,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: stable/10/lib/libkvm/kvm_mips.c 251475 2013-06-06 21:09:27Z emaste $");
 
 #include <sys/param.h>
 #include <sys/elf32.h>

Modified: trunk/lib/libkvm/kvm_nlist.3
===================================================================
--- trunk/lib/libkvm/kvm_nlist.3	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm_nlist.3	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,3 +1,4 @@
+.\" $MidnightBSD$
 .\" Copyright (c) 1992, 1993
 .\"	The Regents of the University of California.  All rights reserved.
 .\"
@@ -30,7 +31,7 @@
 .\" SUCH DAMAGE.
 .\"
 .\"     @(#)kvm_nlist.3	8.1 (Berkeley) 6/4/93
-.\" $FreeBSD$
+.\" $FreeBSD: stable/10/lib/libkvm/kvm_nlist.3 165888 2007-01-08 17:35:36Z imp $
 .\"
 .Dd June 4, 1993
 .Dt KVM_NLIST 3


Property changes on: trunk/lib/libkvm/kvm_nlist.3
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+MidnightBSD=%H
\ No newline at end of property
Modified: trunk/lib/libkvm/kvm_open.3
===================================================================
--- trunk/lib/libkvm/kvm_open.3	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm_open.3	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,3 +1,4 @@
+.\" $MidnightBSD$
 .\" Copyright (c) 1992, 1993
 .\"	The Regents of the University of California.  All rights reserved.
 .\"
@@ -30,9 +31,9 @@
 .\" SUCH DAMAGE.
 .\"
 .\"     @(#)kvm_open.3	8.3 (Berkeley) 4/19/94
-.\" $FreeBSD$
+.\" $FreeBSD: stable/10/lib/libkvm/kvm_open.3 316070 2017-03-28 05:57:20Z ngie $
 .\"
-.Dd January 29, 2004
+.Dd March 20, 2017
 .Dt KVM_OPEN 3
 .Os
 .Sh NAME
@@ -181,10 +182,29 @@
 writes the error message into
 .Fa errbuf .
 .Pp
+.Rv -std kvm_close
+.Sh ERRORS
 The
 .Fn kvm_close
-function returns 0 on success and -1 on failure.
+function may fail and set the global variable
+.Va errno
+for any of the errors specified for
+.Xr close 2 .
+.Pp
+The
+.Fn kvm_close
+function may also fail and set
+.Va errno
+if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The value passed via
+.Fa kd
+was
+.Dv NULL .
+.El
 .Sh SEE ALSO
+.Xr close 2 ,
 .Xr open 2 ,
 .Xr kvm 3 ,
 .Xr kvm_getargv 3 ,


Property changes on: trunk/lib/libkvm/kvm_open.3
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+MidnightBSD=%H
\ No newline at end of property
Modified: trunk/lib/libkvm/kvm_pcpu.c
===================================================================
--- trunk/lib/libkvm/kvm_pcpu.c	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm_pcpu.c	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,4 +1,6 @@
+/* $MidnightBSD$ */
 /*-
+ * Copyright (c) 2013 Gleb Smirnoff <glebius at FreeBSD.org>
  * Copyright (c) 2010 Juniper Networks, Inc.
  * Copyright (c) 2009 Robert N. M. Watson
  * Copyright (c) 2009 Bjoern A. Zeeb <bz at FreeBSD.org>
@@ -36,7 +38,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: stable/10/lib/libkvm/kvm_pcpu.c 262740 2014-03-04 14:49:05Z glebius $");
 
 #include <sys/param.h>
 #include <sys/pcpu.h>
@@ -50,8 +52,12 @@
 static struct nlist kvm_pcpu_nl[] = {
 	{ .n_name = "_cpuid_to_pcpu" },
 	{ .n_name = "_mp_maxcpus" },
+	{ .n_name = "_mp_ncpus" },
 	{ .n_name = NULL },
 };
+#define	NL_CPUID_TO_PCPU	0
+#define	NL_MP_MAXCPUS		1
+#define	NL_MP_NCPUS		2
 
 /*
  * Kernel per-CPU data state.  We cache this stuff on the first
@@ -63,10 +69,8 @@
  */
 static void **pcpu_data;
 static int maxcpu;
+static int mp_ncpus;
 
-#define	NL_CPUID_TO_PCPU	0
-#define	NL_MP_MAXCPUS		1
-
 static int
 _kvm_pcpu_init(kvm_t *kd)
 {
@@ -89,6 +93,15 @@
 		_kvm_err(kd, kd->program, "cannot read mp_maxcpus");
 		return (-1);
 	}
+	if (kvm_pcpu_nl[NL_MP_NCPUS].n_value == 0) {
+		_kvm_err(kd, kd->program, "unable to find mp_ncpus");
+		return (-1);
+	}
+	if (kvm_read(kd, kvm_pcpu_nl[NL_MP_NCPUS].n_value, &mp_ncpus,
+	    sizeof(mp_ncpus)) != sizeof(mp_ncpus)) {
+		_kvm_err(kd, kd->program, "cannot read mp_ncpus");
+		return (-1);
+	}
 	len = max * sizeof(void *);
 	data = malloc(len);
 	if (data == NULL) {
@@ -161,6 +174,16 @@
 	return (maxcpu);
 }
 
+int
+kvm_getncpus(kvm_t *kd)
+{
+
+	if (mp_ncpus == 0)
+		if (_kvm_pcpu_init(kd) < 0)
+			return (-1);
+	return (mp_ncpus);
+}
+
 static int
 _kvm_dpcpu_setcpu(kvm_t *kd, u_int cpu, int report_error)
 {
@@ -289,3 +312,36 @@
 
 	return (_kvm_dpcpu_setcpu(kd, cpu, 1));
 }
+
+/*
+ * Obtain a per-CPU copy for given cpu from UMA_ZONE_PCPU allocation.
+ */
+ssize_t
+kvm_read_zpcpu(kvm_t *kd, u_long base, void *buf, size_t size, int cpu)
+{
+
+	return (kvm_read(kd, (uintptr_t)(base + sizeof(struct pcpu) * cpu),
+	    buf, size));
+}
+
+/*
+ * Fetch value of a counter(9).
+ */
+uint64_t
+kvm_counter_u64_fetch(kvm_t *kd, u_long base)
+{
+	uint64_t r, c;
+
+	if (mp_ncpus == 0)
+		if (_kvm_pcpu_init(kd) < 0)
+			return (0);
+
+	r = 0;
+	for (int i = 0; i < mp_ncpus; i++) {
+		if (kvm_read_zpcpu(kd, base, &c, sizeof(c), i) != sizeof(c))
+			return (0);
+		r += c;
+	}
+
+	return (r);
+}

Modified: trunk/lib/libkvm/kvm_powerpc.c
===================================================================
--- trunk/lib/libkvm/kvm_powerpc.c	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm_powerpc.c	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,3 +1,4 @@
+/* $MidnightBSD$ */
 /*-
  * Copyright (c) 2008, Juniper Networks, Inc.
  * All rights reserved.
@@ -27,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: stable/10/lib/libkvm/kvm_powerpc.c 217744 2011-01-23 11:08:28Z uqs $");
 
 #include <sys/param.h>
 #include <sys/endian.h>

Modified: trunk/lib/libkvm/kvm_powerpc64.c
===================================================================
--- trunk/lib/libkvm/kvm_powerpc64.c	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm_powerpc64.c	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,3 +1,4 @@
+/* $MidnightBSD$ */
 /*-
  * Copyright (c) 2008, Juniper Networks, Inc.
  * All rights reserved.
@@ -27,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: stable/10/lib/libkvm/kvm_powerpc64.c 217777 2011-01-24 11:06:40Z uqs $");
 
 #include <sys/param.h>
 #include <sys/endian.h>

Modified: trunk/lib/libkvm/kvm_private.h
===================================================================
--- trunk/lib/libkvm/kvm_private.h	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm_private.h	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,3 +1,4 @@
+/* $MidnightBSD$ */
 /*-
  * Copyright (c) 1992, 1993
  *	The Regents of the University of California.  All rights reserved.
@@ -31,7 +32,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)kvm_private.h	8.1 (Berkeley) 6/4/93
- * $FreeBSD$
+ * $FreeBSD: stable/10/lib/libkvm/kvm_private.h 312382 2017-01-18 14:14:00Z avg $
  */
 
 struct __kvm {
@@ -62,6 +63,7 @@
 	 */
 	struct vmstate *vmst;
 	int	rawdump;	/* raw dump format */
+	int	writable;	/* physical memory is writable */
 
 	int		vnet_initialized;	/* vnet fields set up */
 	uintptr_t	vnet_start;	/* start of kernel's vnet region */

Modified: trunk/lib/libkvm/kvm_proc.c
===================================================================
--- trunk/lib/libkvm/kvm_proc.c	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm_proc.c	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,3 +1,4 @@
+/* $MidnightBSD$ */
 /*-
  * Copyright (c) 1989, 1992, 1993
  *	The Regents of the University of California.  All rights reserved.
@@ -38,7 +39,7 @@
 #endif
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: stable/10/lib/libkvm/kvm_proc.c 310121 2016-12-15 16:52:17Z vangyzen $");
 
 /*
  * Proc traversal interface for kvm.  ps and w are (probably) the exclusive
@@ -424,8 +425,6 @@
 			kp->ki_pri.pri_native = mtd.td_base_pri;
 			kp->ki_lastcpu = mtd.td_lastcpu;
 			kp->ki_wchan = mtd.td_wchan;
-			if (mtd.td_name[0] != 0)
-				strlcpy(kp->ki_tdname, mtd.td_name, MAXCOMLEN);
 			kp->ki_oncpu = mtd.td_oncpu;
 			if (mtd.td_name[0] != '\0')
 				strlcpy(kp->ki_tdname, mtd.td_name, sizeof(kp->ki_tdname));
@@ -642,6 +641,7 @@
 	static char *buf, *p;
 	static char **bufp;
 	static int argc;
+	char **nbufp;
 
 	if (!ISALIVE(kd)) {
 		_kvm_err(kd, kd->program,
@@ -657,9 +657,15 @@
 			_kvm_err(kd, kd->program, "cannot allocate memory");
 			return (0);
 		}
-		buflen = nchr;
 		argc = 32;
 		bufp = malloc(sizeof(char *) * argc);
+		if (bufp == NULL) {
+			free(buf);
+			buf = NULL;
+			_kvm_err(kd, kd->program, "cannot allocate memory");
+			return (NULL);
+		}
+		buflen = nchr;
 	} else if (nchr > buflen) {
 		p = realloc(buf, nchr);
 		if (p != NULL) {
@@ -693,8 +699,10 @@
 		p += strlen(p) + 1;
 		if (i >= argc) {
 			argc += argc;
-			bufp = realloc(bufp,
-			    sizeof(char *) * argc);
+			nbufp = realloc(bufp, sizeof(char *) * argc);
+			if (nbufp == NULL)
+				return (NULL);
+			bufp = nbufp;
 		}
 	} while (p < buf + bufsz);
 	bufp[i++] = 0;

Modified: trunk/lib/libkvm/kvm_read.3
===================================================================
--- trunk/lib/libkvm/kvm_read.3	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm_read.3	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,3 +1,4 @@
+.\" $MidnightBSD$
 .\" Copyright (c) 1992, 1993
 .\"	The Regents of the University of California.  All rights reserved.
 .\"
@@ -30,7 +31,7 @@
 .\" SUCH DAMAGE.
 .\"
 .\"     @(#)kvm_read.3	8.1 (Berkeley) 6/4/93
-.\" $FreeBSD$
+.\" $FreeBSD: stable/10/lib/libkvm/kvm_read.3 165888 2007-01-08 17:35:36Z imp $
 .\"
 .Dd June 4, 1993
 .Dt KVM_READ 3


Property changes on: trunk/lib/libkvm/kvm_read.3
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+MidnightBSD=%H
\ No newline at end of property
Modified: trunk/lib/libkvm/kvm_sparc.c
===================================================================
--- trunk/lib/libkvm/kvm_sparc.c	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm_sparc.c	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,3 +1,4 @@
+/* $MidnightBSD$ */
 /*-
  * Copyright (c) 1992, 1993
  *	The Regents of the University of California.  All rights reserved.
@@ -32,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: stable/10/lib/libkvm/kvm_sparc.c 165888 2007-01-08 17:35:36Z imp $");
 
 #if defined(LIBC_SCCS) && !defined(lint)
 #if 0

Modified: trunk/lib/libkvm/kvm_sparc64.c
===================================================================
--- trunk/lib/libkvm/kvm_sparc64.c	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm_sparc64.c	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,3 +1,4 @@
+/* $MidnightBSD$ */
 /*-
  * Copyright (c) 1989, 1992, 1993
  *	The Regents of the University of California.  All rights reserved.
@@ -34,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: stable/10/lib/libkvm/kvm_sparc64.c 221869 2011-05-14 01:53:38Z attilio $");
 
 #if defined(LIBC_SCCS) && !defined(lint)
 #if 0

Modified: trunk/lib/libkvm/kvm_vnet.c
===================================================================
--- trunk/lib/libkvm/kvm_vnet.c	2018-06-09 19:32:49 UTC (rev 10667)
+++ trunk/lib/libkvm/kvm_vnet.c	2018-06-09 19:33:16 UTC (rev 10668)
@@ -1,3 +1,4 @@
+/* $MidnightBSD$ */
 /*-
  * Copyright (c) 2009 Robert N. M. Watson
  * Copyright (c) 2009 Bjoern A. Zeeb <bz at FreeBSD.org>
@@ -26,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: stable/10/lib/libkvm/kvm_vnet.c 217744 2011-01-23 11:08:28Z uqs $");
 
 #include <sys/param.h>
 



More information about the Midnightbsd-cvs mailing list