CVS commit: src/lib/libkvm

2021-07-19 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Mon Jul 19 10:30:36 UTC 2021

Modified Files:
src/lib/libkvm: kvm_proc.c

Log Message:
Match the declaration in 


To generate a diff of this commit:
cvs rdiff -u -r1.94 -r1.95 src/lib/libkvm/kvm_proc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_proc.c
diff -u src/lib/libkvm/kvm_proc.c:1.94 src/lib/libkvm/kvm_proc.c:1.95
--- src/lib/libkvm/kvm_proc.c:1.94	Wed Dec 11 15:19:27 2019
+++ src/lib/libkvm/kvm_proc.c	Mon Jul 19 06:30:36 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_proc.c,v 1.94 2019/12/11 20:19:27 ad Exp $	*/
+/*	$NetBSD: kvm_proc.c,v 1.95 2021/07/19 10:30:36 christos Exp $	*/
 
 /*-
  * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm_proc.c	8.3 (Berkeley) 9/23/93";
 #else
-__RCSID("$NetBSD: kvm_proc.c,v 1.94 2019/12/11 20:19:27 ad Exp $");
+__RCSID("$NetBSD: kvm_proc.c,v 1.95 2021/07/19 10:30:36 christos Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -159,7 +159,9 @@ struct miniproc {
  */
 struct kvm_kauth_cred {
 	u_int cr_refcnt;		/* reference count */
-	uint8_t cr_pad[CACHE_LINE_SIZE - sizeof(u_int)];
+#if COHERENCY_UNIT > 4
+	uint8_t cr_pad[COHERENCY_UNIT - 4];
+#endif
 	uid_t cr_uid;			/* user id */
 	uid_t cr_euid;			/* effective user id */
 	uid_t cr_svuid;			/* saved effective user id */



CVS commit: src/lib/libkvm

2020-11-10 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Tue Nov 10 19:14:11 UTC 2020

Modified Files:
src/lib/libkvm: kvm_aarch64.c

Log Message:
Catch up with aa64 is not mips change


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/lib/libkvm/kvm_aarch64.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_aarch64.c
diff -u src/lib/libkvm/kvm_aarch64.c:1.9 src/lib/libkvm/kvm_aarch64.c:1.10
--- src/lib/libkvm/kvm_aarch64.c:1.9	Thu Sep 12 10:18:50 2019
+++ src/lib/libkvm/kvm_aarch64.c	Tue Nov 10 19:14:11 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: kvm_aarch64.c,v 1.9 2019/09/12 10:18:50 mlelstv Exp $ */
+/* $NetBSD: kvm_aarch64.c,v 1.10 2020/11/10 19:14:11 skrll Exp $ */
 
 /*-
  * Copyright (c) 2014, 2018 The NetBSD Foundation, Inc.
@@ -49,7 +49,7 @@
 
 #include "kvm_private.h"
 
-__RCSID("$NetBSD: kvm_aarch64.c,v 1.9 2019/09/12 10:18:50 mlelstv Exp $");
+__RCSID("$NetBSD: kvm_aarch64.c,v 1.10 2020/11/10 19:14:11 skrll Exp $");
 
 /*ARGSUSED*/
 void
@@ -73,7 +73,7 @@ _kvm_kvatop(kvm_t *kd, vaddr_t va, paddr
 return(0);
 }
 
-	if ((va & AARCH64_KSEG_MASK) != AARCH64_KSEG_START) {
+	if ((va & AARCH64_DIRECTMAP_MASK) != AARCH64_DIRECTMAP_START) {
 		/*
 		 * Bogus address (not in KV space): punt.
 		 */



CVS commit: src/lib/libkvm

2020-05-02 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Sat May  2 14:31:13 UTC 2020

Modified Files:
src/lib/libkvm: kvm.c

Log Message:
Cast off_t to size_t to appease lint:
warning: conversion from 'long long' to 'int' may lose accuracy


To generate a diff of this commit:
cvs rdiff -u -r1.108 -r1.109 src/lib/libkvm/kvm.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm.c
diff -u src/lib/libkvm/kvm.c:1.108 src/lib/libkvm/kvm.c:1.109
--- src/lib/libkvm/kvm.c:1.108	Tue Apr 28 10:27:41 2020
+++ src/lib/libkvm/kvm.c	Sat May  2 10:31:13 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm.c,v 1.108 2020/04/28 14:27:41 christos Exp $	*/
+/*	$NetBSD: kvm.c,v 1.109 2020/05/02 14:31:13 christos Exp $	*/
 
 /*-
  * Copyright (c) 1989, 1992, 1993
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm.c	8.2 (Berkeley) 2/13/94";
 #else
-__RCSID("$NetBSD: kvm.c,v 1.108 2020/04/28 14:27:41 christos Exp $");
+__RCSID("$NetBSD: kvm.c,v 1.109 2020/05/02 14:31:13 christos Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -182,7 +182,7 @@ _kvm_pread(kvm_t *kd, int fd, void *buf,
 			errno = EINVAL;
 			return -1;
 		}
-		memcpy(buf, (char *)kd->dump_mem + off, size);
+		memcpy(buf, (char *)kd->dump_mem + (size_t)off, size);
 		return size;
 	}
 
@@ -224,7 +224,7 @@ _kvm_pwrite(kvm_t *kd, const void *buf, 
 		errno = EINVAL;
 		return -1;
 	}
-	memcpy(mem + off, buf, size);
+	memcpy(mem + (size_t)off, buf, size);
 	return size;
 }
 



CVS commit: src/lib/libkvm

2020-04-28 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Tue Apr 28 14:27:41 UTC 2020

Modified Files:
src/lib/libkvm: kvm.c

Log Message:
Don't treat failure to map the file as fatal.


To generate a diff of this commit:
cvs rdiff -u -r1.107 -r1.108 src/lib/libkvm/kvm.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm.c
diff -u src/lib/libkvm/kvm.c:1.107 src/lib/libkvm/kvm.c:1.108
--- src/lib/libkvm/kvm.c:1.107	Mon Apr 27 20:19:23 2020
+++ src/lib/libkvm/kvm.c	Tue Apr 28 10:27:41 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm.c,v 1.107 2020/04/28 00:19:23 christos Exp $	*/
+/*	$NetBSD: kvm.c,v 1.108 2020/04/28 14:27:41 christos Exp $	*/
 
 /*-
  * Copyright (c) 1989, 1992, 1993
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm.c	8.2 (Berkeley) 2/13/94";
 #else
-__RCSID("$NetBSD: kvm.c,v 1.107 2020/04/28 00:19:23 christos Exp $");
+__RCSID("$NetBSD: kvm.c,v 1.108 2020/04/28 14:27:41 christos Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -399,8 +399,6 @@ _kvm_open(kvm_t *kd, const char *uf, con
 		kd->dump_size = (size_t)st.st_size;
 		kd->dump_mem = mmap(NULL, kd->dump_size, PROT_READ|PROT_WRITE, 
 		MAP_FILE|MAP_PRIVATE, kd->pmfd, 0);
-		if (kd->dump_mem == MAP_FAILED)
-			goto failed;
 	}
 	return (kd);
 failed:



CVS commit: src/lib/libkvm

2020-04-27 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Tue Apr 28 00:19:23 UTC 2020

Modified Files:
src/lib/libkvm: kvm.c

Log Message:
make kvm_pread use the mapped buffer if it is available.


To generate a diff of this commit:
cvs rdiff -u -r1.106 -r1.107 src/lib/libkvm/kvm.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm.c
diff -u src/lib/libkvm/kvm.c:1.106 src/lib/libkvm/kvm.c:1.107
--- src/lib/libkvm/kvm.c:1.106	Mon Apr 27 20:12:01 2020
+++ src/lib/libkvm/kvm.c	Mon Apr 27 20:19:23 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm.c,v 1.106 2020/04/28 00:12:01 christos Exp $	*/
+/*	$NetBSD: kvm.c,v 1.107 2020/04/28 00:19:23 christos Exp $	*/
 
 /*-
  * Copyright (c) 1989, 1992, 1993
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm.c	8.2 (Berkeley) 2/13/94";
 #else
-__RCSID("$NetBSD: kvm.c,v 1.106 2020/04/28 00:12:01 christos Exp $");
+__RCSID("$NetBSD: kvm.c,v 1.107 2020/04/28 00:19:23 christos Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -177,6 +177,15 @@ _kvm_pread(kvm_t *kd, int fd, void *buf,
 	ssize_t rv;
 	off_t doff;
 
+	if (kd->dump_mem != MAP_FAILED) {
+		if (size + off > kd->dump_size) {
+			errno = EINVAL;
+			return -1;
+		}
+		memcpy(buf, (char *)kd->dump_mem + off, size);
+		return size;
+	}
+
 	/* If aligned nothing to do. */
  	if (((off % kd->fdalign) | (size % kd->fdalign)) == 0) {
 		return pread(fd, buf, size, off);



CVS commit: src/lib/libkvm

2020-04-27 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Tue Apr 28 00:12:01 UTC 2020

Modified Files:
src/lib/libkvm: kvm.c kvm_private.h

Log Message:
Implement kvm_write() for dump files. We map the file privately so that
changes don't get propagated back, and then write to the private buffer.
This is not useful yes, but it is simple enough to make pread use the buffer
if it is available.


To generate a diff of this commit:
cvs rdiff -u -r1.105 -r1.106 src/lib/libkvm/kvm.c
cvs rdiff -u -r1.20 -r1.21 src/lib/libkvm/kvm_private.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm.c
diff -u src/lib/libkvm/kvm.c:1.105 src/lib/libkvm/kvm.c:1.106
--- src/lib/libkvm/kvm.c:1.105	Sat Mar  7 19:06:42 2020
+++ src/lib/libkvm/kvm.c	Mon Apr 27 20:12:01 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm.c,v 1.105 2020/03/08 00:06:42 chs Exp $	*/
+/*	$NetBSD: kvm.c,v 1.106 2020/04/28 00:12:01 christos Exp $	*/
 
 /*-
  * Copyright (c) 1989, 1992, 1993
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm.c	8.2 (Berkeley) 2/13/94";
 #else
-__RCSID("$NetBSD: kvm.c,v 1.105 2020/03/08 00:06:42 chs Exp $");
+__RCSID("$NetBSD: kvm.c,v 1.106 2020/04/28 00:12:01 christos Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -48,6 +48,7 @@ __RCSID("$NetBSD: kvm.c,v 1.105 2020/03/
 #include 
 #include 
 #include 
+#include 
 
 #include 
 #include 
@@ -205,6 +206,19 @@ _kvm_pread(kvm_t *kd, int fd, void *buf,
 	return size;
 }
 
+static ssize_t
+_kvm_pwrite(kvm_t *kd, const void *buf, size_t size, off_t off)
+{
+	char *mem = kd->dump_mem;
+
+	if (size + off > kd->dump_size) {
+		errno = EINVAL;
+		return -1;
+	}
+	memcpy(mem + off, buf, size);
+	return size;
+}
+
 /*
  * Wrapper around the pread(2) system call; calls _kvm_syserr() for us
  * in the event of emergency.
@@ -256,6 +270,8 @@ _kvm_open(kvm_t *kd, const char *uf, con
 	kd->iobuf = NULL;
 	kd->iobufsz = 0;
 	kd->errbuf[0] = '\0';
+	kd->dump_mem = MAP_FAILED;
+	kd->dump_size = 0;
 
 	if (flag & KVM_NO_FILES) {
 		kd->alive = KVM_ALIVE_SYSCTL;
@@ -371,6 +387,11 @@ _kvm_open(kvm_t *kd, const char *uf, con
 			if (_kvm_initvtop(kd) < 0)
 goto failed;
 		}
+		kd->dump_size = (size_t)st.st_size;
+		kd->dump_mem = mmap(NULL, kd->dump_size, PROT_READ|PROT_WRITE, 
+		MAP_FILE|MAP_PRIVATE, kd->pmfd, 0);
+		if (kd->dump_mem == MAP_FAILED)
+			goto failed;
 	}
 	return (kd);
 failed:
@@ -758,6 +779,8 @@ kvm_close(kvm_t *kd)
 		free(kd->argv);
 	if (kd->iobuf != 0)
 		free(kd->iobuf);
+	if (kd->dump_mem != MAP_FAILED)
+		munmap(kd->dump_mem, kd->dump_size);
 	free(kd);
 
 	return (error);
@@ -891,6 +914,7 @@ ssize_t
 kvm_write(kvm_t *kd, u_long kva, const void *buf, size_t len)
 {
 	int cc;
+	const void *cp;
 
 	if (ISKMEM(kd)) {
 		/*
@@ -909,9 +933,43 @@ kvm_write(kvm_t *kd, u_long kva, const v
 		"can't use kvm_write");
 		return (-1);
 	} else {
-		_kvm_err(kd, kd->program,
-		"kvm_write not implemented for dead kernels");
-		return (-1);
+		if (kd->dump_mem == MAP_FAILED) {
+			_kvm_err(kd, kd->program,
+			"kvm_write not implemented for dead kernels");
+			return (-1);
+		}
+		cp = buf;
+		while (len > 0) {
+			paddr_t	pa;
+			off_t	foff;
+
+			cc = _kvm_kvatop(kd, (vaddr_t)kva, &pa);
+			if (cc == 0) {
+_kvm_err(kd, kd->program, "_kvm_kvatop(%lx)", kva);
+return (-1);
+			}
+			if (cc > len)
+cc = len;
+			foff = _kvm_pa2off(kd, pa);
+			errno = 0;
+			cc = _kvm_pwrite(kd, cp, (size_t)cc, foff);
+			if (cc < 0) {
+_kvm_syserr(kd, kd->program, "kvm_pwrite");
+break;
+			}
+			/*
+			 * If kvm_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 (cc == 0)
+break;
+			cp = (const char *)cp + cc;
+			kva += cc;
+			len -= cc;
+		}
+		return ((const char *)cp - (const char *)buf);
 	}
 	/* NOTREACHED */
 }

Index: src/lib/libkvm/kvm_private.h
diff -u src/lib/libkvm/kvm_private.h:1.20 src/lib/libkvm/kvm_private.h:1.21
--- src/lib/libkvm/kvm_private.h:1.20	Mon Sep 12 17:11:32 2011
+++ src/lib/libkvm/kvm_private.h	Mon Apr 27 20:12:01 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_private.h,v 1.20 2011/09/12 21:11:32 christos Exp $	*/
+/*	$NetBSD: kvm_private.h,v 1.21 2020/04/28 00:12:01 christos Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
@@ -72,6 +72,8 @@ struct __kvm {
 	size_t	cpu_dsize;
 	void	*cpu_data;
 	off_t	dump_off;	/* Where the actual dump starts	*/
+	void	*dump_mem;
+	size_t	dump_size;
 
 	/*
 	 * Kernel virtual address translation state.  This only gets filled



CVS commit: src/lib/libkvm

2020-03-07 Thread Chuck Silvers
Module Name:src
Committed By:   chs
Date:   Sun Mar  8 00:14:18 UTC 2020

Modified Files:
src/lib/libkvm: kvm_x86_64.c

Log Message:
use a binary search in _kvm_pa2off().  this helps a lot for sparse dumps,
which can have millions of memory segments.


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/lib/libkvm/kvm_x86_64.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_x86_64.c
diff -u src/lib/libkvm/kvm_x86_64.c:1.10 src/lib/libkvm/kvm_x86_64.c:1.11
--- src/lib/libkvm/kvm_x86_64.c:1.10	Wed Feb 19 20:21:22 2014
+++ src/lib/libkvm/kvm_x86_64.c	Sun Mar  8 00:14:18 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_x86_64.c,v 1.10 2014/02/19 20:21:22 dsl Exp $	*/
+/*	$NetBSD: kvm_x86_64.c,v 1.11 2020/03/08 00:14:18 chs Exp $	*/
 
 /*-
  * Copyright (c) 1989, 1992, 1993
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm_hp300.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: kvm_x86_64.c,v 1.10 2014/02/19 20:21:22 dsl Exp $");
+__RCSID("$NetBSD: kvm_x86_64.c,v 1.11 2020/03/08 00:14:18 chs Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -186,6 +186,36 @@ _kvm_kvatop(kvm_t *kd, vaddr_t va, paddr
 	return (0);
 }
 
+struct p2o {
+	paddr_t pa;
+	psize_t sz;
+	off_t off;
+};
+
+static int
+cmp_p2o(const void *a, const void *b)
+{
+	const struct p2o *p1 = a;
+	const struct p2o *p2 = b;
+
+	/* If one range contains the start of the other, it's a match. */
+	if (p1->pa >= p2->pa && p1->pa < p2->pa + p2->sz) {
+		return 0;
+	}
+	if (p2->pa >= p1->pa && p2->pa < p1->pa + p1->sz) {
+		return 0;
+	}
+
+	/* Otherwise sort by pa. */
+	if (p1->pa < p2->pa)
+		return -1;
+	else if (p1->pa > p2->pa)
+		return 1;
+	else
+		return 0;
+}
+
+
 /*
  * Translate a physical address to a file-offset in the crash dump.
  */
@@ -197,19 +227,36 @@ _kvm_pa2off(kvm_t *kd, paddr_t pa)
 	off_t off;
 	int i;
 
+	static struct p2o *map;
+	struct p2o key, *val;
+
 	cpu_kh = kd->cpu_data;
 	ramsegs = (void *)((char *)(void *)cpu_kh + ALIGN(sizeof *cpu_kh));
 
-	off = 0;
-	for (i = 0; i < cpu_kh->nmemsegs; i++) {
-		if (pa >= ramsegs[i].start &&
-		(pa - ramsegs[i].start) < ramsegs[i].size) {
-			off += (pa - ramsegs[i].start);
-			break;
+	if (map == NULL) {
+		map = calloc(sizeof *map, cpu_kh->nmemsegs);
+		off = 0;
+		for (i = 0; i < cpu_kh->nmemsegs; i++) {
+			map[i].pa = ramsegs[i].start;
+			map[i].sz = ramsegs[i].size;
+			map[i].off = off;
+			off += ramsegs[i].size;
 		}
-		off += ramsegs[i].size;
+#if 0
+		/* The array appears to be sorted already */
+		qsort(map, cpu_kh->nmemsegs, sizeof(*map), cmp_p2o);
+#endif
 	}
 
+	key.pa = pa;
+	key.sz = 1;
+	key.off = -1;
+	val = bsearch(&key, map, cpu_kh->nmemsegs, sizeof (key), cmp_p2o);
+	if (val)
+		off = val->off + pa - val->pa;
+	else
+		off = 0;
+
 	return (kd->dump_off + off);
 }
 



CVS commit: src/lib/libkvm

2020-03-07 Thread Chuck Silvers
Module Name:src
Committed By:   chs
Date:   Sun Mar  8 00:06:42 UTC 2020

Modified Files:
src/lib/libkvm: kvm.c

Log Message:
only do bounce buffering for character devices.


To generate a diff of this commit:
cvs rdiff -u -r1.104 -r1.105 src/lib/libkvm/kvm.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm.c
diff -u src/lib/libkvm/kvm.c:1.104 src/lib/libkvm/kvm.c:1.105
--- src/lib/libkvm/kvm.c:1.104	Mon Nov  5 00:43:30 2018
+++ src/lib/libkvm/kvm.c	Sun Mar  8 00:06:42 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm.c,v 1.104 2018/11/05 00:43:30 mrg Exp $	*/
+/*	$NetBSD: kvm.c,v 1.105 2020/03/08 00:06:42 chs Exp $	*/
 
 /*-
  * Copyright (c) 1989, 1992, 1993
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm.c	8.2 (Berkeley) 2/13/94";
 #else
-__RCSID("$NetBSD: kvm.c,v 1.104 2018/11/05 00:43:30 mrg Exp $");
+__RCSID("$NetBSD: kvm.c,v 1.105 2020/03/08 00:06:42 chs Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -352,7 +352,12 @@ _kvm_open(kvm_t *kd, const char *uf, con
 			/* swap is not configured?  not fatal */
 		}
 	} else {
-		kd->fdalign = DEV_BSIZE;	/* XXX */
+		if (S_ISCHR(st.st_mode)) {
+			kd->fdalign = DEV_BSIZE;
+		} else {
+			kd->fdalign = 1;
+		}
+
 		/*
 		 * This is a crash dump.
 		 * Initialize the virtual address translation machinery.



CVS commit: src/lib/libkvm

2019-12-11 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Wed Dec 11 20:19:27 UTC 2019

Modified Files:
src/lib/libkvm: kvm_proc.c

Log Message:
Redo previous more conventionally.  Requested by kre@.


To generate a diff of this commit:
cvs rdiff -u -r1.93 -r1.94 src/lib/libkvm/kvm_proc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_proc.c
diff -u src/lib/libkvm/kvm_proc.c:1.93 src/lib/libkvm/kvm_proc.c:1.94
--- src/lib/libkvm/kvm_proc.c:1.93	Tue Dec 10 18:13:07 2019
+++ src/lib/libkvm/kvm_proc.c	Wed Dec 11 20:19:27 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_proc.c,v 1.93 2019/12/10 18:13:07 ad Exp $	*/
+/*	$NetBSD: kvm_proc.c,v 1.94 2019/12/11 20:19:27 ad Exp $	*/
 
 /*-
  * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm_proc.c	8.3 (Berkeley) 9/23/93";
 #else
-__RCSID("$NetBSD: kvm_proc.c,v 1.93 2019/12/10 18:13:07 ad Exp $");
+__RCSID("$NetBSD: kvm_proc.c,v 1.94 2019/12/11 20:19:27 ad Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -260,7 +260,7 @@ _kvm_ureadm(kvm_t *kd, const struct mini
 			return (NULL);
 
 		if (_kvm_pread(kd, kd->pmfd, kd->swapspc, (size_t)kd->nbpg,
-		(off_t)pg.phys_addr & -kd->nbpg) != kd->nbpg)
+		(off_t)pg.phys_addr & ~(kd->nbpg - 1)) != kd->nbpg)
 			return (NULL);
 	} else {
 		if (kd->swfd < 0 ||



CVS commit: src/lib/libkvm

2019-12-10 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Tue Dec 10 18:13:07 UTC 2019

Modified Files:
src/lib/libkvm: kvm_proc.c

Log Message:
Mask out always zero bits off pg->phys_addr.


To generate a diff of this commit:
cvs rdiff -u -r1.92 -r1.93 src/lib/libkvm/kvm_proc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_proc.c
diff -u src/lib/libkvm/kvm_proc.c:1.92 src/lib/libkvm/kvm_proc.c:1.93
--- src/lib/libkvm/kvm_proc.c:1.92	Mon Apr  4 22:14:38 2016
+++ src/lib/libkvm/kvm_proc.c	Tue Dec 10 18:13:07 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_proc.c,v 1.92 2016/04/04 22:14:38 christos Exp $	*/
+/*	$NetBSD: kvm_proc.c,v 1.93 2019/12/10 18:13:07 ad Exp $	*/
 
 /*-
  * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm_proc.c	8.3 (Berkeley) 9/23/93";
 #else
-__RCSID("$NetBSD: kvm_proc.c,v 1.92 2016/04/04 22:14:38 christos Exp $");
+__RCSID("$NetBSD: kvm_proc.c,v 1.93 2019/12/10 18:13:07 ad Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -260,7 +260,7 @@ _kvm_ureadm(kvm_t *kd, const struct mini
 			return (NULL);
 
 		if (_kvm_pread(kd, kd->pmfd, kd->swapspc, (size_t)kd->nbpg,
-		(off_t)pg.phys_addr) != kd->nbpg)
+		(off_t)pg.phys_addr & -kd->nbpg) != kd->nbpg)
 			return (NULL);
 	} else {
 		if (kd->swfd < 0 ||



CVS commit: src/lib/libkvm

2018-12-19 Thread matthew green
Module Name:src
Committed By:   mrg
Date:   Wed Dec 19 11:02:21 UTC 2018

Modified Files:
src/lib/libkvm: kvm_aarch64.c

Log Message:
be consistent about uint64_t and bit masks.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/lib/libkvm/kvm_aarch64.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_aarch64.c
diff -u src/lib/libkvm/kvm_aarch64.c:1.7 src/lib/libkvm/kvm_aarch64.c:1.8
--- src/lib/libkvm/kvm_aarch64.c:1.7	Wed Dec 19 11:00:09 2018
+++ src/lib/libkvm/kvm_aarch64.c	Wed Dec 19 11:02:21 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: kvm_aarch64.c,v 1.7 2018/12/19 11:00:09 mrg Exp $ */
+/* $NetBSD: kvm_aarch64.c,v 1.8 2018/12/19 11:02:21 mrg Exp $ */
 
 /*-
  * Copyright (c) 2014, 2018 The NetBSD Foundation, Inc.
@@ -48,7 +48,7 @@
 
 #include "kvm_private.h"
 
-__RCSID("$NetBSD: kvm_aarch64.c,v 1.7 2018/12/19 11:00:09 mrg Exp $");
+__RCSID("$NetBSD: kvm_aarch64.c,v 1.8 2018/12/19 11:02:21 mrg Exp $");
 
 /*ARGSUSED*/
 void
@@ -146,7 +146,7 @@ lose:
 
 		if ((pte & LX_TYPE) == LX_TYPE_BLK) {
 			const size_t blk_size = 1 << addr_shift;
-			const paddr_t blk_mask = __BITS(addr_shift - 1, 0);
+			const uint64_t blk_mask = __BITS(addr_shift - 1, 0);
 
 			*pa = (pte & page_addr & ~blk_mask) | (va & blk_mask);
 			return blk_size - (va & blk_mask);



CVS commit: src/lib/libkvm

2018-12-19 Thread matthew green
Module Name:src
Committed By:   mrg
Date:   Wed Dec 19 11:00:09 UTC 2018

Modified Files:
src/lib/libkvm: kvm_aarch64.c

Log Message:
use uint64_t for idx_mask.  fixes lookups for some PAs.  from skrll.

bump copyright.  we updated this a lot of this in 2018.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/lib/libkvm/kvm_aarch64.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_aarch64.c
diff -u src/lib/libkvm/kvm_aarch64.c:1.6 src/lib/libkvm/kvm_aarch64.c:1.7
--- src/lib/libkvm/kvm_aarch64.c:1.6	Tue Dec 18 16:25:47 2018
+++ src/lib/libkvm/kvm_aarch64.c	Wed Dec 19 11:00:09 2018
@@ -1,7 +1,7 @@
-/* $NetBSD: kvm_aarch64.c,v 1.6 2018/12/18 16:25:47 skrll Exp $ */
+/* $NetBSD: kvm_aarch64.c,v 1.7 2018/12/19 11:00:09 mrg Exp $ */
 
 /*-
- * Copyright (c) 2014 The NetBSD Foundation, Inc.
+ * Copyright (c) 2014, 2018 The NetBSD Foundation, Inc.
  * All rights reserved.
  *
  * This code is derived from software contributed to The NetBSD Foundation
@@ -48,7 +48,7 @@
 
 #include "kvm_private.h"
 
-__RCSID("$NetBSD: kvm_aarch64.c,v 1.6 2018/12/18 16:25:47 skrll Exp $");
+__RCSID("$NetBSD: kvm_aarch64.c,v 1.7 2018/12/19 11:00:09 mrg Exp $");
 
 /*ARGSUSED*/
 void
@@ -127,7 +127,8 @@ lose:
 		pt_entry_t pte;
 
 		/* now index into the pte table */
-		const u_int idx_mask =  __BITS(addr_shift + pte_shift - 1, addr_shift);
+		const uint64_t idx_mask = __BITS(addr_shift + pte_shift - 1,
+		 addr_shift);
 		pte_addr += 8 * __SHIFTOUT(va, idx_mask);
 
 		/* Find and read the PTE. */



CVS commit: src/lib/libkvm

2018-12-18 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Tue Dec 18 16:25:47 UTC 2018

Modified Files:
src/lib/libkvm: kvm_aarch64.c

Log Message:
Fix _kvm_kvatop so that it now works.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/lib/libkvm/kvm_aarch64.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_aarch64.c
diff -u src/lib/libkvm/kvm_aarch64.c:1.5 src/lib/libkvm/kvm_aarch64.c:1.6
--- src/lib/libkvm/kvm_aarch64.c:1.5	Fri Nov  9 04:06:40 2018
+++ src/lib/libkvm/kvm_aarch64.c	Tue Dec 18 16:25:47 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: kvm_aarch64.c,v 1.5 2018/11/09 04:06:40 mrg Exp $ */
+/* $NetBSD: kvm_aarch64.c,v 1.6 2018/12/18 16:25:47 skrll Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -48,7 +48,7 @@
 
 #include "kvm_private.h"
 
-__RCSID("$NetBSD: kvm_aarch64.c,v 1.5 2018/11/09 04:06:40 mrg Exp $");
+__RCSID("$NetBSD: kvm_aarch64.c,v 1.6 2018/12/18 16:25:47 skrll Exp $");
 
 /*ARGSUSED*/
 void
@@ -83,27 +83,24 @@ lose:
 	}
 
 	const cpu_kcore_hdr_t * const cpu_kh = kd->cpu_data;
-	const uint64_t tg1 = cpu_kh->kh_tcr1 & TCR_TG1; 
+	const uint64_t tg1 = cpu_kh->kh_tcr1 & TCR_TG1;
 	const u_int t1siz = __SHIFTOUT(cpu_kh->kh_tcr1, TCR_T1SZ);
+	const u_int inputsz = 64 - t1siz;
 
 	/*
 	 * Real kernel virtual address: do the translation.
 	 */
 
-	u_int va_bits;
 	u_int page_shift;
 
 	switch (tg1) {
 	case TCR_TG1_4KB:
-		va_bits = t1siz + 36;
 		page_shift = 12;
 		break;
 	case TCR_TG1_16KB:
-		va_bits = 48;
 		page_shift = 14;
 		break;
 	case TCR_TG1_64KB:
-		va_bits = t1siz + 38;
 		page_shift = 16;
 		break;
 	default:
@@ -111,28 +108,27 @@ lose:
 	}
 
 	const size_t page_size = 1 << page_shift;
-	const uint64_t page_mask = (page_size - 1);
-	const uint64_t page_addr = __BITS(47, 0) & ~page_mask;
-	const uint64_t pte_mask = page_mask >> 3;
+	const uint64_t page_mask = __BITS(page_shift - 1, 0);
+	const uint64_t page_addr = __BITS(47, page_shift);
 	const u_int pte_shift = page_shift - 3;
 
-	/* how many level of page tables do we have? */
-	u_int level = (48 + page_shift - 1) / page_shift;
+	/* how many levels of page tables do we have? */
+	u_int levels = howmany(inputsz - page_shift, pte_shift);
 
 	/* restrict va to the valid VA bits */
-	va &= (1LL << va_bits) - 1;
+	va &= __BITS(inputsz - 1, 0);
 
-	u_int addr_shift = page_shift + (level - 1) * pte_shift;
+	u_int addr_shift = page_shift + (levels - 1) * pte_shift;
 
 	/* clear out the unused low bits of the table address */
-	paddr_t pte_addr = (cpu_kh->kh_ttbr1 & TTBR_BADDR);
-	pte_addr &= ~((8L << (va_bits - addr_shift)) - 1);
+	paddr_t pte_addr = cpu_kh->kh_ttbr1 & TTBR_BADDR;
 
 	for (;;) {
 		pt_entry_t pte;
 
 		/* now index into the pte table */
-		pte_addr += 8 * ((va >> addr_shift) & pte_mask);
+		const u_int idx_mask =  __BITS(addr_shift + pte_shift - 1, addr_shift);
+		pte_addr += 8 * __SHIFTOUT(va, idx_mask);
 
 		/* Find and read the PTE. */
 		if (_kvm_pread(kd, kd->pmfd, &pte, sizeof(pte),
@@ -148,15 +144,15 @@ lose:
 		}
 
 		if ((pte & LX_TYPE) == LX_TYPE_BLK) {
-			const paddr_t blk_mask = ((1L << addr_shift) - 1);
+			const size_t blk_size = 1 << addr_shift;
+			const paddr_t blk_mask = __BITS(addr_shift - 1, 0);
 
 			*pa = (pte & page_addr & ~blk_mask) | (va & blk_mask);
-			return 0;
+			return blk_size - (va & blk_mask);
 		}
-
-		if (level == page_shift) {
+		if (--levels == 0) {
 			*pa = (pte & page_addr) | (va & page_mask);
-			return 0;
+			return page_size - (va & page_mask); 
 		}
 
 		/*



CVS commit: src/lib/libkvm

2018-12-11 Thread Sevan Janiyan
Module Name:src
Committed By:   sevan
Date:   Tue Dec 11 23:02:19 UTC 2018

Modified Files:
src/lib/libkvm: kvm_getloadavg.3

Log Message:
Reword post mortem description. It tries to get the tree averages if it can.


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/lib/libkvm/kvm_getloadavg.3

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_getloadavg.3
diff -u src/lib/libkvm/kvm_getloadavg.3:1.12 src/lib/libkvm/kvm_getloadavg.3:1.13
--- src/lib/libkvm/kvm_getloadavg.3:1.12	Tue Dec 11 02:29:11 2018
+++ src/lib/libkvm/kvm_getloadavg.3	Tue Dec 11 23:02:19 2018
@@ -1,4 +1,4 @@
-.\"	$NetBSD: kvm_getloadavg.3,v 1.12 2018/12/11 02:29:11 sevan Exp $
+.\"	$NetBSD: kvm_getloadavg.3,v 1.13 2018/12/11 23:02:19 sevan Exp $
 .\"
 .\" Copyright (c) 1992, 1993
 .\"	The Regents of the University of California.  All rights reserved.
@@ -58,8 +58,8 @@ On a live system, the load average is ob
 .Xr getloadavg 3 .
 If performing post mortem on a kernel core file,
 .Nm
-obtains the system load average at the time of death from the core file
-directly.
+is able to extract the system load averages at the time of death from the core
+file directly.
 .Sh RETURN VALUES
 If the load average was unobtainable, \-1 is returned; otherwise,
 the number of samples actually retrieved is returned.



CVS commit: src/lib/libkvm

2018-12-10 Thread Sevan Janiyan
Module Name:src
Committed By:   sevan
Date:   Tue Dec 11 02:29:11 UTC 2018

Modified Files:
src/lib/libkvm: kvm_getloadavg.3

Log Message:
Clarify the difference to getloadavg(3).


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/lib/libkvm/kvm_getloadavg.3

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_getloadavg.3
diff -u src/lib/libkvm/kvm_getloadavg.3:1.11 src/lib/libkvm/kvm_getloadavg.3:1.12
--- src/lib/libkvm/kvm_getloadavg.3:1.11	Tue Mar 10 23:49:07 2009
+++ src/lib/libkvm/kvm_getloadavg.3	Tue Dec 11 02:29:11 2018
@@ -1,4 +1,4 @@
-.\"	$NetBSD: kvm_getloadavg.3,v 1.11 2009/03/10 23:49:07 joerg Exp $
+.\"	$NetBSD: kvm_getloadavg.3,v 1.12 2018/12/11 02:29:11 sevan Exp $
 .\"
 .\" Copyright (c) 1992, 1993
 .\"	The Regents of the University of California.  All rights reserved.
@@ -29,12 +29,12 @@
 .\"
 .\" @(#)kvm_getloadavg.3	8.1 (Berkeley) 6/4/93
 .\"
-.Dd August 18, 2002
+.Dd December 11, 2018
 .Dt KVM_GETLOADAVG 3
 .Os
 .Sh NAME
 .Nm kvm_getloadavg
-.Nd get system load averages
+.Nd get system load averages, from live or dead kernels
 .Sh LIBRARY
 .Lb libkvm
 .Sh SYNOPSIS
@@ -46,15 +46,20 @@
 The
 .Fn kvm_getloadavg
 function returns the number of processes in the system run queue
-of the kernel indicated by
-.Fa kd ,
-averaged over various periods of time.
+of the kernel or core file, indicated by
+.Fa kd .
 Up to
 .Fa nelem
 samples are retrieved and assigned to successive elements of
 .Fa loadavg Ns Bq .
 The system imposes a maximum of 3 samples, representing averages
 over the last 1, 5, and 15 minutes, respectively.
+On a live system, the load average is obtained by calling
+.Xr getloadavg 3 .
+If performing post mortem on a kernel core file,
+.Nm
+obtains the system load average at the time of death from the core file
+directly.
 .Sh RETURN VALUES
 If the load average was unobtainable, \-1 is returned; otherwise,
 the number of samples actually retrieved is returned.



CVS commit: src/lib/libkvm

2018-11-08 Thread matthew green
Module Name:src
Committed By:   mrg
Date:   Fri Nov  9 04:06:40 UTC 2018

Modified Files:
src/lib/libkvm: kvm_aarch64.c

Log Message:
tg1 is a 64 bit value, store it in a 64 bit variable.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/lib/libkvm/kvm_aarch64.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_aarch64.c
diff -u src/lib/libkvm/kvm_aarch64.c:1.4 src/lib/libkvm/kvm_aarch64.c:1.5
--- src/lib/libkvm/kvm_aarch64.c:1.4	Thu Nov  1 05:37:11 2018
+++ src/lib/libkvm/kvm_aarch64.c	Fri Nov  9 04:06:40 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: kvm_aarch64.c,v 1.4 2018/11/01 05:37:11 mrg Exp $ */
+/* $NetBSD: kvm_aarch64.c,v 1.5 2018/11/09 04:06:40 mrg Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -48,7 +48,7 @@
 
 #include "kvm_private.h"
 
-__RCSID("$NetBSD: kvm_aarch64.c,v 1.4 2018/11/01 05:37:11 mrg Exp $");
+__RCSID("$NetBSD: kvm_aarch64.c,v 1.5 2018/11/09 04:06:40 mrg Exp $");
 
 /*ARGSUSED*/
 void
@@ -83,7 +83,7 @@ lose:
 	}
 
 	const cpu_kcore_hdr_t * const cpu_kh = kd->cpu_data;
-	const u_int tg1 = cpu_kh->kh_tcr1 & TCR_TG1; 
+	const uint64_t tg1 = cpu_kh->kh_tcr1 & TCR_TG1; 
 	const u_int t1siz = __SHIFTOUT(cpu_kh->kh_tcr1, TCR_T1SZ);
 
 	/*



CVS commit: src/lib/libkvm

2018-11-04 Thread matthew green
Module Name:src
Committed By:   mrg
Date:   Mon Nov  5 00:43:30 UTC 2018

Modified Files:
src/lib/libkvm: kvm.c

Log Message:
initialise the kvm errbuf so that if an error occurs, but the
internal _kvm_*err() functions aren't called, stack garbage is
not reported as an error string.

call _kvm_err() if _kvm_kvatop() fails.  now the above is not
triggered anymore :-)


To generate a diff of this commit:
cvs rdiff -u -r1.103 -r1.104 src/lib/libkvm/kvm.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm.c
diff -u src/lib/libkvm/kvm.c:1.103 src/lib/libkvm/kvm.c:1.104
--- src/lib/libkvm/kvm.c:1.103	Wed Feb  7 14:03:18 2018
+++ src/lib/libkvm/kvm.c	Mon Nov  5 00:43:30 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm.c,v 1.103 2018/02/07 14:03:18 maxv Exp $	*/
+/*	$NetBSD: kvm.c,v 1.104 2018/11/05 00:43:30 mrg Exp $	*/
 
 /*-
  * Copyright (c) 1989, 1992, 1993
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm.c	8.2 (Berkeley) 2/13/94";
 #else
-__RCSID("$NetBSD: kvm.c,v 1.103 2018/02/07 14:03:18 maxv Exp $");
+__RCSID("$NetBSD: kvm.c,v 1.104 2018/11/05 00:43:30 mrg Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -255,6 +255,7 @@ _kvm_open(kvm_t *kd, const char *uf, con
 	kd->fdalign = 1;
 	kd->iobuf = NULL;
 	kd->iobufsz = 0;
+	kd->errbuf[0] = '\0';
 
 	if (flag & KVM_NO_FILES) {
 		kd->alive = KVM_ALIVE_SYSCTL;
@@ -851,8 +852,10 @@ kvm_read(kvm_t *kd, u_long kva, void *bu
 			off_t	foff;
 
 			cc = _kvm_kvatop(kd, (vaddr_t)kva, &pa);
-			if (cc == 0)
+			if (cc == 0) {
+_kvm_err(kd, kd->program, "_kvm_kvatop(%lx)", kva);
 return (-1);
+			}
 			if (cc > len)
 cc = len;
 			foff = _kvm_pa2off(kd, pa);



CVS commit: src/lib/libkvm

2018-10-31 Thread matthew green
Module Name:src
Committed By:   mrg
Date:   Thu Nov  1 05:37:12 UTC 2018

Modified Files:
src/lib/libkvm: kvm_aarch64.c

Log Message:
compare matching TG1 bits.

aarch64 crash dump kvtop now less broken, but still not stable.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/lib/libkvm/kvm_aarch64.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_aarch64.c
diff -u src/lib/libkvm/kvm_aarch64.c:1.3 src/lib/libkvm/kvm_aarch64.c:1.4
--- src/lib/libkvm/kvm_aarch64.c:1.3	Sun Apr  1 04:35:02 2018
+++ src/lib/libkvm/kvm_aarch64.c	Thu Nov  1 05:37:11 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: kvm_aarch64.c,v 1.3 2018/04/01 04:35:02 ryo Exp $ */
+/* $NetBSD: kvm_aarch64.c,v 1.4 2018/11/01 05:37:11 mrg Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -48,7 +48,7 @@
 
 #include "kvm_private.h"
 
-__RCSID("$NetBSD: kvm_aarch64.c,v 1.3 2018/04/01 04:35:02 ryo Exp $");
+__RCSID("$NetBSD: kvm_aarch64.c,v 1.4 2018/11/01 05:37:11 mrg Exp $");
 
 /*ARGSUSED*/
 void
@@ -83,7 +83,7 @@ lose:
 	}
 
 	const cpu_kcore_hdr_t * const cpu_kh = kd->cpu_data;
-	const u_int tg1 =__SHIFTOUT(cpu_kh->kh_tcr1, TCR_TG1); 
+	const u_int tg1 = cpu_kh->kh_tcr1 & TCR_TG1; 
 	const u_int t1siz = __SHIFTOUT(cpu_kh->kh_tcr1, TCR_T1SZ);
 
 	/*



CVS commit: src/lib/libkvm

2018-02-07 Thread Maxime Villard
Module Name:src
Committed By:   maxv
Date:   Wed Feb  7 14:03:18 UTC 2018

Modified Files:
src/lib/libkvm: kvm.c

Log Message:
Keep /dev/ksyms open in _kvm_open(). This way /dev/ksyms can be put into
$g_kmem without breaking the tools that need kmem+ksyms.

Discussed on tech-kern@ three weeks ago. The original issue was reported
by maya@, the patch was written by Tom Ivar Helbekkmo, ok christos@.


To generate a diff of this commit:
cvs rdiff -u -r1.102 -r1.103 src/lib/libkvm/kvm.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm.c
diff -u src/lib/libkvm/kvm.c:1.102 src/lib/libkvm/kvm.c:1.103
--- src/lib/libkvm/kvm.c:1.102	Tue Mar 29 06:51:40 2016
+++ src/lib/libkvm/kvm.c	Wed Feb  7 14:03:18 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm.c,v 1.102 2016/03/29 06:51:40 mrg Exp $	*/
+/*	$NetBSD: kvm.c,v 1.103 2018/02/07 14:03:18 maxv Exp $	*/
 
 /*-
  * Copyright (c) 1989, 1992, 1993
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm.c	8.2 (Berkeley) 2/13/94";
 #else
-__RCSID("$NetBSD: kvm.c,v 1.102 2016/03/29 06:51:40 mrg Exp $");
+__RCSID("$NetBSD: kvm.c,v 1.103 2018/02/07 14:03:18 maxv Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -322,15 +322,6 @@ _kvm_open(kvm_t *kd, const char *uf, con
 		strlcpy(kd->kernelname, uf, sizeof(kd->kernelname));
 	} else {
 		strlcpy(kd->kernelname, _PATH_KSYMS, sizeof(kd->kernelname));
-		/*
-		 * We're here because /dev/ksyms was opened
-		 * successfully.  However, we don't want to keep it
-		 * open, so we close it now.  Later, we will open
-		 * it again, since it will be the only case where
-		 * kd->nlfd is negative.
-		 */
-		close(kd->nlfd);
-		kd->nlfd = -1;
 	}
 
 	if ((kd->pmfd = open(mf, flag | O_CLOEXEC, 0)) < 0) {
@@ -769,33 +760,16 @@ kvm_close(kvm_t *kd)
 int
 kvm_nlist(kvm_t *kd, struct nlist *nl)
 {
-	int rv, nlfd;
-
-	/*
-	 * kd->nlfd might be negative when we get here, and in that
-	 * case that means that we're using /dev/ksyms.
-	 * So open it again, just for the time we retrieve the list.
-	 */
-	if (kd->nlfd < 0) {
-		nlfd = open(_PATH_KSYMS, O_RDONLY | O_CLOEXEC, 0);
-		if (nlfd < 0) {
-			_kvm_err(kd, 0, "failed to open %s", _PATH_KSYMS);
-			return (nlfd);
-		}
-	} else
-		nlfd = kd->nlfd;
+	int rv;
 
 	/*
 	 * Call the nlist(3) routines to retrieve the given namelist.
 	 */
-	rv = __fdnlist(nlfd, nl);
+	rv = __fdnlist(kd->nlfd, nl);
 
 	if (rv == -1)
 		_kvm_err(kd, 0, "bad namelist");
 
-	if (kd->nlfd < 0)
-		close(nlfd);
-
 	return (rv);
 }
 



CVS commit: src/lib/libkvm

2018-01-09 Thread Kamil Rytarowski
Module Name:src
Committed By:   kamil
Date:   Tue Jan  9 21:17:46 UTC 2018

Modified Files:
src/lib/libkvm: kvm_getprocs.3

Log Message:
Correct the signature of kvm_getproc2(3) in the man-page.

The elemsize argument is of type "size_t", not "int".

Sponsored by 


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/lib/libkvm/kvm_getprocs.3

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_getprocs.3
diff -u src/lib/libkvm/kvm_getprocs.3:1.16 src/lib/libkvm/kvm_getprocs.3:1.17
--- src/lib/libkvm/kvm_getprocs.3:1.16	Sun Oct 22 14:25:33 2017
+++ src/lib/libkvm/kvm_getprocs.3	Tue Jan  9 21:17:45 2018
@@ -1,4 +1,4 @@
-.\"	$NetBSD: kvm_getprocs.3,v 1.16 2017/10/22 14:25:33 abhinav Exp $
+.\"	$NetBSD: kvm_getprocs.3,v 1.17 2018/01/09 21:17:45 kamil Exp $
 .\"
 .\" Copyright (c) 1992, 1993
 .\"	The Regents of the University of California.  All rights reserved.
@@ -33,7 +33,7 @@
 .\"
 .\" @(#)kvm_getprocs.3	8.1 (Berkeley) 6/4/93
 .\"
-.Dd February 10, 2004
+.Dd January 9, 2018
 .Dt KVM_GETPROCS 3
 .Os
 .Sh NAME
@@ -58,7 +58,7 @@
 .Ft char **
 .Fn kvm_getenvv "kvm_t *kd" "const struct kinfo_proc *p" "int nchr"
 .Ft struct kinfo_proc2 *
-.Fn kvm_getproc2 "kvm_t *kd" "int op" "int arg" "int elemsize" "int *cnt"
+.Fn kvm_getproc2 "kvm_t *kd" "int op" "int arg" "size_t elemsize" "int *cnt"
 .Ft char **
 .Fn kvm_getargv2 "kvm_t *kd" "const struct kinfo_proc2 *p" "int nchr"
 .Ft char **



CVS commit: src/lib/libkvm

2018-01-09 Thread Kamil Rytarowski
Module Name:src
Committed By:   kamil
Date:   Tue Jan  9 21:13:59 UTC 2018

Modified Files:
src/lib/libkvm: kvm_getlwps.3

Log Message:
Correct the signature of kvm_getlwps(3) in the man-page.

The elemsize argument is of type "size_t", not "int *".

Sponsored by 


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/lib/libkvm/kvm_getlwps.3

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_getlwps.3
diff -u src/lib/libkvm/kvm_getlwps.3:1.7 src/lib/libkvm/kvm_getlwps.3:1.8
--- src/lib/libkvm/kvm_getlwps.3:1.7	Sat Jan 23 00:43:43 2016
+++ src/lib/libkvm/kvm_getlwps.3	Tue Jan  9 21:13:59 2018
@@ -1,4 +1,4 @@
-.\"	$NetBSD: kvm_getlwps.3,v 1.7 2016/01/23 00:43:43 dholland Exp $
+.\"	$NetBSD: kvm_getlwps.3,v 1.8 2018/01/09 21:13:59 kamil Exp $
 .\"
 .\"Copyright (c) 2002 The NetBSD Foundation, Inc.
 .\"All rights reserved.
@@ -27,7 +27,7 @@
 .\"ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 .\"POSSIBILITY OF SUCH DAMAGE.
 .\"
-.Dd February 10, 2004
+.Dd January 9, 2018
 .Dt KVM_GETLWPS 3
 .Os
 .Sh NAME
@@ -41,7 +41,7 @@
 .In sys/sysctl.h
 .\" .Fa kvm_t *kd
 .Ft struct kinfo_lwp *
-.Fn kvm_getlwps "kvm_t *kd" "int pid" "unsigned long procaddr" "int *elemsize" "int *cnt"
+.Fn kvm_getlwps "kvm_t *kd" "int pid" "unsigned long procaddr" "size_t elemsize" "int *cnt"
 .Sh DESCRIPTION
 .Fn kvm_getlwps
 returns the set of LWPs belonging to the process specified by



CVS commit: src/lib/libkvm

2017-10-22 Thread Abhinav Upadhyay
Module Name:src
Committed By:   abhinav
Date:   Sun Oct 22 14:25:33 UTC 2017

Modified Files:
src/lib/libkvm: kvm_getprocs.3

Log Message:
Add rest of the functions from the SYNOPSIS to the NAME section


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/lib/libkvm/kvm_getprocs.3

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_getprocs.3
diff -u src/lib/libkvm/kvm_getprocs.3:1.15 src/lib/libkvm/kvm_getprocs.3:1.16
--- src/lib/libkvm/kvm_getprocs.3:1.15	Tue Mar 10 23:49:07 2009
+++ src/lib/libkvm/kvm_getprocs.3	Sun Oct 22 14:25:33 2017
@@ -1,4 +1,4 @@
-.\"	$NetBSD: kvm_getprocs.3,v 1.15 2009/03/10 23:49:07 joerg Exp $
+.\"	$NetBSD: kvm_getprocs.3,v 1.16 2017/10/22 14:25:33 abhinav Exp $
 .\"
 .\" Copyright (c) 1992, 1993
 .\"	The Regents of the University of California.  All rights reserved.
@@ -39,7 +39,10 @@
 .Sh NAME
 .Nm kvm_getprocs ,
 .Nm kvm_getargv ,
-.Nm kvm_getenvv
+.Nm kvm_getenvv ,
+.Nm kvm_getproc2 ,
+.Nm kvm_getargv2 ,
+.Nm kvm_getenvv2
 .Nd access user process state
 .Sh LIBRARY
 .Lb libkvm



CVS commit: src/lib/libkvm

2016-04-04 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Mon Apr  4 22:14:38 UTC 2016

Modified Files:
src/lib/libkvm: kvm_proc.c

Log Message:
some ports need 


To generate a diff of this commit:
cvs rdiff -u -r1.91 -r1.92 src/lib/libkvm/kvm_proc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_proc.c
diff -u src/lib/libkvm/kvm_proc.c:1.91 src/lib/libkvm/kvm_proc.c:1.92
--- src/lib/libkvm/kvm_proc.c:1.91	Mon Apr  4 17:08:44 2016
+++ src/lib/libkvm/kvm_proc.c	Mon Apr  4 18:14:38 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_proc.c,v 1.91 2016/04/04 21:08:44 christos Exp $	*/
+/*	$NetBSD: kvm_proc.c,v 1.92 2016/04/04 22:14:38 christos Exp $	*/
 
 /*-
  * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm_proc.c	8.3 (Berkeley) 9/23/93";
 #else
-__RCSID("$NetBSD: kvm_proc.c,v 1.91 2016/04/04 21:08:44 christos Exp $");
+__RCSID("$NetBSD: kvm_proc.c,v 1.92 2016/04/04 22:14:38 christos Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -80,6 +80,7 @@ __RCSID("$NetBSD: kvm_proc.c,v 1.91 2016
 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 



CVS commit: src/lib/libkvm

2016-04-04 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Mon Apr  4 21:08:44 UTC 2016

Modified Files:
src/lib/libkvm: kvm_proc.c

Log Message:
catch up with p_xstat split.


To generate a diff of this commit:
cvs rdiff -u -r1.90 -r1.91 src/lib/libkvm/kvm_proc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_proc.c
diff -u src/lib/libkvm/kvm_proc.c:1.90 src/lib/libkvm/kvm_proc.c:1.91
--- src/lib/libkvm/kvm_proc.c:1.90	Wed Feb 19 15:21:22 2014
+++ src/lib/libkvm/kvm_proc.c	Mon Apr  4 17:08:44 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_proc.c,v 1.90 2014/02/19 20:21:22 dsl Exp $	*/
+/*	$NetBSD: kvm_proc.c,v 1.91 2016/04/04 21:08:44 christos Exp $	*/
 
 /*-
  * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm_proc.c	8.3 (Berkeley) 9/23/93";
 #else
-__RCSID("$NetBSD: kvm_proc.c,v 1.90 2014/02/19 20:21:22 dsl Exp $");
+__RCSID("$NetBSD: kvm_proc.c,v 1.91 2016/04/04 21:08:44 christos Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -638,7 +638,7 @@ again:
 			kp2p->p_usrpri = kl[0].l_priority;
 			kp2p->p_nice = kp->kp_proc.p_nice;
 
-			kp2p->p_xstat = kp->kp_proc.p_xstat;
+			kp2p->p_xstat = P_WAITSTATUS(&kp->kp_proc);
 			kp2p->p_acflag = kp->kp_proc.p_acflag;
 
 			/*CONSTCOND*/



CVS commit: src/lib/libkvm

2016-03-28 Thread matthew green
Module Name:src
Committed By:   mrg
Date:   Tue Mar 29 06:51:40 UTC 2016

Modified Files:
src/lib/libkvm: kvm.c

Log Message:
distinguish between partial and failed read, so that "read 0x bytes 
failed"
is not output..


To generate a diff of this commit:
cvs rdiff -u -r1.101 -r1.102 src/lib/libkvm/kvm.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm.c
diff -u src/lib/libkvm/kvm.c:1.101 src/lib/libkvm/kvm.c:1.102
--- src/lib/libkvm/kvm.c:1.101	Wed Feb 19 20:21:22 2014
+++ src/lib/libkvm/kvm.c	Tue Mar 29 06:51:40 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm.c,v 1.101 2014/02/19 20:21:22 dsl Exp $	*/
+/*	$NetBSD: kvm.c,v 1.102 2016/03/29 06:51:40 mrg Exp $	*/
 
 /*-
  * Copyright (c) 1989, 1992, 1993
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm.c	8.2 (Berkeley) 2/13/94";
 #else
-__RCSID("$NetBSD: kvm.c,v 1.101 2014/02/19 20:21:22 dsl Exp $");
+__RCSID("$NetBSD: kvm.c,v 1.102 2016/03/29 06:51:40 mrg Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -515,9 +515,14 @@ kvm_dump_mkheader(kvm_t *kd, off_t dump_
 	 */
 	sz = Pread(kd, kd->pmfd, &cpu_hdr, sizeof(cpu_hdr), dump_off);
 	if (sz != sizeof(cpu_hdr)) {
-		_kvm_err(kd, 0, "read %zx bytes at offset %"PRIx64
-		" for cpu_hdr instead of requested %zu",
-		sz, dump_off, sizeof(cpu_hdr));
+		if (sz == -1)
+			_kvm_err(kd, 0, "read %zx bytes at offset %"PRIx64
+			" for cpu_hdr failed: %s", sizeof(cpu_hdr),
+			dump_off, strerror(errno));
+		else
+			_kvm_err(kd, 0, "read %zx bytes at offset %"PRIx64
+			" for cpu_hdr instead of requested %zu",
+			sz, dump_off, sizeof(cpu_hdr));
 		return (-1);
 	}
 	if ((CORE_GETMAGIC(cpu_hdr) != KCORE_MAGIC)



CVS commit: src/lib/libkvm

2016-01-24 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Sun Jan 24 16:07:48 UTC 2016

Modified Files:
src/lib/libkvm: Makefile

Log Message:
mips needs _KMEMUSER for label_t in pcb.h


To generate a diff of this commit:
cvs rdiff -u -r1.50 -r1.51 src/lib/libkvm/Makefile

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/Makefile
diff -u src/lib/libkvm/Makefile:1.50 src/lib/libkvm/Makefile:1.51
--- src/lib/libkvm/Makefile:1.50	Sun Aug 10 19:39:08 2014
+++ src/lib/libkvm/Makefile	Sun Jan 24 11:07:48 2016
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.50 2014/08/10 23:39:08 matt Exp $
+#	$NetBSD: Makefile,v 1.51 2016/01/24 16:07:48 christos Exp $
 #	from: @(#)Makefile	8.1 (Berkeley) 6/4/93
 
 WARNS=	3
@@ -70,5 +70,9 @@ CLEANFILES+=	machine sparc
 CPPFLAGS+=	-I.
 .endif	# }
 
+.if (${MACHINE_ARCH} == "mips")
+CPPFLAGS+=	-D_KMEMUSER
+.endif
+
 
 .include 



CVS commit: src/lib/libkvm

2015-10-30 Thread Takeshi Nakayama
Module Name:src
Committed By:   nakayama
Date:   Sat Oct 31 02:40:44 UTC 2015

Modified Files:
src/lib/libkvm: kvm_sparc.c

Log Message:
Use PRIxPADDR instead of type casting.


To generate a diff of this commit:
cvs rdiff -u -r1.34 -r1.35 src/lib/libkvm/kvm_sparc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_sparc.c
diff -u src/lib/libkvm/kvm_sparc.c:1.34 src/lib/libkvm/kvm_sparc.c:1.35
--- src/lib/libkvm/kvm_sparc.c:1.34	Wed Oct  7 11:56:41 2015
+++ src/lib/libkvm/kvm_sparc.c	Sat Oct 31 02:40:44 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_sparc.c,v 1.34 2015/10/07 11:56:41 martin Exp $	*/
+/*	$NetBSD: kvm_sparc.c,v 1.35 2015/10/31 02:40:44 nakayama Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm_sparc.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: kvm_sparc.c,v 1.34 2015/10/07 11:56:41 martin Exp $");
+__RCSID("$NetBSD: kvm_sparc.c,v 1.35 2015/10/31 02:40:44 nakayama Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -363,7 +363,7 @@ _kvm_pa2off(kvm_t *kd, paddr_t pa)
 		off += mp->size;
 	}
 	if (nmem < 0) {
-		_kvm_err(kd, 0, "invalid address (%lx)", (unsigned long)pa);
+		_kvm_err(kd, 0, "invalid address (%#"PRIxPADDR")", pa);
 		return (-1);
 	}
 



CVS commit: src/lib/libkvm

2015-10-07 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Wed Oct  7 11:56:41 UTC 2015

Modified Files:
src/lib/libkvm: kvm_sparc.c

Log Message:
Fix the -m32 compat build for sparc64 after recent sparc/include/types.h
changes. XXX I suspect this variant has not been tested in real life.


To generate a diff of this commit:
cvs rdiff -u -r1.33 -r1.34 src/lib/libkvm/kvm_sparc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_sparc.c
diff -u src/lib/libkvm/kvm_sparc.c:1.33 src/lib/libkvm/kvm_sparc.c:1.34
--- src/lib/libkvm/kvm_sparc.c:1.33	Wed Feb 19 20:21:22 2014
+++ src/lib/libkvm/kvm_sparc.c	Wed Oct  7 11:56:41 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_sparc.c,v 1.33 2014/02/19 20:21:22 dsl Exp $	*/
+/*	$NetBSD: kvm_sparc.c,v 1.34 2015/10/07 11:56:41 martin Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm_sparc.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: kvm_sparc.c,v 1.33 2014/02/19 20:21:22 dsl Exp $");
+__RCSID("$NetBSD: kvm_sparc.c,v 1.34 2015/10/07 11:56:41 martin Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -325,8 +325,8 @@ _kvm_kvatop4u(kvm_t *kd, vaddr_t va, pad
 	 *	segmap[cpup->nsegmap];
 	 */
 	segmaps = (int64_t **)((long)kd->cpu_data + cpup->segmapoffset);
-	ptes = (int64_t *)(int)_kvm_pa2off(kd,
-	(paddr_t)segmaps[sparc64_va_to_seg(va)]);
+	ptes = (int64_t *)(intptr_t)_kvm_pa2off(kd,
+	(paddr_t)(intptr_t)segmaps[sparc64_va_to_seg(va)]);
 	pte = ptes[sparc64_va_to_pte(va)];
 	if ((pte & SPARC64_TLB_V) != 0)
 		return ((pte & SPARC64_TLB_PA_MASK) | (va & (kd->nbpg - 1)));
@@ -363,7 +363,7 @@ _kvm_pa2off(kvm_t *kd, paddr_t pa)
 		off += mp->size;
 	}
 	if (nmem < 0) {
-		_kvm_err(kd, 0, "invalid address (%lx)", pa);
+		_kvm_err(kd, 0, "invalid address (%lx)", (unsigned long)pa);
 		return (-1);
 	}
 



CVS commit: src/lib/libkvm

2015-04-17 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Fri Apr 17 13:16:01 UTC 2015

Added Files:
src/lib/libkvm: kvm_ia64.c

Log Message:
Dummy support for ia64


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 src/lib/libkvm/kvm_ia64.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Added files:




CVS commit: src/lib/libkvm

2014-08-22 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sat Aug 23 02:25:23 UTC 2014

Modified Files:
src/lib/libkvm: kvm_powerpc64.c

Log Message:
#if 0 some code not in use yet


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/lib/libkvm/kvm_powerpc64.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_powerpc64.c
diff -u src/lib/libkvm/kvm_powerpc64.c:1.5 src/lib/libkvm/kvm_powerpc64.c:1.6
--- src/lib/libkvm/kvm_powerpc64.c:1.5	Mon Jan 27 21:00:01 2014
+++ src/lib/libkvm/kvm_powerpc64.c	Sat Aug 23 02:25:23 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_powerpc64.c,v 1.5 2014/01/27 21:00:01 matt Exp $	*/
+/*	$NetBSD: kvm_powerpc64.c,v 1.6 2014/08/23 02:25:23 matt Exp $	*/
 
 /*
  * Copyright (c) 2005 Wasabi Systems, Inc.
@@ -90,7 +90,7 @@
 #include 
 #include 
 
-__RCSID("$NetBSD: kvm_powerpc64.c,v 1.5 2014/01/27 21:00:01 matt Exp $");
+__RCSID("$NetBSD: kvm_powerpc64.c,v 1.6 2014/08/23 02:25:23 matt Exp $");
 
 void
 _kvm_freevtop(kvm_t *kd)
@@ -117,17 +117,16 @@ _kvm_initvtop(kvm_t *kd)
 int
 _kvm_kvatop(kvm_t *kd, vaddr_t va, paddr_t *pa)
 {
-	cpu_kcore_hdr_t	*cpu_kh;
-	uint32_t	pvr;
 
 	if (ISALIVE(kd)) {
 		_kvm_err(kd, 0, "vatop called in live kernel!");
 		return 0;
 	}
 
-	cpu_kh = kd->cpu_data;
-
-	pvr = (cpu_kh->pvr >> 16);
+#if 0
+	cpu_kcore_hdr_t	*cpu_kh = kd->cpu_data;
+	uint32_t pvr = (cpu_kh->pvr >> 16);
+#endif
 
 
 	/* No hit -- no translation */



CVS commit: src/lib/libkvm

2014-03-03 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Tue Mar  4 06:38:08 UTC 2014

Modified Files:
src/lib/libkvm: kvm_m68k_cmn.c

Log Message:
#include 


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/lib/libkvm/kvm_m68k_cmn.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_m68k_cmn.c
diff -u src/lib/libkvm/kvm_m68k_cmn.c:1.17 src/lib/libkvm/kvm_m68k_cmn.c:1.18
--- src/lib/libkvm/kvm_m68k_cmn.c:1.17	Tue Sep 13 19:11:09 2011
+++ src/lib/libkvm/kvm_m68k_cmn.c	Tue Mar  4 06:38:08 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_m68k_cmn.c,v 1.17 2011/09/13 19:11:09 christos Exp $	*/
+/*	$NetBSD: kvm_m68k_cmn.c,v 1.18 2014/03/04 06:38:08 matt Exp $	*/
 
 /*-
  * Copyright (c) 1989, 1992, 1993
@@ -74,7 +74,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm_hp300.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: kvm_m68k_cmn.c,v 1.17 2011/09/13 19:11:09 christos Exp $");
+__RCSID("$NetBSD: kvm_m68k_cmn.c,v 1.18 2014/03/04 06:38:08 matt Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -97,6 +97,7 @@ __RCSID("$NetBSD: kvm_m68k_cmn.c,v 1.17 
 
 #include 
 #include 
+#include 
 
 #include "kvm_private.h"
 #include "kvm_m68k.h"



CVS commit: src/lib/libkvm

2014-02-19 Thread David Laight
Module Name:src
Committed By:   dsl
Date:   Wed Feb 19 20:21:22 UTC 2014

Modified Files:
src/lib/libkvm: kvm.c kvm_alpha.c kvm_file.c kvm_hppa.c kvm_i386.c
kvm_i386pae.c kvm_mips.c kvm_proc.c kvm_sh3.c kvm_sparc.c
kvm_sparc64.c kvm_vax.c kvm_x86_64.c

Log Message:
Remove the #include  from all of libkvm.
sys/user.h is a stub that just #includes sys/pcb.h.
There are no 'struct pcb' anywhere in here, so I'm extremely doubtful
any of the builds will fail.
OTOH it might be relying on a header that pcb.h includes.
In any case i386 and amd64 build.


To generate a diff of this commit:
cvs rdiff -u -r1.100 -r1.101 src/lib/libkvm/kvm.c
cvs rdiff -u -r1.26 -r1.27 src/lib/libkvm/kvm_alpha.c
cvs rdiff -u -r1.28 -r1.29 src/lib/libkvm/kvm_file.c
cvs rdiff -u -r1.6 -r1.7 src/lib/libkvm/kvm_hppa.c
cvs rdiff -u -r1.29 -r1.30 src/lib/libkvm/kvm_i386.c
cvs rdiff -u -r1.1 -r1.2 src/lib/libkvm/kvm_i386pae.c
cvs rdiff -u -r1.21 -r1.22 src/lib/libkvm/kvm_mips.c
cvs rdiff -u -r1.89 -r1.90 src/lib/libkvm/kvm_proc.c
cvs rdiff -u -r1.8 -r1.9 src/lib/libkvm/kvm_sh3.c
cvs rdiff -u -r1.32 -r1.33 src/lib/libkvm/kvm_sparc.c
cvs rdiff -u -r1.15 -r1.16 src/lib/libkvm/kvm_sparc64.c
cvs rdiff -u -r1.19 -r1.20 src/lib/libkvm/kvm_vax.c
cvs rdiff -u -r1.9 -r1.10 src/lib/libkvm/kvm_x86_64.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm.c
diff -u src/lib/libkvm/kvm.c:1.100 src/lib/libkvm/kvm.c:1.101
--- src/lib/libkvm/kvm.c:1.100	Sun Aug 26 23:09:42 2012
+++ src/lib/libkvm/kvm.c	Wed Feb 19 20:21:22 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm.c,v 1.100 2012/08/26 23:09:42 martin Exp $	*/
+/*	$NetBSD: kvm.c,v 1.101 2014/02/19 20:21:22 dsl Exp $	*/
 
 /*-
  * Copyright (c) 1989, 1992, 1993
@@ -38,12 +38,11 @@
 #if 0
 static char sccsid[] = "@(#)kvm.c	8.2 (Berkeley) 2/13/94";
 #else
-__RCSID("$NetBSD: kvm.c,v 1.100 2012/08/26 23:09:42 martin Exp $");
+__RCSID("$NetBSD: kvm.c,v 1.101 2014/02/19 20:21:22 dsl Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
 #include 
-#include 
 #include 
 #include 
 #include 

Index: src/lib/libkvm/kvm_alpha.c
diff -u src/lib/libkvm/kvm_alpha.c:1.26 src/lib/libkvm/kvm_alpha.c:1.27
--- src/lib/libkvm/kvm_alpha.c:1.26	Mon Jan 27 21:00:01 2014
+++ src/lib/libkvm/kvm_alpha.c	Wed Feb 19 20:21:22 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: kvm_alpha.c,v 1.26 2014/01/27 21:00:01 matt Exp $ */
+/* $NetBSD: kvm_alpha.c,v 1.27 2014/02/19 20:21:22 dsl Exp $ */
 
 /*
  * Copyright (c) 1994, 1995 Carnegie-Mellon University.
@@ -30,7 +30,6 @@
 #define	__KVM_ALPHA_PRIVATE		/* see  */
 
 #include 
-#include 
 #include 
 #include 
 #include 
@@ -51,7 +50,7 @@
 
 #include "kvm_private.h"
 
-__RCSID("$NetBSD: kvm_alpha.c,v 1.26 2014/01/27 21:00:01 matt Exp $");
+__RCSID("$NetBSD: kvm_alpha.c,v 1.27 2014/02/19 20:21:22 dsl Exp $");
 
 /*ARGSUSED*/
 void

Index: src/lib/libkvm/kvm_file.c
diff -u src/lib/libkvm/kvm_file.c:1.28 src/lib/libkvm/kvm_file.c:1.29
--- src/lib/libkvm/kvm_file.c:1.28	Sun Sep 26 22:28:05 2010
+++ src/lib/libkvm/kvm_file.c	Wed Feb 19 20:21:22 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_file.c,v 1.28 2010/09/26 22:28:05 jym Exp $	*/
+/*	$NetBSD: kvm_file.c,v 1.29 2014/02/19 20:21:22 dsl Exp $	*/
 
 /*-
  * Copyright (c) 1989, 1992, 1993
@@ -34,7 +34,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm_file.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: kvm_file.c,v 1.28 2010/09/26 22:28:05 jym Exp $");
+__RCSID("$NetBSD: kvm_file.c,v 1.29 2014/02/19 20:21:22 dsl Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -49,7 +49,6 @@ __RCSID("$NetBSD: kvm_file.c,v 1.28 2010
 #include 
 #undef _KERNEL
 #include 
-#include 
 #include 
 #include 
 #include 

Index: src/lib/libkvm/kvm_hppa.c
diff -u src/lib/libkvm/kvm_hppa.c:1.6 src/lib/libkvm/kvm_hppa.c:1.7
--- src/lib/libkvm/kvm_hppa.c:1.6	Mon Sep 20 23:23:16 2010
+++ src/lib/libkvm/kvm_hppa.c	Wed Feb 19 20:21:22 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_hppa.c,v 1.6 2010/09/20 23:23:16 jym Exp $	*/
+/*	$NetBSD: kvm_hppa.c,v 1.7 2014/02/19 20:21:22 dsl Exp $	*/
 
 /*-
  * Copyright (c) 1989, 1992, 1993
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm_hp300.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: kvm_hppa.c,v 1.6 2010/09/20 23:23:16 jym Exp $");
+__RCSID("$NetBSD: kvm_hppa.c,v 1.7 2014/02/19 20:21:22 dsl Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -49,7 +49,6 @@ __RCSID("$NetBSD: kvm_hppa.c,v 1.6 2010/
  */
 
 #include 
-#include 
 #include 
 #include 
 #include 

Index: src/lib/libkvm/kvm_i386.c
diff -u src/lib/libkvm/kvm_i386.c:1.29 src/lib/libkvm/kvm_i386.c:1.30
--- src/lib/libkvm/kvm_i386.c:1.29	Tue Oct  5 23:48:16 2010
+++ src/lib/libkvm/kvm_i386.c	Wed Feb 19 20:21:22 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_i386.c,v 1.29 2010/10/05 23:48:16 jym Exp $	*/
+/*	$NetBSD: kvm_i386.c,v 1.30 2014/02/19 20:21:22 dsl Exp $	*/
 
 /*-
  * Copyright (c) 1989, 1992, 1993
@@ -38,7 +38,7 @@
 #if 0
 static char sccsi

CVS commit: src/lib/libkvm

2014-01-27 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Mon Jan 27 21:00:01 UTC 2014

Modified Files:
src/lib/libkvm: kvm_alpha.c kvm_m68k.c kvm_powerpc.c kvm_powerpc64.c
kvm_vax.c

Log Message:
Add missing __RCSID("$NetBSD$");


To generate a diff of this commit:
cvs rdiff -u -r1.25 -r1.26 src/lib/libkvm/kvm_alpha.c
cvs rdiff -u -r1.18 -r1.19 src/lib/libkvm/kvm_m68k.c src/lib/libkvm/kvm_vax.c
cvs rdiff -u -r1.12 -r1.13 src/lib/libkvm/kvm_powerpc.c
cvs rdiff -u -r1.4 -r1.5 src/lib/libkvm/kvm_powerpc64.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_alpha.c
diff -u src/lib/libkvm/kvm_alpha.c:1.25 src/lib/libkvm/kvm_alpha.c:1.26
--- src/lib/libkvm/kvm_alpha.c:1.25	Mon Sep 20 23:23:16 2010
+++ src/lib/libkvm/kvm_alpha.c	Mon Jan 27 21:00:01 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: kvm_alpha.c,v 1.25 2010/09/20 23:23:16 jym Exp $ */
+/* $NetBSD: kvm_alpha.c,v 1.26 2014/01/27 21:00:01 matt Exp $ */
 
 /*
  * Copyright (c) 1994, 1995 Carnegie-Mellon University.
@@ -51,6 +51,8 @@
 
 #include "kvm_private.h"
 
+__RCSID("$NetBSD: kvm_alpha.c,v 1.26 2014/01/27 21:00:01 matt Exp $");
+
 /*ARGSUSED*/
 void
 _kvm_freevtop(kvm_t *kd)

Index: src/lib/libkvm/kvm_m68k.c
diff -u src/lib/libkvm/kvm_m68k.c:1.18 src/lib/libkvm/kvm_m68k.c:1.19
--- src/lib/libkvm/kvm_m68k.c:1.18	Mon Sep 20 23:23:16 2010
+++ src/lib/libkvm/kvm_m68k.c	Mon Jan 27 21:00:01 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_m68k.c,v 1.18 2010/09/20 23:23:16 jym Exp $	*/
+/*	$NetBSD: kvm_m68k.c,v 1.19 2014/01/27 21:00:01 matt Exp $	*/
 
 /*-
  * Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -59,6 +59,8 @@
 #include "kvm_private.h"
 #include "kvm_m68k.h"
 
+__RCSID("$NetBSD: kvm_m68k.c,v 1.19 2014/01/27 21:00:01 matt Exp $");
+
 struct name_ops {
 	const char *name;
 	struct kvm_ops *ops;
Index: src/lib/libkvm/kvm_vax.c
diff -u src/lib/libkvm/kvm_vax.c:1.18 src/lib/libkvm/kvm_vax.c:1.19
--- src/lib/libkvm/kvm_vax.c:1.18	Mon Sep 20 23:23:16 2010
+++ src/lib/libkvm/kvm_vax.c	Mon Jan 27 21:00:01 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_vax.c,v 1.18 2010/09/20 23:23:16 jym Exp $ */
+/*	$NetBSD: kvm_vax.c,v 1.19 2014/01/27 21:00:01 matt Exp $ */
 
 /*-
  * Copyright (c) 1992, 1993
@@ -60,6 +60,7 @@
 
 #include "kvm_private.h"
 
+__RCSID("$NetBSD: kvm_vax.c,v 1.19 2014/01/27 21:00:01 matt Exp $");
 
 struct vmstate {
 	u_long end;

Index: src/lib/libkvm/kvm_powerpc.c
diff -u src/lib/libkvm/kvm_powerpc.c:1.12 src/lib/libkvm/kvm_powerpc.c:1.13
--- src/lib/libkvm/kvm_powerpc.c:1.12	Mon Sep 20 23:23:16 2010
+++ src/lib/libkvm/kvm_powerpc.c	Mon Jan 27 21:00:01 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_powerpc.c,v 1.12 2010/09/20 23:23:16 jym Exp $	*/
+/*	$NetBSD: kvm_powerpc.c,v 1.13 2014/01/27 21:00:01 matt Exp $	*/
 
 /*
  * Copyright (c) 2005 Wasabi Systems, Inc.
@@ -91,6 +91,8 @@
 #include 
 #include 
 
+__RCSID("$NetBSD: kvm_powerpc.c,v 1.13 2014/01/27 21:00:01 matt Exp $");
+
 static int	_kvm_match_601bat(kvm_t *, vaddr_t, paddr_t *, int *);
 static int	_kvm_match_bat(kvm_t *, vaddr_t, paddr_t *, int *);
 static int	_kvm_match_sr(kvm_t *, vaddr_t, paddr_t *, int *);

Index: src/lib/libkvm/kvm_powerpc64.c
diff -u src/lib/libkvm/kvm_powerpc64.c:1.4 src/lib/libkvm/kvm_powerpc64.c:1.5
--- src/lib/libkvm/kvm_powerpc64.c:1.4	Mon Sep 20 23:23:16 2010
+++ src/lib/libkvm/kvm_powerpc64.c	Mon Jan 27 21:00:01 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_powerpc64.c,v 1.4 2010/09/20 23:23:16 jym Exp $	*/
+/*	$NetBSD: kvm_powerpc64.c,v 1.5 2014/01/27 21:00:01 matt Exp $	*/
 
 /*
  * Copyright (c) 2005 Wasabi Systems, Inc.
@@ -90,6 +90,8 @@
 #include 
 #include 
 
+__RCSID("$NetBSD: kvm_powerpc64.c,v 1.5 2014/01/27 21:00:01 matt Exp $");
+
 void
 _kvm_freevtop(kvm_t *kd)
 {



CVS commit: src/lib/libkvm

2012-08-26 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Sun Aug 26 23:09:42 UTC 2012

Modified Files:
src/lib/libkvm: kvm.c

Log Message:
Do not fail kvm_dump_mkheader without setting an error message


To generate a diff of this commit:
cvs rdiff -u -r1.99 -r1.100 src/lib/libkvm/kvm.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm.c
diff -u src/lib/libkvm/kvm.c:1.99 src/lib/libkvm/kvm.c:1.100
--- src/lib/libkvm/kvm.c:1.99	Sat Oct 15 21:08:53 2011
+++ src/lib/libkvm/kvm.c	Sun Aug 26 23:09:42 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm.c,v 1.99 2011/10/15 21:08:53 christos Exp $	*/
+/*	$NetBSD: kvm.c,v 1.100 2012/08/26 23:09:42 martin Exp $	*/
 
 /*-
  * Copyright (c) 1989, 1992, 1993
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm.c	8.2 (Berkeley) 2/13/94";
 #else
-__RCSID("$NetBSD: kvm.c,v 1.99 2011/10/15 21:08:53 christos Exp $");
+__RCSID("$NetBSD: kvm.c,v 1.100 2012/08/26 23:09:42 martin Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -515,8 +515,12 @@ kvm_dump_mkheader(kvm_t *kd, off_t dump_
 	 * Validate new format crash dump
 	 */
 	sz = Pread(kd, kd->pmfd, &cpu_hdr, sizeof(cpu_hdr), dump_off);
-	if (sz != sizeof(cpu_hdr))
+	if (sz != sizeof(cpu_hdr)) {
+		_kvm_err(kd, 0, "read %zx bytes at offset %"PRIx64
+		" for cpu_hdr instead of requested %zu",
+		sz, dump_off, sizeof(cpu_hdr));
 		return (-1);
+	}
 	if ((CORE_GETMAGIC(cpu_hdr) != KCORE_MAGIC)
 		|| (CORE_GETMID(cpu_hdr) != MID_MACHINE)) {
 		_kvm_err(kd, 0, "invalid magic in cpu_hdr");
@@ -529,27 +533,37 @@ kvm_dump_mkheader(kvm_t *kd, off_t dump_
 	 */
 	kd->cpu_dsize = cpu_hdr.c_size;
 	kd->cpu_data = _kvm_malloc(kd, kd->cpu_dsize);
-	if (kd->cpu_data == NULL)
+	if (kd->cpu_data == NULL) {
+		_kvm_err(kd, kd->program, "no cpu_data");
 		goto fail;
+	}
 	sz = Pread(kd, kd->pmfd, kd->cpu_data, cpu_hdr.c_size,
 	dump_off + hdr_size);
-	if (sz != cpu_hdr.c_size)
+	if (sz != cpu_hdr.c_size) {
+		_kvm_err(kd, kd->program, "size %zu != cpu_hdr.csize %"PRIu32,
+		sz, cpu_hdr.c_size);
 		goto fail;
+	}
 	hdr_size += kd->cpu_dsize;
 
 	/*
 	 * Leave phys mem pointer at beginning of memory data
 	 */
 	kd->dump_off = dump_off + hdr_size;
-	if (Lseek(kd, kd->pmfd, kd->dump_off, SEEK_SET) == -1)
+	if (Lseek(kd, kd->pmfd, kd->dump_off, SEEK_SET) == -1) {
+		_kvm_err(kd, kd->program, "failed to seek to %" PRId64,
+		(int64_t)kd->dump_off);
 		goto fail;
+	}
 
 	/*
 	 * Create a kcore_hdr.
 	 */
 	kd->kcore_hdr = _kvm_malloc(kd, sizeof(kcore_hdr_t));
-	if (kd->kcore_hdr == NULL)
+	if (kd->kcore_hdr == NULL) {
+		_kvm_err(kd, kd->program, "failed to allocate header");
 		goto fail;
+	}
 
 	kd->kcore_hdr->c_hdrsize= ALIGN(sizeof(kcore_hdr_t));
 	kd->kcore_hdr->c_seghdrsize = ALIGN(sizeof(kcore_seg_t));



CVS commit: src/lib/libkvm

2012-01-10 Thread Chuck Silvers
Module Name:src
Committed By:   chs
Date:   Tue Jan 10 16:01:16 UTC 2012

Modified Files:
src/lib/libkvm: kvm_x86_64.c

Log Message:
fix handling of large pages.


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/lib/libkvm/kvm_x86_64.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_x86_64.c
diff -u src/lib/libkvm/kvm_x86_64.c:1.8 src/lib/libkvm/kvm_x86_64.c:1.9
--- src/lib/libkvm/kvm_x86_64.c:1.8	Mon Sep 20 23:23:16 2010
+++ src/lib/libkvm/kvm_x86_64.c	Tue Jan 10 16:01:16 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_x86_64.c,v 1.8 2010/09/20 23:23:16 jym Exp $	*/
+/*	$NetBSD: kvm_x86_64.c,v 1.9 2012/01/10 16:01:16 chs Exp $	*/
 
 /*-
  * Copyright (c) 1989, 1992, 1993
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm_hp300.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: kvm_x86_64.c,v 1.8 2010/09/20 23:23:16 jym Exp $");
+__RCSID("$NetBSD: kvm_x86_64.c,v 1.9 2012/01/10 16:01:16 chs Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -105,7 +105,6 @@ _kvm_kvatop(kvm_t *kd, vaddr_t va, paddr
 	}
 
 	cpu_kh = kd->cpu_data;
-	page_off = va & PGOFSET;
 
 	/*
 	 * Find and read all entries to get to the pa.
@@ -138,6 +137,11 @@ _kvm_kvatop(kvm_t *kd, vaddr_t va, paddr
 		_kvm_err(kd, 0, "invalid translation (invalid level 3 PDE)");
 		goto lose;
 	}
+	if (pde & PG_PS) {
+		page_off = va & (NBPD_L3 - 1);
+		*pa = (pde & PG_1GFRAME) + page_off;
+		return (int)(NBPD_L3 - page_off);
+	}
 
 	/*
 	 * Level 2.
@@ -152,7 +156,11 @@ _kvm_kvatop(kvm_t *kd, vaddr_t va, paddr
 		_kvm_err(kd, 0, "invalid translation (invalid level 2 PDE)");
 		goto lose;
 	}
-
+	if (pde & PG_PS) {
+		page_off = va & (NBPD_L2 - 1);
+		*pa = (pde & PG_2MFRAME) + page_off;
+		return (int)(NBPD_L2 - page_off);
+	}
 
 	/*
 	 * Level 1.
@@ -170,6 +178,7 @@ _kvm_kvatop(kvm_t *kd, vaddr_t va, paddr
 		_kvm_err(kd, 0, "invalid translation (invalid PTE)");
 		goto lose;
 	}
+	page_off = va & PGOFSET;
 	*pa = (pte & PG_FRAME) + page_off;
 	return (int)(NBPG - page_off);
 



CVS commit: src/lib/libkvm

2011-10-15 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Sat Oct 15 21:08:53 UTC 2011

Modified Files:
src/lib/libkvm: kvm.c

Log Message:
kill open_cloexec()


To generate a diff of this commit:
cvs rdiff -u -r1.98 -r1.99 src/lib/libkvm/kvm.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm.c
diff -u src/lib/libkvm/kvm.c:1.98 src/lib/libkvm/kvm.c:1.99
--- src/lib/libkvm/kvm.c:1.98	Mon Sep 12 17:11:32 2011
+++ src/lib/libkvm/kvm.c	Sat Oct 15 17:08:53 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm.c,v 1.98 2011/09/12 21:11:32 christos Exp $	*/
+/*	$NetBSD: kvm.c,v 1.99 2011/10/15 21:08:53 christos Exp $	*/
 
 /*-
  * Copyright (c) 1989, 1992, 1993
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm.c	8.2 (Berkeley) 2/13/94";
 #else
-__RCSID("$NetBSD: kvm.c,v 1.98 2011/09/12 21:11:32 christos Exp $");
+__RCSID("$NetBSD: kvm.c,v 1.99 2011/10/15 21:08:53 christos Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -80,7 +80,6 @@ static kvm_t	*_kvm_open(kvm_t *, const c
 		const char *, int, char *);
 static int	clear_gap(kvm_t *, bool (*)(void *, const void *, size_t),
 		void *, size_t);
-static int	open_cloexec(const char *, int, int);
 static off_t	Lseek(kvm_t *, int, off_t, int);
 static ssize_t	Pread(kvm_t *, int, void *, size_t, off_t);
 
@@ -152,27 +151,6 @@ _kvm_malloc(kvm_t *kd, size_t n)
 }
 
 /*
- * Open a file setting the close on exec bit.
- */
-static int
-open_cloexec(const char *fname, int flags, int mode)
-{
-	int fd;
-
-	if ((fd = open(fname, flags, mode)) == -1)
-		return fd;
-	if (fcntl(fd, F_SETFD, FD_CLOEXEC) == -1)
-		goto error;
-
-	return fd;
-error:
-	flags = errno;
-	(void)close(fd);
-	errno = flags;
-	return -1;
-}
-
-/*
  * Wrapper around the lseek(2) system call; calls _kvm_syserr() for us
  * in the event of emergency.
  */
@@ -336,9 +314,9 @@ _kvm_open(kvm_t *kd, const char *uf, con
 	 * exist, open the current kernel.
 	 */
 	if (ufgiven == 0)
-		kd->nlfd = open_cloexec(_PATH_KSYMS, O_RDONLY, 0);
+		kd->nlfd = open(_PATH_KSYMS, O_RDONLY | O_CLOEXEC, 0);
 	if (kd->nlfd < 0) {
-		if ((kd->nlfd = open_cloexec(uf, O_RDONLY, 0)) < 0) {
+		if ((kd->nlfd = open(uf, O_RDONLY | O_CLOEXEC, 0)) < 0) {
 			_kvm_syserr(kd, kd->program, "%s", uf);
 			goto failed;
 		}
@@ -356,7 +334,7 @@ _kvm_open(kvm_t *kd, const char *uf, con
 		kd->nlfd = -1;
 	}
 
-	if ((kd->pmfd = open_cloexec(mf, flag, 0)) < 0) {
+	if ((kd->pmfd = open(mf, flag | O_CLOEXEC, 0)) < 0) {
 		_kvm_syserr(kd, kd->program, "%s", mf);
 		goto failed;
 	}
@@ -370,12 +348,12 @@ _kvm_open(kvm_t *kd, const char *uf, con
 		 * make it work for either /dev/mem or /dev/kmem -- in either
 		 * case you're working with a live kernel.)
 		 */
-		if ((kd->vmfd = open_cloexec(_PATH_KMEM, flag, 0)) < 0) {
+		if ((kd->vmfd = open(_PATH_KMEM, flag | O_CLOEXEC, 0)) < 0) {
 			_kvm_syserr(kd, kd->program, "%s", _PATH_KMEM);
 			goto failed;
 		}
 		kd->alive = KVM_ALIVE_FILES;
-		if ((kd->swfd = open_cloexec(sf, flag, 0)) < 0) {
+		if ((kd->swfd = open(sf, flag | O_CLOEXEC, 0)) < 0) {
 			if (errno != ENXIO) {
 _kvm_syserr(kd, kd->program, "%s", sf);
 goto failed;
@@ -781,7 +759,7 @@ kvm_nlist(kvm_t *kd, struct nlist *nl)
 	 * So open it again, just for the time we retrieve the list.
 	 */
 	if (kd->nlfd < 0) {
-		nlfd = open_cloexec(_PATH_KSYMS, O_RDONLY, 0);
+		nlfd = open(_PATH_KSYMS, O_RDONLY | O_CLOEXEC, 0);
 		if (nlfd < 0) {
 			_kvm_err(kd, 0, "failed to open %s", _PATH_KSYMS);
 			return (nlfd);



CVS commit: src/lib/libkvm

2011-09-14 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Wed Sep 14 12:37:56 UTC 2011

Modified Files:
src/lib/libkvm: kvm_sun2.c kvm_sun3.c kvm_sun3x.c

Log Message:
more sys/param.h additions


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/lib/libkvm/kvm_sun2.c
cvs rdiff -u -r1.14 -r1.15 src/lib/libkvm/kvm_sun3.c
cvs rdiff -u -r1.11 -r1.12 src/lib/libkvm/kvm_sun3x.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_sun2.c
diff -u src/lib/libkvm/kvm_sun2.c:1.5 src/lib/libkvm/kvm_sun2.c:1.6
--- src/lib/libkvm/kvm_sun2.c:1.5	Mon Sep 20 19:23:16 2010
+++ src/lib/libkvm/kvm_sun2.c	Wed Sep 14 08:37:55 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_sun2.c,v 1.5 2010/09/20 23:23:16 jym Exp $ */
+/*	$NetBSD: kvm_sun2.c,v 1.6 2011/09/14 12:37:55 christos Exp $ */
 
 /*-
  * Copyright (c) 1992, 1993
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm_sparc.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: kvm_sun2.c,v 1.5 2010/09/20 23:23:16 jym Exp $");
+__RCSID("$NetBSD: kvm_sun2.c,v 1.6 2011/09/14 12:37:55 christos Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -48,7 +48,7 @@
  * Note: This file has to build on ALL m68000 machines,
  * so do NOT include any  files here.
  */
-
+#include 
 #include 
 #include 
 

Index: src/lib/libkvm/kvm_sun3.c
diff -u src/lib/libkvm/kvm_sun3.c:1.14 src/lib/libkvm/kvm_sun3.c:1.15
--- src/lib/libkvm/kvm_sun3.c:1.14	Mon Sep 20 19:23:16 2010
+++ src/lib/libkvm/kvm_sun3.c	Wed Sep 14 08:37:55 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_sun3.c,v 1.14 2010/09/20 23:23:16 jym Exp $	*/
+/*	$NetBSD: kvm_sun3.c,v 1.15 2011/09/14 12:37:55 christos Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm_sparc.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: kvm_sun3.c,v 1.14 2010/09/20 23:23:16 jym Exp $");
+__RCSID("$NetBSD: kvm_sun3.c,v 1.15 2011/09/14 12:37:55 christos Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -48,7 +48,7 @@
  * Note: This file has to build on ALL m68k machines,
  * so do NOT include any  files here.
  */
-
+#include 
 #include 
 #include 
 

Index: src/lib/libkvm/kvm_sun3x.c
diff -u src/lib/libkvm/kvm_sun3x.c:1.11 src/lib/libkvm/kvm_sun3x.c:1.12
--- src/lib/libkvm/kvm_sun3x.c:1.11	Mon Sep 20 19:23:16 2010
+++ src/lib/libkvm/kvm_sun3x.c	Wed Sep 14 08:37:55 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_sun3x.c,v 1.11 2010/09/20 23:23:16 jym Exp $	*/
+/*	$NetBSD: kvm_sun3x.c,v 1.12 2011/09/14 12:37:55 christos Exp $	*/
 
 /*-
  * Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -34,7 +34,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm_sparc.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: kvm_sun3x.c,v 1.11 2010/09/20 23:23:16 jym Exp $");
+__RCSID("$NetBSD: kvm_sun3x.c,v 1.12 2011/09/14 12:37:55 christos Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -44,7 +44,7 @@
  * Note: This file has to build on ALL m68k machines,
  * so do NOT include any  files here.
  */
-
+#include 
 #include 
 #include 
 



CVS commit: src/lib/libkvm

2011-09-13 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Tue Sep 13 19:11:09 UTC 2011

Modified Files:
src/lib/libkvm: kvm_m68k_cmn.c

Log Message:
Include  for MAXPATHLEN


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/lib/libkvm/kvm_m68k_cmn.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_m68k_cmn.c
diff -u src/lib/libkvm/kvm_m68k_cmn.c:1.16 src/lib/libkvm/kvm_m68k_cmn.c:1.17
--- src/lib/libkvm/kvm_m68k_cmn.c:1.16	Sun Sep 26 18:28:05 2010
+++ src/lib/libkvm/kvm_m68k_cmn.c	Tue Sep 13 15:11:09 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_m68k_cmn.c,v 1.16 2010/09/26 22:28:05 jym Exp $	*/
+/*	$NetBSD: kvm_m68k_cmn.c,v 1.17 2011/09/13 19:11:09 christos Exp $	*/
 
 /*-
  * Copyright (c) 1989, 1992, 1993
@@ -74,7 +74,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm_hp300.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: kvm_m68k_cmn.c,v 1.16 2010/09/26 22:28:05 jym Exp $");
+__RCSID("$NetBSD: kvm_m68k_cmn.c,v 1.17 2011/09/13 19:11:09 christos Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -85,6 +85,7 @@
  * so do NOT include any  files here.
  */
 
+#include 
 #include 
 #include 
 



CVS commit: src/lib/libkvm

2011-09-13 Thread Thomas Klausner
Module Name:src
Committed By:   wiz
Date:   Tue Sep 13 08:53:15 UTC 2011

Modified Files:
src/lib/libkvm: kvm.3

Log Message:
Sort sections.


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/lib/libkvm/kvm.3

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm.3
diff -u src/lib/libkvm/kvm.3:1.12 src/lib/libkvm/kvm.3:1.13
--- src/lib/libkvm/kvm.3:1.12	Mon Sep 12 21:11:32 2011
+++ src/lib/libkvm/kvm.3	Tue Sep 13 08:53:15 2011
@@ -1,4 +1,4 @@
-.\"	$NetBSD: kvm.3,v 1.12 2011/09/12 21:11:32 christos Exp $
+.\"	$NetBSD: kvm.3,v 1.13 2011/09/13 08:53:15 wiz Exp $
 .\"
 .\" Copyright (c) 1992, 1993
 .\"	The Regents of the University of California.  All rights reserved.
@@ -57,6 +57,11 @@
 .Pp
 .Fn kvm_open
 is first called to obtain a descriptor for all subsequent calls.
+.Sh FILES
+.Bl -tag -width /dev/mem -compact
+.It Pa /dev/mem
+interface to physical memory
+.El
 .Sh COMPATIBILITY
 The kvm interface was first introduced in SunOS.
 A considerable number of programs have been developed that use this
@@ -89,11 +94,6 @@
 .Xr kvm_geterr 3 ,
 to return (not print out) the error message corresponding to the most
 recent error condition on the given descriptor.
-.Sh FILES
-.Bl -tag -width /dev/mem -compact
-.It Pa /dev/mem
-interface to physical memory
-.El
 .Sh SEE ALSO
 .Xr kvm_close 3 ,
 .Xr kvm_getargv 3 ,



CVS commit: src/lib/libkvm

2011-09-13 Thread Thomas Klausner
Module Name:src
Committed By:   wiz
Date:   Tue Sep 13 08:53:10 UTC 2011

Modified Files:
src/lib/libkvm: kvm_getkernelname.3

Log Message:
Fix Xr.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/lib/libkvm/kvm_getkernelname.3

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_getkernelname.3
diff -u src/lib/libkvm/kvm_getkernelname.3:1.1 src/lib/libkvm/kvm_getkernelname.3:1.2
--- src/lib/libkvm/kvm_getkernelname.3:1.1	Mon Sep 12 21:11:53 2011
+++ src/lib/libkvm/kvm_getkernelname.3	Tue Sep 13 08:53:10 2011
@@ -1,4 +1,4 @@
-.\"	$NetBSD: kvm_getkernelname.3,v 1.1 2011/09/12 21:11:53 christos Exp $
+.\"	$NetBSD: kvm_getkernelname.3,v 1.2 2011/09/13 08:53:10 wiz Exp $
 .\"
 .\"
 .\" Copyright (c) 2011 The NetBSD Foundation, Inc.
@@ -50,9 +50,9 @@
 .Sh DESCRIPTION
 This function returns a string containing the kernel name used from the kvm
 descriptor obtained by a previous
-.Xr kvm_open
+.Xr kvm_open 3
 or
-.Xr kvm_openfiles
+.Xr kvm_openfiles 3
 call.
 .Sh SEE ALSO
 .Xr kvm 3 ,



CVS commit: src/lib/libkvm

2011-09-12 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Mon Sep 12 21:11:54 UTC 2011

Added Files:
src/lib/libkvm: kvm_getkernelname.3

Log Message:
doc for kvm_getkernelname


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 src/lib/libkvm/kvm_getkernelname.3

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Added files:

Index: src/lib/libkvm/kvm_getkernelname.3
diff -u /dev/null src/lib/libkvm/kvm_getkernelname.3:1.1
--- /dev/null	Mon Sep 12 17:11:54 2011
+++ src/lib/libkvm/kvm_getkernelname.3	Mon Sep 12 17:11:53 2011
@@ -0,0 +1,67 @@
+.\"	$NetBSD: kvm_getkernelname.3,v 1.1 2011/09/12 21:11:53 christos Exp $
+.\"
+.\"
+.\" Copyright (c) 2011 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Christos Zoulas.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"notice, this list of conditions and the following disclaimer.
+.\" 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 the NetBSD
+.\"Foundation, Inc. and its contributors.
+.\" 4. Neither the name of The NetBSD Foundation nor the names of its
+.\"contributors may be used to endorse or promote products derived
+.\"from this software without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
+.\"
+.Dd September 14, 2011
+.Dt KVM_GETKERNELNAME 3
+.Os
+.Sh NAME
+.Nm kvm_getkernelname
+.Nd get kernel name of opened kvm descriptor
+.Sh LIBRARY
+.Lb libkvm
+.Sh SYNOPSIS
+.In kvm.h
+.Ft const char *
+.Fn kvm_getkernelname "kvm_t *kd"
+.Sh DESCRIPTION
+This function returns a string containing the kernel name used from the kvm
+descriptor obtained by a previous
+.Xr kvm_open
+or
+.Xr kvm_openfiles
+call.
+.Sh SEE ALSO
+.Xr kvm 3 ,
+.Xr kvm_close 3 ,
+.Xr kvm_getargv 3 ,
+.Xr kvm_getenvv 3 ,
+.Xr kvm_getprocs 3 ,
+.Xr kvm_nlist 3 ,
+.Xr kvm_open 3 ,
+.Xr kvm_openfiles 3 ,
+.Xr kvm_read 3 ,
+.Xr kvm_write 3



CVS commit: src/lib/libkvm

2011-09-12 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Mon Sep 12 21:11:32 UTC 2011

Modified Files:
src/lib/libkvm: Makefile kvm.3 kvm.c kvm_open.3 kvm_private.h

Log Message:
add a function to report the name of the file kvm_open{,.files} is using.


To generate a diff of this commit:
cvs rdiff -u -r1.47 -r1.48 src/lib/libkvm/Makefile
cvs rdiff -u -r1.11 -r1.12 src/lib/libkvm/kvm.3
cvs rdiff -u -r1.97 -r1.98 src/lib/libkvm/kvm.c
cvs rdiff -u -r1.17 -r1.18 src/lib/libkvm/kvm_open.3
cvs rdiff -u -r1.19 -r1.20 src/lib/libkvm/kvm_private.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/Makefile
diff -u src/lib/libkvm/Makefile:1.47 src/lib/libkvm/Makefile:1.48
--- src/lib/libkvm/Makefile:1.47	Mon Feb 14 13:27:24 2011
+++ src/lib/libkvm/Makefile	Mon Sep 12 17:11:31 2011
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.47 2011/02/14 18:27:24 matt Exp $
+#	$NetBSD: Makefile,v 1.48 2011/09/12 21:11:31 christos Exp $
 #	from: @(#)Makefile	8.1 (Berkeley) 6/4/93
 
 USE_FORT?= yes	# used primarily by setgid programs
@@ -39,6 +39,7 @@
 .endif
 
 MAN=	kvm.3 kvm_dump.3 kvm_geterr.3 kvm_getfiles.3 kvm_getloadavg.3 \
+	kvm_getkernelname.3 \
 	kvm_getprocs.3 kvm_nlist.3 kvm_open.3 kvm_read.3 kvm_getlwps.3
 
 MLINKS+=kvm_getprocs.3 kvm_getargv.3 kvm_getprocs.3 kvm_getenvv.3

Index: src/lib/libkvm/kvm.3
diff -u src/lib/libkvm/kvm.3:1.11 src/lib/libkvm/kvm.3:1.12
--- src/lib/libkvm/kvm.3:1.11	Thu Aug  7 12:44:35 2003
+++ src/lib/libkvm/kvm.3	Mon Sep 12 17:11:32 2011
@@ -1,4 +1,4 @@
-.\"	$NetBSD: kvm.3,v 1.11 2003/08/07 16:44:35 agc Exp $
+.\"	$NetBSD: kvm.3,v 1.12 2011/09/12 21:11:32 christos Exp $
 .\"
 .\" Copyright (c) 1992, 1993
 .\"	The Regents of the University of California.  All rights reserved.
@@ -33,7 +33,7 @@
 .\"
 .\" @(#)kvm.3	8.1 (Berkeley) 6/4/93
 .\"
-.Dd August 18, 2002
+.Dd September 14, 2011
 .Dt KVM 3
 .Os
 .Sh NAME
@@ -99,6 +99,7 @@
 .Xr kvm_getargv 3 ,
 .Xr kvm_getenvv 3 ,
 .Xr kvm_geterr 3 ,
+.Xr kvm_getkernelname 3 ,
 .Xr kvm_getloadavg 3 ,
 .Xr kvm_getlwps 3 ,
 .Xr kvm_getprocs 3 ,

Index: src/lib/libkvm/kvm.c
diff -u src/lib/libkvm/kvm.c:1.97 src/lib/libkvm/kvm.c:1.98
--- src/lib/libkvm/kvm.c:1.97	Fri Nov 26 17:01:53 2010
+++ src/lib/libkvm/kvm.c	Mon Sep 12 17:11:32 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm.c,v 1.97 2010/11/26 22:01:53 dholland Exp $	*/
+/*	$NetBSD: kvm.c,v 1.98 2011/09/12 21:11:32 christos Exp $	*/
 
 /*-
  * Copyright (c) 1989, 1992, 1993
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm.c	8.2 (Berkeley) 2/13/94";
 #else
-__RCSID("$NetBSD: kvm.c,v 1.97 2010/11/26 22:01:53 dholland Exp $");
+__RCSID("$NetBSD: kvm.c,v 1.98 2011/09/12 21:11:32 christos Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -90,6 +90,12 @@
 	return (kd->errbuf);
 }
 
+const char *
+kvm_getkernelname(kvm_t *kd)
+{
+	return kd->kernelname;
+}
+
 /*
  * Report an error using printf style arguments.  "program" is kd->program
  * on hard errors, and 0 on soft errors, so that under sun error emulation,
@@ -336,7 +342,9 @@
 			_kvm_syserr(kd, kd->program, "%s", uf);
 			goto failed;
 		}
+		strlcpy(kd->kernelname, uf, sizeof(kd->kernelname));
 	} else {
+		strlcpy(kd->kernelname, _PATH_KSYMS, sizeof(kd->kernelname));
 		/*
 		 * We're here because /dev/ksyms was opened
 		 * successfully.  However, we don't want to keep it

Index: src/lib/libkvm/kvm_open.3
diff -u src/lib/libkvm/kvm_open.3:1.17 src/lib/libkvm/kvm_open.3:1.18
--- src/lib/libkvm/kvm_open.3:1.17	Mon Mar 22 17:55:06 2010
+++ src/lib/libkvm/kvm_open.3	Mon Sep 12 17:11:32 2011
@@ -1,4 +1,4 @@
-.\"	$NetBSD: kvm_open.3,v 1.17 2010/03/22 21:55:06 joerg Exp $
+.\"	$NetBSD: kvm_open.3,v 1.18 2011/09/12 21:11:32 christos Exp $
 .\"
 .\" Copyright (c) 1992, 1993
 .\"	The Regents of the University of California.  All rights reserved.
@@ -33,7 +33,7 @@
 .\"
 .\" @(#)kvm_open.3	8.3 (Berkeley) 4/19/94
 .\"
-.Dd September 14, 2009
+.Dd September 14, 2011
 .Dt KVM_OPEN 3
 .Os
 .Sh NAME
@@ -224,6 +224,7 @@
 .Xr kvm_getargv 3 ,
 .Xr kvm_getenvv 3 ,
 .Xr kvm_geterr 3 ,
+.Xr kvm_getkernelname 3 ,
 .Xr kvm_getprocs 3 ,
 .Xr kvm_nlist 3 ,
 .Xr kvm_read 3 ,

Index: src/lib/libkvm/kvm_private.h
diff -u src/lib/libkvm/kvm_private.h:1.19 src/lib/libkvm/kvm_private.h:1.20
--- src/lib/libkvm/kvm_private.h:1.19	Sun Sep 26 18:28:05 2010
+++ src/lib/libkvm/kvm_private.h	Mon Sep 12 17:11:32 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_private.h,v 1.19 2010/09/26 22:28:05 jym Exp $	*/
+/*	$NetBSD: kvm_private.h,v 1.20 2011/09/12 21:11:32 christos Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
@@ -90,6 +90,7 @@
 	size_t fdalign;
 	uint8_t *iobuf;
 	size_t iobufsz;
+	char kernelname[MAXPATHLEN];
 };
 
 /* Levels of aliveness */



CVS commit: src/lib/libkvm

2011-02-14 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Mon Feb 14 18:27:24 UTC 2011

Modified Files:
src/lib/libkvm: Makefile

Log Message:
Add -D_KMEMUSER to CPPFLAGS


To generate a diff of this commit:
cvs rdiff -u -r1.46 -r1.47 src/lib/libkvm/Makefile

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/Makefile
diff -u src/lib/libkvm/Makefile:1.46 src/lib/libkvm/Makefile:1.47
--- src/lib/libkvm/Makefile:1.46	Tue Oct  5 23:48:16 2010
+++ src/lib/libkvm/Makefile	Mon Feb 14 18:27:24 2011
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.46 2010/10/05 23:48:16 jym Exp $
+#	$NetBSD: Makefile,v 1.47 2011/02/14 18:27:24 matt Exp $
 #	from: @(#)Makefile	8.1 (Berkeley) 6/4/93
 
 USE_FORT?= yes	# used primarily by setgid programs
@@ -6,7 +6,7 @@
 USE_SHLIBDIR=	yes
 
 LIB=	kvm
-CPPFLAGS+=-DLIBC_SCCS -I${NETBSDSRCDIR}/sys
+CPPFLAGS+=-DLIBC_SCCS -I${NETBSDSRCDIR}/sys -D_KMEMUSER
 
 SRCS=	kvm.c kvm_file.c kvm_getloadavg.c kvm_proc.c
 



CVS commit: src/lib/libkvm

2011-01-22 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sun Jan 23 06:28:53 UTC 2011

Modified Files:
src/lib/libkvm: kvm_mips.c

Log Message:
Teach libkvm how kernel virtual memory is laided on 64-bit MIPS kernels.


To generate a diff of this commit:
cvs rdiff -u -r1.20 -r1.21 src/lib/libkvm/kvm_mips.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_mips.c
diff -u src/lib/libkvm/kvm_mips.c:1.20 src/lib/libkvm/kvm_mips.c:1.21
--- src/lib/libkvm/kvm_mips.c:1.20	Mon Sep 20 23:23:16 2010
+++ src/lib/libkvm/kvm_mips.c	Sun Jan 23 06:28:52 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: kvm_mips.c,v 1.20 2010/09/20 23:23:16 jym Exp $ */
+/* $NetBSD: kvm_mips.c,v 1.21 2011/01/23 06:28:52 matt Exp $ */
 
 /*
  * Copyright (c) 1994, 1995 Carnegie-Mellon University.
@@ -34,7 +34,7 @@
 
 #include 
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: kvm_mips.c,v 1.20 2010/09/20 23:23:16 jym Exp $");
+__RCSID("$NetBSD: kvm_mips.c,v 1.21 2011/01/23 06:28:52 matt Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 /*
@@ -100,6 +100,23 @@
 	cpu_kh = kd->cpu_data;
 	page_off = va & PGOFSET;
 
+#ifdef _LP64
+	if (MIPS_XKPHYS_P(va)) {
+		/*
+		 * Direct-mapped cached address: just convert it.
+		 */
+		*pa = MIPS_XKPHYS_TO_PHYS(va);
+		return (NBPG - page_off);
+	}
+
+	if (va < MIPS_XKPHYS_START) {
+		/*
+		 * XUSEG (user virtual address space) - invalid.
+		 */
+		_kvm_err(kd, 0, "invalid kernel virtual address");
+		goto lose;
+	}
+#else
 	if (va < MIPS_KSEG0_START) {
 		/*
 		 * KUSEG (user virtual address space) - invalid.
@@ -107,8 +124,9 @@
 		_kvm_err(kd, 0, "invalid kernel virtual address");
 		goto lose;
 	}
+#endif
 
-	if (va >= MIPS_KSEG0_START && va < MIPS_KSEG1_START) {
+	if (MIPS_KSEG0_P(va)) {
 		/*
 		 * Direct-mapped cached address: just convert it.
 		 */
@@ -116,7 +134,7 @@
 		return (NBPG - page_off);
 	}
 
-	if (va >= MIPS_KSEG1_START && va < MIPS_KSEG2_START) {
+	if (MIPS_KSEG1_P(va)) {
 		/*
 		 * Direct-mapped uncached address: just convert it.
 		 */
@@ -124,6 +142,16 @@
 		return (NBPG - page_off);
 	}
 
+#ifdef _LP64
+	if (va >= MIPS_KSEG2_START) {
+		/*
+		 * KUSEG (user virtual address space) - invalid.
+		 */
+		_kvm_err(kd, 0, "invalid kernel virtual address");
+		goto lose;
+	}
+#endif
+
 	/*
 	 * We now know that we're a KSEG2 (kernel virtually mapped)
 	 * address.  Translate the address using the pmap's kernel
@@ -134,10 +162,17 @@
 	 * Step 1: Make sure the kernel page table has a translation
 	 * for the address.
 	 */
+#ifdef _LP64
+	if (va >= (MIPS_XKSEG_START + (cpu_kh->sysmapsize * NBPG))) {
+		_kvm_err(kd, 0, "invalid XKSEG address");
+		goto lose;
+	}
+#else
 	if (va >= (MIPS_KSEG2_START + (cpu_kh->sysmapsize * NBPG))) {
 		_kvm_err(kd, 0, "invalid KSEG2 address");
 		goto lose;
 	}
+#endif
 
 	/*
 	 * Step 2: Locate and read the PTE.



CVS commit: src/lib/libkvm

2010-11-26 Thread David A. Holland
Module Name:src
Committed By:   dholland
Date:   Fri Nov 26 22:01:53 UTC 2010

Modified Files:
src/lib/libkvm: kvm.c

Log Message:
Return error on failure instead of hiding it and always returning zero.
>From Henning Petersen in PR 44152.


To generate a diff of this commit:
cvs rdiff -u -r1.96 -r1.97 src/lib/libkvm/kvm.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm.c
diff -u src/lib/libkvm/kvm.c:1.96 src/lib/libkvm/kvm.c:1.97
--- src/lib/libkvm/kvm.c:1.96	Sat Oct 23 14:34:12 2010
+++ src/lib/libkvm/kvm.c	Fri Nov 26 22:01:53 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm.c,v 1.96 2010/10/23 14:34:12 stacktic Exp $	*/
+/*	$NetBSD: kvm.c,v 1.97 2010/11/26 22:01:53 dholland Exp $	*/
 
 /*-
  * Copyright (c) 1989, 1992, 1993
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm.c	8.2 (Berkeley) 2/13/94";
 #else
-__RCSID("$NetBSD: kvm.c,v 1.96 2010/10/23 14:34:12 stacktic Exp $");
+__RCSID("$NetBSD: kvm.c,v 1.97 2010/11/26 22:01:53 dholland Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -759,7 +759,7 @@
 		free(kd->iobuf);
 	free(kd);
 
-	return (0);
+	return (error);
 }
 
 int



CVS commit: src/lib/libkvm

2010-11-11 Thread Masao Uebayashi
Module Name:src
Committed By:   uebayasi
Date:   Fri Nov 12 04:52:09 UTC 2010

Modified Files:
src/lib/libkvm: kvm_proc.c

Log Message:
Fix build.


To generate a diff of this commit:
cvs rdiff -u -r1.87 -r1.88 src/lib/libkvm/kvm_proc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_proc.c
diff -u src/lib/libkvm/kvm_proc.c:1.87 src/lib/libkvm/kvm_proc.c:1.88
--- src/lib/libkvm/kvm_proc.c:1.87	Sun Sep 26 22:28:05 2010
+++ src/lib/libkvm/kvm_proc.c	Fri Nov 12 04:52:08 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_proc.c,v 1.87 2010/09/26 22:28:05 jym Exp $	*/
+/*	$NetBSD: kvm_proc.c,v 1.88 2010/11/12 04:52:08 uebayasi Exp $	*/
 
 /*-
  * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm_proc.c	8.3 (Berkeley) 9/23/93";
 #else
-__RCSID("$NetBSD: kvm_proc.c,v 1.87 2010/09/26 22:28:05 jym Exp $");
+__RCSID("$NetBSD: kvm_proc.c,v 1.88 2010/11/12 04:52:08 uebayasi Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -102,6 +102,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #include 
 



CVS commit: src/lib/libkvm

2010-10-23 Thread Arnaud Ysmal
Module Name:src
Committed By:   stacktic
Date:   Sat Oct 23 14:34:12 UTC 2010

Modified Files:
src/lib/libkvm: kvm.c

Log Message:
Do not return -1 on _kvm_read when all the requested data could be read (fix 
bin/38648)


To generate a diff of this commit:
cvs rdiff -u -r1.95 -r1.96 src/lib/libkvm/kvm.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm.c
diff -u src/lib/libkvm/kvm.c:1.95 src/lib/libkvm/kvm.c:1.96
--- src/lib/libkvm/kvm.c:1.95	Mon Sep 20 23:23:16 2010
+++ src/lib/libkvm/kvm.c	Sat Oct 23 14:34:12 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm.c,v 1.95 2010/09/20 23:23:16 jym Exp $	*/
+/*	$NetBSD: kvm.c,v 1.96 2010/10/23 14:34:12 stacktic Exp $	*/
 
 /*-
  * Copyright (c) 1989, 1992, 1993
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm.c	8.2 (Berkeley) 2/13/94";
 #else
-__RCSID("$NetBSD: kvm.c,v 1.95 2010/09/20 23:23:16 jym Exp $");
+__RCSID("$NetBSD: kvm.c,v 1.96 2010/10/23 14:34:12 stacktic Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -216,7 +216,7 @@
 		kd->iobufsz = dsize;
 	}
 	rv = pread(fd, kd->iobuf, dsize, doff);
-	if (rv < dsize)
+	if (rv < size + moff)
 		return -1;
 	memcpy(buf, kd->iobuf + moff, size);
 	return size;



CVS commit: src/lib/libkvm

2010-09-26 Thread Jean-Yves Migeon
Module Name:src
Committed By:   jym
Date:   Sun Sep 26 22:28:05 UTC 2010

Modified Files:
src/lib/libkvm: kvm_file.c kvm_getloadavg.c kvm_m68k_cmn.c
kvm_private.h kvm_proc.c

Log Message:
Define KREAD() inside kvm_private.h, for reusability.


To generate a diff of this commit:
cvs rdiff -u -r1.27 -r1.28 src/lib/libkvm/kvm_file.c
cvs rdiff -u -r1.9 -r1.10 src/lib/libkvm/kvm_getloadavg.c
cvs rdiff -u -r1.15 -r1.16 src/lib/libkvm/kvm_m68k_cmn.c
cvs rdiff -u -r1.18 -r1.19 src/lib/libkvm/kvm_private.h
cvs rdiff -u -r1.86 -r1.87 src/lib/libkvm/kvm_proc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_file.c
diff -u src/lib/libkvm/kvm_file.c:1.27 src/lib/libkvm/kvm_file.c:1.28
--- src/lib/libkvm/kvm_file.c:1.27	Sun Sep 19 02:07:00 2010
+++ src/lib/libkvm/kvm_file.c	Sun Sep 26 22:28:05 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_file.c,v 1.27 2010/09/19 02:07:00 jym Exp $	*/
+/*	$NetBSD: kvm_file.c,v 1.28 2010/09/26 22:28:05 jym Exp $	*/
 
 /*-
  * Copyright (c) 1989, 1992, 1993
@@ -34,7 +34,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm_file.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: kvm_file.c,v 1.27 2010/09/19 02:07:00 jym Exp $");
+__RCSID("$NetBSD: kvm_file.c,v 1.28 2010/09/26 22:28:05 jym Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -72,9 +72,6 @@
 
 #include "kvm_private.h"
 
-#define KREAD(kd, addr, obj) \
-	(kvm_read(kd, (u_long) addr, obj, sizeof(*obj)) != sizeof(*obj))
-
 static int
 kvm_deadfiles(kvm_t *, int, int, long, int);
 
@@ -94,7 +91,7 @@
 	 * first copyout filehead
 	 */
 	if (buflen < sizeof(fhead) ||
-	KREAD(kd, ofhead, &fhead)) {
+	KREAD(kd, (u_long)ofhead, &fhead)) {
 		_kvm_err(kd, kd->program, "can't read filehead");
 		return (0);
 	}
@@ -107,7 +104,8 @@
 	 */
 	for (fp = fhead.lh_first; fp != 0; fp = fp->f_list.le_next) {
 		if (buflen > sizeof(struct file)) {
-			if (KREAD(kd, (long)fp, ((struct file *)(void *)where))) {
+			if (KREAD(kd, (u_long)fp,
+			((struct file *)(void *)where))) {
 _kvm_err(kd, kd->program, "can't read kfp");
 return (0);
 			}

Index: src/lib/libkvm/kvm_getloadavg.c
diff -u src/lib/libkvm/kvm_getloadavg.c:1.9 src/lib/libkvm/kvm_getloadavg.c:1.10
--- src/lib/libkvm/kvm_getloadavg.c:1.9	Sun Sep 19 02:07:00 2010
+++ src/lib/libkvm/kvm_getloadavg.c	Sun Sep 26 22:28:05 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_getloadavg.c,v 1.9 2010/09/19 02:07:00 jym Exp $	*/
+/*	$NetBSD: kvm_getloadavg.c,v 1.10 2010/09/26 22:28:05 jym Exp $	*/
 
 /*-
  * Copyright (c) 1993
@@ -34,7 +34,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm_getloadavg.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: kvm_getloadavg.c,v 1.9 2010/09/19 02:07:00 jym Exp $");
+__RCSID("$NetBSD: kvm_getloadavg.c,v 1.10 2010/09/26 22:28:05 jym Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -86,8 +86,6 @@
 		return (-1);
 	}
 
-#define KREAD(kd, addr, obj) \
-	(kvm_read(kd, addr, (void *)(obj), sizeof(*obj)) != sizeof(*obj))
 	if (KREAD(kd, nl[X_AVERUNNABLE].n_value, &loadinfo)) {
 		_kvm_err(kd, kd->program, "can't read averunnable");
 		return (-1);

Index: src/lib/libkvm/kvm_m68k_cmn.c
diff -u src/lib/libkvm/kvm_m68k_cmn.c:1.15 src/lib/libkvm/kvm_m68k_cmn.c:1.16
--- src/lib/libkvm/kvm_m68k_cmn.c:1.15	Mon Sep 20 23:23:16 2010
+++ src/lib/libkvm/kvm_m68k_cmn.c	Sun Sep 26 22:28:05 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_m68k_cmn.c,v 1.15 2010/09/20 23:23:16 jym Exp $	*/
+/*	$NetBSD: kvm_m68k_cmn.c,v 1.16 2010/09/26 22:28:05 jym Exp $	*/
 
 /*-
  * Copyright (c) 1989, 1992, 1993
@@ -74,7 +74,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm_hp300.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: kvm_m68k_cmn.c,v 1.15 2010/09/20 23:23:16 jym Exp $");
+__RCSID("$NetBSD: kvm_m68k_cmn.c,v 1.16 2010/09/26 22:28:05 jym Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -116,9 +116,6 @@
 
 #define	_kvm_btop(v, a)	(((unsigned)(a)) >> (v)->pgshift)
 
-#define KREAD(kd, addr, p)\
-	(kvm_read(kd, addr, (char *)(p), sizeof(*(p))) != sizeof(*(p)))
-
 void
 _kvm_cmn_freevtop(kvm_t *kd)
 {

Index: src/lib/libkvm/kvm_private.h
diff -u src/lib/libkvm/kvm_private.h:1.18 src/lib/libkvm/kvm_private.h:1.19
--- src/lib/libkvm/kvm_private.h:1.18	Mon Sep 20 23:23:16 2010
+++ src/lib/libkvm/kvm_private.h	Sun Sep 26 22:28:05 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_private.h,v 1.18 2010/09/20 23:23:16 jym Exp $	*/
+/*	$NetBSD: kvm_private.h,v 1.19 2010/09/26 22:28:05 jym Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
@@ -119,6 +119,9 @@
 	__attribute__((__format__(__printf__, 3, 4)));
 ssize_t	_kvm_pread(kvm_t *, int, void *, size_t, off_t);
 
+#define KREAD(kd, addr, obj) \
+	(kvm_read(kd, addr, (obj), sizeof(*obj)) != sizeof(*obj))
+
 #define KVM_ALLOC(kd, member, size) \
 do { \
 	if (kd->member == NULL)	\

Index: src/lib/libkvm/kvm_proc.c
diff -u src/lib/libkvm/kvm_proc.c:1.86 src/lib/libkvm/kvm_proc.c:1.87
--- src/lib/libkvm/kvm_proc.c:1.86	Mon

CVS commit: src/lib/libkvm

2010-09-20 Thread Jean-Yves Migeon
Module Name:src
Committed By:   jym
Date:   Mon Sep 20 23:23:16 UTC 2010

Modified Files:
src/lib/libkvm: kvm.c kvm_alpha.c kvm_arm.c kvm_hppa.c kvm_i386.c
kvm_m68k.c kvm_m68k.h kvm_m68k_cmn.c kvm_mips.c kvm_powerpc.c
kvm_powerpc64.c kvm_private.h kvm_proc.c kvm_sh3.c kvm_sparc.c
kvm_sparc64.c kvm_sun2.c kvm_sun3.c kvm_sun3x.c kvm_vax.c
kvm_x86_64.c

Log Message:
Change kvm_pa2off() and kvm_kvatop() prototypes (private to kvm(3)):

-int _kvm_kvatop(kvm_t *, u_long, u_long *);
-off_t   _kvm_pa2off(kvm_t *, u_long);
+int _kvm_kvatop(kvm_t *, vaddr_t, paddr_t *);
+off_t   _kvm_pa2off(kvm_t *, paddr_t);

Basically, use vaddr_t for VA and paddr_t for PA. In addition, for variables
representing addresses, use paddr_t or vaddr_t, depending on the context.

For most arches, vaddr_t and paddr_t are equivalent to unsigned long. However,
the change was needed for exotic situations, like i386 PAE, were unsigned long
is not suitable for PA which are 64 bits long. As this required a complete
change of the function prototypes, all arches had to be adapted accordingly.

Core files from before this commit should still work with the new code; I did
not see any direct dependency between core's structure and kvatop/pa2off.

The change was compile tested for all arches, as it impacts all of them.

See also:

http://mail-index.netbsd.org/current-users/2010/09/07/msg014249.html


To generate a diff of this commit:
cvs rdiff -u -r1.94 -r1.95 src/lib/libkvm/kvm.c
cvs rdiff -u -r1.24 -r1.25 src/lib/libkvm/kvm_alpha.c
cvs rdiff -u -r1.5 -r1.6 src/lib/libkvm/kvm_arm.c src/lib/libkvm/kvm_hppa.c \
src/lib/libkvm/kvm_m68k.h
cvs rdiff -u -r1.27 -r1.28 src/lib/libkvm/kvm_i386.c
cvs rdiff -u -r1.17 -r1.18 src/lib/libkvm/kvm_m68k.c \
src/lib/libkvm/kvm_private.h src/lib/libkvm/kvm_vax.c
cvs rdiff -u -r1.14 -r1.15 src/lib/libkvm/kvm_m68k_cmn.c \
src/lib/libkvm/kvm_sparc64.c
cvs rdiff -u -r1.19 -r1.20 src/lib/libkvm/kvm_mips.c
cvs rdiff -u -r1.11 -r1.12 src/lib/libkvm/kvm_powerpc.c
cvs rdiff -u -r1.3 -r1.4 src/lib/libkvm/kvm_powerpc64.c
cvs rdiff -u -r1.85 -r1.86 src/lib/libkvm/kvm_proc.c
cvs rdiff -u -r1.7 -r1.8 src/lib/libkvm/kvm_sh3.c src/lib/libkvm/kvm_x86_64.c
cvs rdiff -u -r1.31 -r1.32 src/lib/libkvm/kvm_sparc.c
cvs rdiff -u -r1.4 -r1.5 src/lib/libkvm/kvm_sun2.c
cvs rdiff -u -r1.13 -r1.14 src/lib/libkvm/kvm_sun3.c
cvs rdiff -u -r1.10 -r1.11 src/lib/libkvm/kvm_sun3x.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm.c
diff -u src/lib/libkvm/kvm.c:1.94 src/lib/libkvm/kvm.c:1.95
--- src/lib/libkvm/kvm.c:1.94	Mon Sep 14 19:29:20 2009
+++ src/lib/libkvm/kvm.c	Mon Sep 20 23:23:16 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm.c,v 1.94 2009/09/14 19:29:20 apb Exp $	*/
+/*	$NetBSD: kvm.c,v 1.95 2010/09/20 23:23:16 jym Exp $	*/
 
 /*-
  * Copyright (c) 1989, 1992, 1993
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm.c	8.2 (Berkeley) 2/13/94";
 #else
-__RCSID("$NetBSD: kvm.c,v 1.94 2009/09/14 19:29:20 apb Exp $");
+__RCSID("$NetBSD: kvm.c,v 1.95 2010/09/20 23:23:16 jym Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -54,6 +54,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #include 
 
@@ -798,7 +799,7 @@
 kvm_dump_inval(kvm_t *kd)
 {
 	struct nlist	nl[2];
-	u_long		pa;
+	paddr_t		pa;
 	size_t		dsize;
 	off_t		doff;
 	void		*newbuf;
@@ -814,7 +815,7 @@
 		_kvm_err(kd, 0, "bad namelist");
 		return (-1);
 	}
-	if (_kvm_kvatop(kd, (u_long)nl[0].n_value, &pa) == 0)
+	if (_kvm_kvatop(kd, (vaddr_t)nl[0].n_value, &pa) == 0)
 		return (-1);
 
 	errno = 0;
@@ -868,10 +869,10 @@
 		}
 		cp = buf;
 		while (len > 0) {
-			u_long	pa;
+			paddr_t	pa;
 			off_t	foff;
 
-			cc = _kvm_kvatop(kd, kva, &pa);
+			cc = _kvm_kvatop(kd, (vaddr_t)kva, &pa);
 			if (cc == 0)
 return (-1);
 			if (cc > len)

Index: src/lib/libkvm/kvm_alpha.c
diff -u src/lib/libkvm/kvm_alpha.c:1.24 src/lib/libkvm/kvm_alpha.c:1.25
--- src/lib/libkvm/kvm_alpha.c:1.24	Sun Sep 19 02:07:00 2010
+++ src/lib/libkvm/kvm_alpha.c	Mon Sep 20 23:23:16 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: kvm_alpha.c,v 1.24 2010/09/19 02:07:00 jym Exp $ */
+/* $NetBSD: kvm_alpha.c,v 1.25 2010/09/20 23:23:16 jym Exp $ */
 
 /*
  * Copyright (c) 1994, 1995 Carnegie-Mellon University.
@@ -34,12 +34,14 @@
 #include 
 #include 
 #include 
-#include 
+#include 
 #include 
 #include 
 #include 
 
 #include 
+
+#include 
 #include 
 #include 
 
@@ -64,7 +66,7 @@
 }
 
 int
-_kvm_kvatop(kvm_t *kd, u_long va, u_long *pa)
+_kvm_kvatop(kvm_t *kd, vaddr_t va, paddr_t *pa)
 {
 	cpu_kcore_hdr_t *cpu_kh;
 	alpha_pt_entry_t pte;
@@ -151,7 +153,7 @@
  * Translate a physical address to a file-offset in the crash dump.
  */
 off_t
-_kvm_pa2off(kvm_t *kd, u_long pa)
+_kvm_pa2off(kvm_t *kd, paddr_t pa)
 {
 	cpu_kcore_hdr_t *cpu_kh;
 	phys_ram_seg_t *ramsegs;

Index: src/lib/libkvm/kvm_arm.c
diff -u src/lib/libkvm/kvm_arm.c:1.5 src/l

CVS commit: src/lib/libkvm

2010-09-19 Thread Jean-Yves Migeon
Module Name:src
Committed By:   jym
Date:   Sun Sep 19 11:37:40 UTC 2010

Modified Files:
src/lib/libkvm: kvm_powerpc.c

Log Message:
KNF


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/lib/libkvm/kvm_powerpc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_powerpc.c
diff -u src/lib/libkvm/kvm_powerpc.c:1.10 src/lib/libkvm/kvm_powerpc.c:1.11
--- src/lib/libkvm/kvm_powerpc.c:1.10	Sun Sep 19 02:07:00 2010
+++ src/lib/libkvm/kvm_powerpc.c	Sun Sep 19 11:37:40 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_powerpc.c,v 1.10 2010/09/19 02:07:00 jym Exp $	*/
+/*	$NetBSD: kvm_powerpc.c,v 1.11 2010/09/19 11:37:40 jym Exp $	*/
 
 /*
  * Copyright (c) 2005 Wasabi Systems, Inc.
@@ -90,11 +90,10 @@
 #include 
 #include 
 
-static int	_kvm_match_601bat(kvm_t *kd, u_long va, u_long *pa, int *off);
-static int	_kvm_match_bat(kvm_t *kd, u_long va, u_long *pa, int *off);
-static int	_kvm_match_sr(kvm_t *kd, u_long va, u_long *pa, int *off);
-static struct pte *_kvm_scan_pteg(struct pteg *pteg, uint32_t vsid,
-  uint32_t api, int secondary);
+static int	_kvm_match_601bat(kvm_t *, u_long, u_long *, int *);
+static int	_kvm_match_bat(kvm_t *, u_long, u_long *, int *);
+static int	_kvm_match_sr(kvm_t *, u_long, u_long *, int *);
+static struct pte *_kvm_scan_pteg(struct pteg *, uint32_t, uint32_t, int);
 
 void
 _kvm_freevtop(kvm_t *kd)



CVS commit: src/lib/libkvm

2010-09-18 Thread Jean-Yves Migeon
Module Name:src
Committed By:   jym
Date:   Sun Sep 19 02:07:01 UTC 2010

Modified Files:
src/lib/libkvm: kvm_alpha.c kvm_arm.c kvm_file.c kvm_getloadavg.c
kvm_i386.c kvm_m68k.c kvm_m68k.h kvm_m68k_cmn.c kvm_mips.c
kvm_powerpc.c kvm_powerpc64.c kvm_private.h kvm_proc.c kvm_sh3.c
kvm_sparc.c kvm_sparc64.c kvm_sun2.c kvm_sun3.c kvm_sun3x.c
kvm_vax.c kvm_x86_64.c

Log Message:
Ansify and KNF all functions within kvm(3). No objection on current-us...@.

Used as ground for u_long => vaddr_t/paddr_t replacements in kvm(3)
private functions.

Compile tested for all arches. See also:

http://mail-index.netbsd.org/current-users/2010/09/07/msg014249.html


To generate a diff of this commit:
cvs rdiff -u -r1.23 -r1.24 src/lib/libkvm/kvm_alpha.c
cvs rdiff -u -r1.4 -r1.5 src/lib/libkvm/kvm_arm.c src/lib/libkvm/kvm_m68k.h
cvs rdiff -u -r1.26 -r1.27 src/lib/libkvm/kvm_file.c \
src/lib/libkvm/kvm_i386.c
cvs rdiff -u -r1.8 -r1.9 src/lib/libkvm/kvm_getloadavg.c
cvs rdiff -u -r1.16 -r1.17 src/lib/libkvm/kvm_m68k.c \
src/lib/libkvm/kvm_private.h src/lib/libkvm/kvm_vax.c
cvs rdiff -u -r1.13 -r1.14 src/lib/libkvm/kvm_m68k_cmn.c \
src/lib/libkvm/kvm_sparc64.c
cvs rdiff -u -r1.18 -r1.19 src/lib/libkvm/kvm_mips.c
cvs rdiff -u -r1.9 -r1.10 src/lib/libkvm/kvm_powerpc.c \
src/lib/libkvm/kvm_sun3x.c
cvs rdiff -u -r1.2 -r1.3 src/lib/libkvm/kvm_powerpc64.c
cvs rdiff -u -r1.84 -r1.85 src/lib/libkvm/kvm_proc.c
cvs rdiff -u -r1.6 -r1.7 src/lib/libkvm/kvm_sh3.c src/lib/libkvm/kvm_x86_64.c
cvs rdiff -u -r1.30 -r1.31 src/lib/libkvm/kvm_sparc.c
cvs rdiff -u -r1.3 -r1.4 src/lib/libkvm/kvm_sun2.c
cvs rdiff -u -r1.12 -r1.13 src/lib/libkvm/kvm_sun3.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_alpha.c
diff -u src/lib/libkvm/kvm_alpha.c:1.23 src/lib/libkvm/kvm_alpha.c:1.24
--- src/lib/libkvm/kvm_alpha.c:1.23	Tue Jan 15 13:57:41 2008
+++ src/lib/libkvm/kvm_alpha.c	Sun Sep 19 02:07:00 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: kvm_alpha.c,v 1.23 2008/01/15 13:57:41 ad Exp $ */
+/* $NetBSD: kvm_alpha.c,v 1.24 2010/09/19 02:07:00 jym Exp $ */
 
 /*
  * Copyright (c) 1994, 1995 Carnegie-Mellon University.
@@ -51,25 +51,20 @@
 
 /*ARGSUSED*/
 void
-_kvm_freevtop(kd)
-	kvm_t *kd;
+_kvm_freevtop(kvm_t *kd)
 {
 	return;
 }
 
 /*ARGSUSED*/
 int
-_kvm_initvtop(kd)
-	kvm_t *kd;
+_kvm_initvtop(kvm_t *kd)
 {
 	return (0);
 }
 
 int
-_kvm_kvatop(kd, va, pa)
-	kvm_t *kd;
-	u_long va;
-	u_long *pa;
+_kvm_kvatop(kvm_t *kd, u_long va, u_long *pa)
 {
 	cpu_kcore_hdr_t *cpu_kh;
 	alpha_pt_entry_t pte;
@@ -156,9 +151,7 @@
  * Translate a physical address to a file-offset in the crash dump.
  */
 off_t
-_kvm_pa2off(kd, pa)
-	kvm_t *kd;
-	u_long pa;
+_kvm_pa2off(kvm_t *kd, u_long pa)
 {
 	cpu_kcore_hdr_t *cpu_kh;
 	phys_ram_seg_t *ramsegs;
@@ -187,8 +180,7 @@
  * have to deal with these NOT being constants!  (i.e. m68k)
  */
 int
-_kvm_mdopen(kd)
-	kvm_t	*kd;
+_kvm_mdopen(kvm_t *kd)
 {
 
 	kd->usrstack = USRSTACK;

Index: src/lib/libkvm/kvm_arm.c
diff -u src/lib/libkvm/kvm_arm.c:1.4 src/lib/libkvm/kvm_arm.c:1.5
--- src/lib/libkvm/kvm_arm.c:1.4	Tue Jan 15 13:57:42 2008
+++ src/lib/libkvm/kvm_arm.c	Sun Sep 19 02:07:00 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: kvm_arm.c,v 1.4 2008/01/15 13:57:42 ad Exp $	 */
+/* $NetBSD: kvm_arm.c,v 1.5 2010/09/19 02:07:00 jym Exp $	 */
 
 /*-
  * Copyright (C) 1996 Wolfgang Solfrank.
@@ -39,7 +39,7 @@
 
 #include 
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: kvm_arm.c,v 1.4 2008/01/15 13:57:42 ad Exp $");
+__RCSID("$NetBSD: kvm_arm.c,v 1.5 2010/09/19 02:07:00 jym Exp $");
 #endif/* LIBC_SCCS and not lint */
 
 #include 
@@ -71,7 +71,7 @@
 }
 
 int
-_kvm_kvatop(kvm_t * kd, u_long va, u_long * pa)
+_kvm_kvatop(kvm_t * kd, u_long va, u_long *pa)
 {
 	cpu_kcore_hdr_t *cpu_kh;
 	pd_entry_t  pde;
Index: src/lib/libkvm/kvm_m68k.h
diff -u src/lib/libkvm/kvm_m68k.h:1.4 src/lib/libkvm/kvm_m68k.h:1.5
--- src/lib/libkvm/kvm_m68k.h:1.4	Mon Apr 28 20:23:01 2008
+++ src/lib/libkvm/kvm_m68k.h	Sun Sep 19 02:07:00 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_m68k.h,v 1.4 2008/04/28 20:23:01 martin Exp $	*/
+/*	$NetBSD: kvm_m68k.h,v 1.5 2010/09/19 02:07:00 jym Exp $	*/
 
 /*-
  * Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -30,10 +30,10 @@
  */
 
 struct kvm_ops {
-	int   (*initvtop) __P((kvm_t *));
-	void  (*freevtop) __P((kvm_t *));
-	int	  (*kvatop)   __P((kvm_t *, u_long, u_long *));
-	off_t (*pa2off)   __P((kvm_t *, u_long));
+	int   (*initvtop)(kvm_t *);
+	void  (*freevtop)(kvm_t *);
+	int   (*kvatop)  (kvm_t *, u_long, u_long *);
+	off_t (*pa2off)  (kvm_t *, u_long);
 };
 
 struct vmstate {

Index: src/lib/libkvm/kvm_file.c
diff -u src/lib/libkvm/kvm_file.c:1.26 src/lib/libkvm/kvm_file.c:1.27
--- src/lib/libkvm/kvm_file.c:1.26	Wed Mar 12 05:57:28 2008
+++ src/lib/libkvm/kvm_file.c	Sun Sep 19 02:07:00 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_file.c,v 1.26 20

CVS commit: src/lib/libkvm

2010-06-24 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Thu Jun 24 20:46:11 UTC 2010

Modified Files:
src/lib/libkvm: kvm_hppa.c

Log Message:
More KNF


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/lib/libkvm/kvm_hppa.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_hppa.c
diff -u src/lib/libkvm/kvm_hppa.c:1.4 src/lib/libkvm/kvm_hppa.c:1.5
--- src/lib/libkvm/kvm_hppa.c:1.4	Thu Jun 24 20:42:24 2010
+++ src/lib/libkvm/kvm_hppa.c	Thu Jun 24 20:46:11 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_hppa.c,v 1.4 2010/06/24 20:42:24 skrll Exp $	*/
+/*	$NetBSD: kvm_hppa.c,v 1.5 2010/06/24 20:46:11 skrll Exp $	*/
 
 /*-
  * Copyright (c) 1989, 1992, 1993
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm_hp300.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: kvm_hppa.c,v 1.4 2010/06/24 20:42:24 skrll Exp $");
+__RCSID("$NetBSD: kvm_hppa.c,v 1.5 2010/06/24 20:46:11 skrll Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -108,7 +108,7 @@
 
 	if (ISALIVE(kd)) {
 		_kvm_err(kd, 0, "vatop called in live kernel!");
-		return (0);
+		return 0;
 	}
 
 	_kvm_syserr(kd, 0, "could not read PTE");



CVS commit: src/lib/libkvm

2010-06-24 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Thu Jun 24 20:42:24 UTC 2010

Modified Files:
src/lib/libkvm: kvm_hppa.c

Log Message:
ANSIfy / KNF.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/lib/libkvm/kvm_hppa.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_hppa.c
diff -u src/lib/libkvm/kvm_hppa.c:1.3 src/lib/libkvm/kvm_hppa.c:1.4
--- src/lib/libkvm/kvm_hppa.c:1.3	Tue Jan 15 13:57:42 2008
+++ src/lib/libkvm/kvm_hppa.c	Thu Jun 24 20:42:24 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_hppa.c,v 1.3 2008/01/15 13:57:42 ad Exp $	*/
+/*	$NetBSD: kvm_hppa.c,v 1.4 2010/06/24 20:42:24 skrll Exp $	*/
 
 /*-
  * Copyright (c) 1989, 1992, 1993
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm_hp300.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: kvm_hppa.c,v 1.3 2008/01/15 13:57:42 ad Exp $");
+__RCSID("$NetBSD: kvm_hppa.c,v 1.4 2010/06/24 20:42:24 skrll Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -76,8 +76,7 @@
 #endif
 
 void
-_kvm_freevtop(kd)
-	kvm_t *kd;
+_kvm_freevtop(kvm_t *kd)
 {
 
 	/* Not actually used for anything right now, but safe. */
@@ -87,21 +86,17 @@
 
 /*ARGSUSED*/
 int
-_kvm_initvtop(kd)
-	kvm_t *kd;
+_kvm_initvtop(kvm_t *kd)
 {
 
-	return (0);
+	return 0;
 }
 
 /*
  * Translate a kernel virtual address to a physical address.
  */
 int
-_kvm_kvatop(kd, va, pa)
-	kvm_t *kd;
-	u_long va;
-	u_long *pa;
+_kvm_kvatop(kvm_t *kd, u_long va, u_long *pa)
 {
 #if 0
 	cpu_kcore_hdr_t *cpu_kh;
@@ -159,16 +154,14 @@
  lose:
 #endif
 	*pa = (u_long)~0L;
-	return (0);
+	return 0;
 }
 
 /*
  * Translate a physical address to a file-offset in the crash dump.
  */
 off_t
-_kvm_pa2off(kd, pa)
-	kvm_t *kd;
-	u_long pa;
+_kvm_pa2off(kvm_t *kd, u_long pa)
 {
 #if 0
 	cpu_kcore_hdr_t *cpu_kh;
@@ -189,7 +182,7 @@
 		off += ramsegs[i].size;
 	}
 
-	return (kd->dump_off + off);
+	return kd->dump_off + off;
 #endif
 	return 0;
 }
@@ -200,13 +193,12 @@
  * have to deal with these NOT being constants!  (i.e. m68k)
  */
 int
-_kvm_mdopen(kd)
-	kvm_t	*kd;
+_kvm_mdopen(kvm_t *kd)
 {
 
 	kd->usrstack = USRSTACK;
 	kd->min_uva = VM_MIN_ADDRESS;
 	kd->max_uva = VM_MAXUSER_ADDRESS;
 
-	return (0);
+	return 0;
 }



CVS commit: src/lib/libkvm

2010-03-22 Thread Joerg Sonnenberger
Module Name:src
Committed By:   joerg
Date:   Mon Mar 22 21:55:06 UTC 2010

Modified Files:
src/lib/libkvm: kvm_open.3

Log Message:
Use .In instead of .Ar Pa for headers.


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/lib/libkvm/kvm_open.3

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_open.3
diff -u src/lib/libkvm/kvm_open.3:1.16 src/lib/libkvm/kvm_open.3:1.17
--- src/lib/libkvm/kvm_open.3:1.16	Mon Sep 14 19:34:12 2009
+++ src/lib/libkvm/kvm_open.3	Mon Mar 22 21:55:06 2010
@@ -1,4 +1,4 @@
-.\"	$NetBSD: kvm_open.3,v 1.16 2009/09/14 19:34:12 apb Exp $
+.\"	$NetBSD: kvm_open.3,v 1.17 2010/03/22 21:55:06 joerg Exp $
 .\"
 .\" Copyright (c) 1992, 1993
 .\"	The Regents of the University of California.  All rights reserved.
@@ -75,7 +75,7 @@
 device indicated by
 .Dv _PATH_KSYMS
 in
-.Aq Pa paths.h ;
+.In paths.h ;
 if that fails, then they will use the file indicated by the
 .Xr sysctl 3
 variable
@@ -84,7 +84,7 @@
 the default kernel path indicated by
 .Dv _PATH_UNIX
 in
-.Aq Pa paths.h .
+.In paths.h .
 .Pp
 .Fa corefile
 is the kernel memory device file.
@@ -99,7 +99,7 @@
 the default indicated by
 .Dv _PATH_MEM
 from
-.Aq Pa paths.h
+.In paths.h
 is used.
 .Pp
 .Fa swapfile
@@ -108,7 +108,7 @@
 .Dv NULL ,
 .Dv _PATH_DRUM
 from
-.Aq Pa paths.h
+.In paths.h
 is used.
 .Pp
 The
@@ -199,7 +199,7 @@
 .Fa errbuf
 argument.
 This buffer should be _POSIX2_LINE_MAX characters large (from
-.Aq Pa limits.h ) .
+.In limits.h ) .
 .Sh RETURN VALUES
 The
 .Fn kvm_open



CVS commit: src/lib/libkvm

2009-09-14 Thread Alan Barrett
Module Name:src
Committed By:   apb
Date:   Mon Sep 14 19:34:13 UTC 2009

Modified Files:
src/lib/libkvm: kvm_open.3

Log Message:
Make the documentation match reality.  If no explicit kernel name is
provided, kvm_open() and kvm_openfiles() will try _PATH_KSYMS first,
then either the path from sysctl machdep.booted_kernel (if that's
available) or _PATH_UNIX (if the sysctl is not available).


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/lib/libkvm/kvm_open.3

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_open.3
diff -u src/lib/libkvm/kvm_open.3:1.15 src/lib/libkvm/kvm_open.3:1.16
--- src/lib/libkvm/kvm_open.3:1.15	Tue Mar 10 23:49:07 2009
+++ src/lib/libkvm/kvm_open.3	Mon Sep 14 19:34:12 2009
@@ -1,4 +1,4 @@
-.\"	$NetBSD: kvm_open.3,v 1.15 2009/03/10 23:49:07 joerg Exp $
+.\"	$NetBSD: kvm_open.3,v 1.16 2009/09/14 19:34:12 apb Exp $
 .\"
 .\" Copyright (c) 1992, 1993
 .\"	The Regents of the University of California.  All rights reserved.
@@ -33,7 +33,7 @@
 .\"
 .\" @(#)kvm_open.3	8.3 (Berkeley) 4/19/94
 .\"
-.Dd April 19, 1994
+.Dd September 14, 2009
 .Dt KVM_OPEN 3
 .Os
 .Sh NAME
@@ -69,8 +69,19 @@
 This file must contain a symbol table.
 If this argument is
 .Dv NULL ,
-the currently running system is assumed,
-which is indicated by
+the currently running system is assumed; in this case, the functions will
+attempt to use the
+.Xr ksyms 4
+device indicated by
+.Dv _PATH_KSYMS
+in
+.Aq Pa paths.h ;
+if that fails, then they will use the file indicated by the
+.Xr sysctl 3
+variable
+.Va machdep.booted_kernel ,
+or (if the sysctl information is not available)
+the default kernel path indicated by
 .Dv _PATH_UNIX
 in
 .Aq Pa paths.h .



CVS commit: src/lib/libkvm

2009-09-14 Thread Alan Barrett
Module Name:src
Committed By:   apb
Date:   Mon Sep 14 19:29:20 UTC 2009

Modified Files:
src/lib/libkvm: kvm.c

Log Message:
Move the code that tries to open _PATH_KSYMS first into a common path,
so that it is used both for the /dev/mem case and the core dump case.

Output from savecore(8) before:
savecore - - - (null): kvm_openfiles: /netbsd: No such file or directory
and after:
savecore - - - no core dump


To generate a diff of this commit:
cvs rdiff -u -r1.93 -r1.94 src/lib/libkvm/kvm.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm.c
diff -u src/lib/libkvm/kvm.c:1.93 src/lib/libkvm/kvm.c:1.94
--- src/lib/libkvm/kvm.c:1.93	Thu Aug 20 11:18:55 2009
+++ src/lib/libkvm/kvm.c	Mon Sep 14 19:29:20 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm.c,v 1.93 2009/08/20 11:18:55 he Exp $	*/
+/*	$NetBSD: kvm.c,v 1.94 2009/09/14 19:29:20 apb Exp $	*/
 
 /*-
  * Copyright (c) 1989, 1992, 1993
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm.c	8.2 (Berkeley) 2/13/94";
 #else
-__RCSID("$NetBSD: kvm.c,v 1.93 2009/08/20 11:18:55 he Exp $");
+__RCSID("$NetBSD: kvm.c,v 1.94 2009/09/14 19:29:20 apb Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -324,6 +324,29 @@
 	if (sf == 0)
 		sf = _PATH_DRUM;
 
+	/*
+	 * Open the kernel namelist.  If /dev/ksyms doesn't
+	 * exist, open the current kernel.
+	 */
+	if (ufgiven == 0)
+		kd->nlfd = open_cloexec(_PATH_KSYMS, O_RDONLY, 0);
+	if (kd->nlfd < 0) {
+		if ((kd->nlfd = open_cloexec(uf, O_RDONLY, 0)) < 0) {
+			_kvm_syserr(kd, kd->program, "%s", uf);
+			goto failed;
+		}
+	} else {
+		/*
+		 * We're here because /dev/ksyms was opened
+		 * successfully.  However, we don't want to keep it
+		 * open, so we close it now.  Later, we will open
+		 * it again, since it will be the only case where
+		 * kd->nlfd is negative.
+		 */
+		close(kd->nlfd);
+		kd->nlfd = -1;
+	}
+
 	if ((kd->pmfd = open_cloexec(mf, flag, 0)) < 0) {
 		_kvm_syserr(kd, kd->program, "%s", mf);
 		goto failed;
@@ -350,41 +373,12 @@
 			}
 			/* swap is not configured?  not fatal */
 		}
-		/*
-		 * Open the kernel namelist.  If /dev/ksyms doesn't 
-		 * exist, open the current kernel.
-		 */
-		if (ufgiven == 0)
-			kd->nlfd = open_cloexec(_PATH_KSYMS, O_RDONLY, 0);
-		if (kd->nlfd < 0) {
-			if ((kd->nlfd = open_cloexec(uf, O_RDONLY, 0)) < 0) {
-_kvm_syserr(kd, kd->program, "%s", uf);
-goto failed;
-			}
-		} else {
-			/*
-			 * We're here because /dev/ksyms was opened
-			 * successfully.  However, we don't want to keep it
-			 * open, so we close it now.  Later, we will open
-			 * it again, since it will be the only case where
-			 * kd->nlfd is negative.
-			 */
-			close(kd->nlfd);
-			kd->nlfd = -1;
-		}
 	} else {
 		kd->fdalign = DEV_BSIZE;	/* XXX */
 		/*
 		 * This is a crash dump.
-		 * Initialize the virtual address translation machinery,
-		 * but first setup the namelist fd.
-		 */
-		if ((kd->nlfd = open_cloexec(uf, O_RDONLY, 0)) < 0) {
-			_kvm_syserr(kd, kd->program, "%s", uf);
-			goto failed;
-		}
-
-		/*
+		 * Initialize the virtual address translation machinery.
+		 *
 		 * If there is no valid core header, fail silently here.
 		 * The address translations however will fail without
 		 * header. Things can be made to run by calling



CVS commit: src/lib/libkvm

2009-08-20 Thread Havard Eidnes
Module Name:src
Committed By:   he
Date:   Thu Aug 20 11:18:55 UTC 2009

Modified Files:
src/lib/libkvm: kvm.c

Log Message:
Anoter instance of  -> .


To generate a diff of this commit:
cvs rdiff -u -r1.92 -r1.93 src/lib/libkvm/kvm.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm.c
diff -u src/lib/libkvm/kvm.c:1.92 src/lib/libkvm/kvm.c:1.93
--- src/lib/libkvm/kvm.c:1.92	Tue Jan 15 14:16:30 2008
+++ src/lib/libkvm/kvm.c	Thu Aug 20 11:18:55 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm.c,v 1.92 2008/01/15 14:16:30 ad Exp $	*/
+/*	$NetBSD: kvm.c,v 1.93 2009/08/20 11:18:55 he Exp $	*/
 
 /*-
  * Copyright (c) 1989, 1992, 1993
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm.c	8.2 (Berkeley) 2/13/94";
 #else
-__RCSID("$NetBSD: kvm.c,v 1.92 2008/01/15 14:16:30 ad Exp $");
+__RCSID("$NetBSD: kvm.c,v 1.93 2009/08/20 11:18:55 he Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -51,7 +51,7 @@
 #include 
 
 #include 
-#include 
+#include 
 #include 
 #include 
 



CVS commit: src/lib/libkvm

2009-05-16 Thread YAMAMOTO Takashi
Module Name:src
Committed By:   yamt
Date:   Sat May 16 11:56:47 UTC 2009

Modified Files:
src/lib/libkvm: kvm_proc.c

Log Message:
kvm_getprocs actually works with KVM_NO_FILES.


To generate a diff of this commit:
cvs rdiff -u -r1.82 -r1.83 src/lib/libkvm/kvm_proc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libkvm/kvm_proc.c
diff -u src/lib/libkvm/kvm_proc.c:1.82 src/lib/libkvm/kvm_proc.c:1.83
--- src/lib/libkvm/kvm_proc.c:1.82	Sun Mar 29 01:02:49 2009
+++ src/lib/libkvm/kvm_proc.c	Sat May 16 11:56:47 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: kvm_proc.c,v 1.82 2009/03/29 01:02:49 mrg Exp $	*/
+/*	$NetBSD: kvm_proc.c,v 1.83 2009/05/16 11:56:47 yamt Exp $	*/
 
 /*-
  * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 #if 0
 static char sccsid[] = "@(#)kvm_proc.c	8.3 (Berkeley) 9/23/93";
 #else
-__RCSID("$NetBSD: kvm_proc.c,v 1.82 2009/03/29 01:02:49 mrg Exp $");
+__RCSID("$NetBSD: kvm_proc.c,v 1.83 2009/05/16 11:56:47 yamt Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -860,7 +860,7 @@
 	size_t size;
 	int mib[4], st, nprocs;
 
-	if (ISKMEM(kd)) {
+	if (ISALIVE(kd)) {
 		size = 0;
 		mib[0] = CTL_KERN;
 		mib[1] = KERN_PROC;
@@ -884,10 +884,6 @@
 			return (NULL);
 		}
 		nprocs = (int) (size / sizeof(struct kinfo_proc));
-	} else if (ISSYSCTL(kd)) {
-		_kvm_err(kd, kd->program, "kvm_open called with KVM_NO_FILES, "
-		"can't use kvm_getprocs");
-		return (NULL);
 	} else {
 		struct nlist nl[4], *p;