summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArtur Grabowski <art@cvs.openbsd.org>2001-06-27 05:54:30 +0000
committerArtur Grabowski <art@cvs.openbsd.org>2001-06-27 05:54:30 +0000
commitf54641bc5d0b6a2c9211899632e20e56a3b8361f (patch)
tree87c5707ebf9806be4ac45addbe5b5149956537b3
parent2dc6d7533545e48eb777f86e81d9e2bef9ea8481 (diff)
Bye bye!
-rw-r--r--lib/libkvm.old/Makefile30
-rw-r--r--lib/libkvm.old/kvm.3103
-rw-r--r--lib/libkvm.old/kvm.c598
-rw-r--r--lib/libkvm.old/kvm_alpha.c72
-rw-r--r--lib/libkvm.old/kvm_arm32.c205
-rw-r--r--lib/libkvm.old/kvm_file.c194
-rw-r--r--lib/libkvm.old/kvm_geterr.382
-rw-r--r--lib/libkvm.old/kvm_getfiles.389
-rw-r--r--lib/libkvm.old/kvm_getloadavg.367
-rw-r--r--lib/libkvm.old/kvm_getloadavg.c107
-rw-r--r--lib/libkvm.old/kvm_getprocs.3163
-rw-r--r--lib/libkvm.old/kvm_i386.c195
-rw-r--r--lib/libkvm.old/kvm_m68k.c237
-rw-r--r--lib/libkvm.old/kvm_mips.c164
-rw-r--r--lib/libkvm.old/kvm_nlist.390
-rw-r--r--lib/libkvm.old/kvm_ns32k.c184
-rw-r--r--lib/libkvm.old/kvm_open.3191
-rw-r--r--lib/libkvm.old/kvm_private.h92
-rw-r--r--lib/libkvm.old/kvm_proc.c957
-rw-r--r--lib/libkvm.old/kvm_read.394
-rw-r--r--lib/libkvm.old/kvm_sparc.c251
-rw-r--r--lib/libkvm.old/kvm_sun3.c134
-rw-r--r--lib/libkvm.old/kvm_vax.c135
-rw-r--r--lib/libkvm.old/shlib_version2
24 files changed, 0 insertions, 4436 deletions
diff --git a/lib/libkvm.old/Makefile b/lib/libkvm.old/Makefile
deleted file mode 100644
index aa7926a0b42..00000000000
--- a/lib/libkvm.old/Makefile
+++ /dev/null
@@ -1,30 +0,0 @@
-# $OpenBSD: Makefile,v 1.4 2000/09/03 18:41:13 espie Exp $
-# $NetBSD: Makefile,v 1.4 1996/05/13 02:30:20 thorpej Exp $
-
-LIB= kvm
-CFLAGS+=-DLIBC_SCCS
-CFLAGS+=-I- -I${.CURDIR}
-
-# Try most specific name first.
-.if exists(kvm_${MACHINE}.c)
-SRCS= kvm_${MACHINE}.c
-.else
-# Less specific name (i.e. m68k)
-CFLAGS+=-D${MACHINE}
-SRCS= kvm_${MACHINE_ARCH}.c
-.endif
-
-SRCS+= kvm.c kvm_file.c kvm_getloadavg.c kvm_proc.c
-
-MAN= kvm.3 kvm_geterr.3 kvm_getfiles.3 kvm_getloadavg.3 kvm_getprocs.3 \
- kvm_nlist.3 kvm_open.3 kvm_read.3
-
-MLINKS+=kvm_getprocs.3 kvm_getargv.3 kvm_getprocs.3 kvm_getenvv.3
-MLINKS+=kvm_open.3 kvm_openfiles.3 kvm_open.3 kvm_close.3
-MLINKS+=kvm_read.3 kvm_write.3
-
-.include <bsd.lib.mk>
-
-.if (${UVM:L} == "yes")
-CFLAGS+=-DUVM
-.endif
diff --git a/lib/libkvm.old/kvm.3 b/lib/libkvm.old/kvm.3
deleted file mode 100644
index 7293cb6f26d..00000000000
--- a/lib/libkvm.old/kvm.3
+++ /dev/null
@@ -1,103 +0,0 @@
-.\" $OpenBSD: kvm.3,v 1.1 1996/03/19 23:15:27 niklas Exp $
-.\"
-.\" Copyright (c) 1992, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" This code is derived from software developed by the Computer Systems
-.\" Engineering group at Lawrence Berkeley Laboratory under DARPA contract
-.\" BG 91-66 and contributed to Berkeley.
-.\"
-.\" 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 University of
-.\" California, Berkeley and its contributors.
-.\" 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
-.\"
-.\" @(#)kvm.3 8.1 (Berkeley) 6/4/93
-.\"
-.Dd June 4, 1993
-.Dt KVM 3
-.Os
-.Sh NAME
-.Nm kvm
-.Nd kernel memory interface
-.Sh DESCRIPTION
-The
-.Xr kvm 3
-library provides a uniform interface for accessing kernel virtual memory
-images, including live systems and crashdumps.
-Access to live systems is via
-/dev/mem
-while crashdumps can be examined via the core file generated by
-.Xr savecore 8 .
-The interface behaves identically in both cases.
-Memory can be read and written, kernel symbol addresses can be
-looked up efficiently, and information about user processes can
-be gathered.
-.Pp
-.Fn kvm_open
-is first called to obtain a descriptor for all subsequent calls.
-.Sh COMPATIBILITY
-The kvm interface was first introduced in SunOS. A considerable
-number of programs have been developed that use this interface,
-making backward compatibility highly desirable.
-In most respects, the Sun kvm interface is consistent and clean.
-Accordingly, the generic portion of the interface (i.e.,
-.Fn kvm_open ,
-.Fn kvm_close ,
-.Fn kvm_read ,
-.Fn kvm_write ,
-and
-.Fn kvm_nlist )
-has been incorporated into the BSD interface. Indeed, many kvm
-applications (i.e., debuggers and statistical monitors) use only
-this subset of the interface.
-.Pp
-The process interface was not kept. This is not a portability
-issue since any code that manipulates processes is inherently
-machine dependent.
-.Pp
-Finally, the Sun kvm error reporting semantics are poorly defined.
-The library can be configured either to print errors to stderr automatically,
-or to print no error messages at all.
-In the latter case, the nature of the error cannot be determined.
-To overcome this, the BSD interface includes a
-routine,
-.Xr kvm_geterr 3 ,
-to return (not print out) the error message
-corresponding to the most recent error condition on the
-given descriptor.
-.Sh SEE ALSO
-.Xr kvm_close 3 ,
-.Xr kvm_getargv 3 ,
-.Xr kvm_getenvv 3 ,
-.Xr kvm_geterr 3 ,
-.Xr kvm_getloadavg 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
diff --git a/lib/libkvm.old/kvm.c b/lib/libkvm.old/kvm.c
deleted file mode 100644
index ba48fa8f5c6..00000000000
--- a/lib/libkvm.old/kvm.c
+++ /dev/null
@@ -1,598 +0,0 @@
-/* $OpenBSD: kvm.c,v 1.13 2001/05/17 21:03:49 miod Exp $ */
-/* $NetBSD: kvm.c,v 1.2 1996/05/13 02:30:22 thorpej Exp $ */
-
-/*-
- * Copyright (c) 1989, 1992, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software developed by the Computer Systems
- * Engineering group at Lawrence Berkeley Laboratory under DARPA contract
- * BG 91-66 and contributed to Berkeley.
- *
- * 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 University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-#if 0
-static char sccsid[] = "@(#)kvm.c 8.2 (Berkeley) 2/13/94";
-#else
-static char rcsid[] = "$NetBSD: kvm.c,v 1.2 1996/05/13 02:30:22 thorpej Exp $";
-#endif
-#endif /* LIBC_SCCS and not lint */
-
-#include <sys/param.h>
-#include <sys/user.h>
-#include <sys/proc.h>
-#include <sys/ioctl.h>
-#include <sys/stat.h>
-#include <sys/sysctl.h>
-
-#include <vm/vm.h>
-#include <vm/vm_param.h>
-#include <vm/swap_pager.h>
-
-#include <machine/vmparam.h>
-
-#include <ctype.h>
-#include <db.h>
-#include <fcntl.h>
-#include <kvm.h>
-#include <libgen.h>
-#include <limits.h>
-#include <nlist.h>
-#include <paths.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#include "kvm_private.h"
-
-static int kvm_dbopen __P((kvm_t *, const char *));
-static kvm_t *_kvm_open __P((kvm_t *, const char *, const char *,
- const char *, int, char *));
-
-char *
-kvm_geterr(kd)
- kvm_t *kd;
-{
- return (kd->errbuf);
-}
-
-#ifdef __STDC__
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-
-/*
- * 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,
- * only hard errors are printed out (otherwise, programs like gdb will
- * generate tons of error messages when trying to access bogus pointers).
- */
-void
-#ifdef __STDC__
-_kvm_err(kvm_t *kd, const char *program, const char *fmt, ...)
-#else
-_kvm_err(kd, program, fmt, va_alist)
- kvm_t *kd;
- char *program, *fmt;
- va_dcl
-#endif
-{
- va_list ap;
-
-#ifdef __STDC__
- va_start(ap, fmt);
-#else
- va_start(ap);
-#endif
- if (program != NULL) {
- (void)fprintf(stderr, "%s: ", program);
- (void)vfprintf(stderr, fmt, ap);
- (void)fputc('\n', stderr);
- } else
- (void)vsnprintf(kd->errbuf,
- sizeof(kd->errbuf), (char *)fmt, ap);
-
- va_end(ap);
-}
-
-void
-#ifdef __STDC__
-_kvm_syserr(kvm_t *kd, const char *program, const char *fmt, ...)
-#else
-_kvm_syserr(kd, program, fmt, va_alist)
- kvm_t *kd;
- char *program, *fmt;
- va_dcl
-#endif
-{
- va_list ap;
- register int n;
-
-#ifdef __STDC__
- va_start(ap, fmt);
-#else
- va_start(ap);
-#endif
- if (program != NULL) {
- (void)fprintf(stderr, "%s: ", program);
- (void)vfprintf(stderr, fmt, ap);
- (void)fprintf(stderr, ": %s\n", strerror(errno));
- } else {
- register char *cp = kd->errbuf;
-
- (void)vsnprintf(cp, sizeof(kd->errbuf), (char *)fmt, ap);
- n = strlen(cp);
- (void)snprintf(&cp[n], sizeof(kd->errbuf) - n, ": %s",
- strerror(errno));
- }
- va_end(ap);
-}
-
-void *
-_kvm_malloc(kd, n)
- register kvm_t *kd;
- register size_t n;
-{
- void *p;
-
- if ((p = malloc(n)) == NULL)
- _kvm_err(kd, kd->program, strerror(errno));
- return (p);
-}
-
-static kvm_t *
-_kvm_open(kd, uf, mf, sf, flag, errout)
- register kvm_t *kd;
- const char *uf;
- const char *mf;
- const char *sf;
- int flag;
- char *errout;
-{
- struct stat st;
-
- kd->db = 0;
- kd->pmfd = -1;
- kd->vmfd = -1;
- kd->swfd = -1;
- kd->nlfd = -1;
- kd->procbase = 0;
- kd->nbpg = getpagesize();
- kd->swapspc = 0;
- kd->argspc = 0;
- kd->argbuf = 0;
- kd->argv = 0;
- kd->vmst = 0;
- kd->vm_page_buckets = 0;
-
- if (uf && strlen(uf) >= MAXPATHLEN) {
- _kvm_err(kd, kd->program, "exec file name too long");
- goto failed;
- }
- if (flag & ~O_RDWR) {
- _kvm_err(kd, kd->program, "bad flags arg");
- goto failed;
- }
- if (mf == 0)
- mf = _PATH_MEM;
- if (sf == 0)
- sf = _PATH_DRUM;
-
- if ((kd->pmfd = open(mf, flag, 0)) < 0) {
- _kvm_syserr(kd, kd->program, "%s", mf);
- goto failed;
- }
- if (fstat(kd->pmfd, &st) < 0) {
- _kvm_syserr(kd, kd->program, "%s", mf);
- goto failed;
- }
- if (S_ISCHR(st.st_mode)) {
- /*
- * If this is a character special device, then check that
- * it's /dev/mem. If so, open kmem too. (Maybe we should
- * make it work for either /dev/mem or /dev/kmem -- in either
- * case you're working with a live kernel.)
- */
- if (strcmp(mf, _PATH_MEM) != 0) { /* XXX */
- _kvm_err(kd, kd->program,
- "%s: not physical memory device", mf);
- goto failed;
- }
- if ((kd->vmfd = open(_PATH_KMEM, flag)) < 0) {
- _kvm_syserr(kd, kd->program, "%s", _PATH_KMEM);
- goto failed;
- }
- if ((kd->swfd = open(sf, flag, 0)) < 0) {
- _kvm_syserr(kd, kd->program, "%s", sf);
- goto failed;
- }
- /*
- * Open kvm nlist database. We go ahead and do this
- * here so that we don't have to hold on to the vmunix
- * path name. Since a kvm application will surely do
- * a kvm_nlist(), this probably won't be a wasted effort.
- * If the database cannot be opened, open the namelist
- * argument so we revert to slow nlist() calls.
- * If no file is specified, try opening _PATH_KSYMS and
- * fall back to _PATH_UNIX.
- */
- if (kvm_dbopen(kd, uf ? uf : _PATH_UNIX) == -1 &&
- ((uf && (kd->nlfd = open(uf, O_RDONLY)) == -1) || (!uf &&
- (kd->nlfd = open((uf = _PATH_KSYMS), O_RDONLY)) == -1 &&
- (kd->nlfd = open((uf = _PATH_UNIX), O_RDONLY)) == -1))) {
- _kvm_syserr(kd, kd->program, "%s", uf);
- goto failed;
- }
- } else {
- /*
- * This is a crash dump.
- * Initialize the virtual address translation machinery,
- * but first setup the namelist fd.
- * If no file is specified, try opening _PATH_KSYMS and
- * fall back to _PATH_UNIX.
- */
- if ((uf && (kd->nlfd = open(uf, O_RDONLY)) == -1) || (!uf &&
- (kd->nlfd = open((uf = _PATH_KSYMS), O_RDONLY)) == -1 &&
- (kd->nlfd = open((uf = _PATH_UNIX), O_RDONLY)) == -1)) {
- _kvm_syserr(kd, kd->program, "%s", uf);
- goto failed;
- }
- if (_kvm_initvtop(kd) < 0)
- goto failed;
- }
- return (kd);
-failed:
- /*
- * Copy out the error if doing sane error semantics.
- */
- if (errout != 0)
- strcpy(errout, kd->errbuf);
- (void)kvm_close(kd);
- return (0);
-}
-
-kvm_t *
-kvm_openfiles(uf, mf, sf, flag, errout)
- const char *uf;
- const char *mf;
- const char *sf;
- int flag;
- char *errout;
-{
- register kvm_t *kd;
-
- if ((kd = malloc(sizeof(*kd))) == NULL) {
- (void)strcpy(errout, strerror(errno));
- return (0);
- }
- kd->program = 0;
- return (_kvm_open(kd, uf, mf, sf, flag, errout));
-}
-
-kvm_t *
-kvm_open(uf, mf, sf, flag, program)
- const char *uf;
- const char *mf;
- const char *sf;
- int flag;
- const char *program;
-{
- register kvm_t *kd;
-
- if ((kd = malloc(sizeof(*kd))) == NULL && program != NULL) {
- (void)fprintf(stderr, "%s: %s\n", program, strerror(errno));
- return (0);
- }
- kd->program = program;
- return (_kvm_open(kd, uf, mf, sf, flag, NULL));
-}
-
-int
-kvm_close(kd)
- kvm_t *kd;
-{
- register int error = 0;
-
- if (kd->pmfd >= 0)
- error |= close(kd->pmfd);
- if (kd->vmfd >= 0)
- error |= close(kd->vmfd);
- if (kd->nlfd >= 0)
- error |= close(kd->nlfd);
- if (kd->swfd >= 0)
- error |= close(kd->swfd);
- if (kd->db != 0)
- error |= (kd->db->close)(kd->db);
- if (kd->vmst)
- _kvm_freevtop(kd);
- if (kd->procbase != 0)
- free((void *)kd->procbase);
- if (kd->swapspc != 0)
- free((void *)kd->swapspc);
- if (kd->argspc != 0)
- free((void *)kd->argspc);
- if (kd->argbuf != 0)
- free((void *)kd->argbuf);
- if (kd->argv != 0)
- free((void *)kd->argv);
- free((void *)kd);
-
- return (0);
-}
-
-/*
- * Set up state necessary to do queries on the kernel namelist
- * data base. If the data base is out-of-data/incompatible with
- * given executable, set up things so we revert to standard nlist call.
- * Only called for live kernels. Return 0 on success, -1 on failure.
- */
-static int
-kvm_dbopen(kd, uf)
- kvm_t *kd;
- const char *uf;
-{
- char *cp;
- DBT rec;
- int dbversionlen;
- struct nlist nitem;
- char dbversion[_POSIX2_LINE_MAX];
- char kversion[_POSIX2_LINE_MAX];
- char dbname[MAXPATHLEN];
-
- uf = basename((char *)uf);
-
- (void)snprintf(dbname, sizeof(dbname), "%skvm_%s.db", _PATH_VARDB, uf);
- kd->db = dbopen(dbname, O_RDONLY, 0, DB_HASH, NULL);
- if (kd->db == NULL) {
- switch (errno) {
- case ENOENT:
- /* No kvm_bsd.db, fall back to /bsd silently */
- break;
- case EFTYPE:
- _kvm_err(kd, kd->program,
- "file %s is incorrectly formatted", dbname);
- break;
- case EINVAL:
- _kvm_err(kd, kd->program,
- "invalid argument to dbopen()");
- break;
-
- default:
- _kvm_err(kd, kd->program, "unknown dbopen() error");
- break;
- }
- return (-1);
- }
-
- /*
- * read version out of database
- */
- rec.data = VRS_KEY;
- rec.size = sizeof(VRS_KEY) - 1;
- if ((kd->db->get)(kd->db, (DBT *)&rec, (DBT *)&rec, 0))
- goto close;
- if (rec.data == 0 || rec.size > sizeof(dbversion))
- goto close;
-
- bcopy(rec.data, dbversion, rec.size);
- dbversionlen = rec.size;
- /*
- * Read version string from kernel memory.
- * Since we are dealing with a live kernel, we can call kvm_read()
- * at this point.
- */
- rec.data = VRS_SYM;
- rec.size = sizeof(VRS_SYM) - 1;
- if ((kd->db->get)(kd->db, (DBT *)&rec, (DBT *)&rec, 0))
- goto close;
- if (rec.data == 0 || rec.size != sizeof(struct nlist))
- goto close;
- bcopy((char *)rec.data, (char *)&nitem, sizeof(nitem));
- if (kvm_read(kd, (u_long)nitem.n_value, kversion, dbversionlen) !=
- dbversionlen)
- goto close;
- /*
- * If they match, we win - otherwise clear out kd->db so
- * we revert to slow nlist().
- */
- if (bcmp(dbversion, kversion, dbversionlen) == 0)
- return (0);
-close:
- (void)(kd->db->close)(kd->db);
- kd->db = 0;
-
- return (-1);
-}
-
-int
-kvm_nlist(kd, nl)
- kvm_t *kd;
- struct nlist *nl;
-{
- register struct nlist *p;
- register int nvalid, rv;
-
- /*
- * If we can't use the data base, revert to the
- * slow library call.
- */
- if (kd->db == 0) {
- rv = __fdnlist(kd->nlfd, nl);
- if (rv == -1)
- _kvm_err(kd, 0, "bad namelist");
- return (rv);
- }
-
- /*
- * We can use the kvm data base. Go through each nlist entry
- * and look it up with a db query.
- */
- nvalid = 0;
- for (p = nl; p->n_name && p->n_name[0]; ++p) {
- register int len;
- DBT rec;
-
- if ((len = strlen(p->n_name)) > 4096) {
- /* sanity */
- _kvm_err(kd, kd->program, "symbol too large");
- return (-1);
- }
- rec.data = p->n_name;
- rec.size = len;
-
- /*
- * Make sure that n_value = 0 when the symbol isn't found
- */
- p->n_value = 0;
-
- if ((kd->db->get)(kd->db, (DBT *)&rec, (DBT *)&rec, 0))
- continue;
- if (rec.data == 0 || rec.size != sizeof(struct nlist))
- continue;
- ++nvalid;
- /*
- * Avoid alignment issues.
- */
- bcopy((char *)&((struct nlist *)rec.data)->n_type,
- (char *)&p->n_type,
- sizeof(p->n_type));
- bcopy((char *)&((struct nlist *)rec.data)->n_value,
- (char *)&p->n_value,
- sizeof(p->n_value));
- }
- /*
- * Return the number of entries that weren't found.
- */
- return ((p - nl) - nvalid);
-}
-
-ssize_t
-kvm_read(kd, kva, buf, len)
- kvm_t *kd;
- register u_long kva;
- register void *buf;
- register size_t len;
-{
- register int cc;
- register void *cp;
-
- if (ISALIVE(kd)) {
- /*
- * We're using /dev/kmem. Just read straight from the
- * device and let the active kernel do the address translation.
- */
- errno = 0;
- if (lseek(kd->vmfd, (off_t)kva, SEEK_SET) == -1 &&
- errno != 0) {
- _kvm_err(kd, 0, "invalid address (%x)", kva);
- return (-1);
- }
- cc = read(kd->vmfd, buf, len);
- if (cc < 0) {
- _kvm_syserr(kd, 0, "kvm_read");
- return (-1);
- } else if (cc < len)
- _kvm_err(kd, kd->program, "short read");
- return (cc);
- } else {
- cp = buf;
- while (len > 0) {
- u_long pa;
-
- /* In case of error, _kvm_kvatop sets the err string */
- cc = _kvm_kvatop(kd, kva, &pa);
- if (cc == 0)
- return (-1);
- if (cc > len)
- cc = len;
- errno = 0;
- if (lseek(kd->pmfd, (off_t)pa, SEEK_SET) == -1 &&
- errno != 0) {
- _kvm_syserr(kd, 0, _PATH_MEM);
- break;
- }
- cc = read(kd->pmfd, cp, cc);
- if (cc < 0) {
- _kvm_syserr(kd, kd->program, "kvm_read");
- 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 = (char *)cp + cc;
- kva += cc;
- len -= cc;
- }
- return ((char *)cp - (char *)buf);
- }
- /* NOTREACHED */
-}
-
-ssize_t
-kvm_write(kd, kva, buf, len)
- kvm_t *kd;
- register u_long kva;
- register const void *buf;
- register size_t len;
-{
- register int cc;
-
- if (ISALIVE(kd)) {
- /*
- * Just like kvm_read, only we write.
- */
- errno = 0;
- if (lseek(kd->vmfd, (off_t)kva, SEEK_SET) == -1 &&
- errno != 0) {
- _kvm_err(kd, 0, "invalid address (%x)", kva);
- return (-1);
- }
- cc = write(kd->vmfd, buf, len);
- if (cc < 0) {
- _kvm_syserr(kd, 0, "kvm_write");
- return (-1);
- } else if (cc < len)
- _kvm_err(kd, kd->program, "short write");
- return (cc);
- } else {
- _kvm_err(kd, kd->program,
- "kvm_write not implemented for dead kernels");
- return (-1);
- }
- /* NOTREACHED */
-}
diff --git a/lib/libkvm.old/kvm_alpha.c b/lib/libkvm.old/kvm_alpha.c
deleted file mode 100644
index 51979a08627..00000000000
--- a/lib/libkvm.old/kvm_alpha.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/* $OpenBSD: kvm_alpha.c,v 1.1 1996/03/19 23:15:28 niklas Exp $ */
-/* $NetBSD: kvm_alpha.c,v 1.1.1.1 1996/03/16 10:05:25 leo Exp $ */
-
-/*
- * Copyright (c) 1994, 1995 Carnegie-Mellon University.
- * All rights reserved.
- *
- * Author: Chris G. Demetriou
- *
- * Permission to use, copy, modify and distribute this software and
- * its documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- *
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
- * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
- * Carnegie Mellon requests users of this software to return to
- *
- * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
- * School of Computer Science
- * Carnegie Mellon University
- * Pittsburgh PA 15213-3890
- *
- * any improvements or extensions that they make and grant Carnegie the
- * rights to redistribute these changes.
- */
-
-#include <sys/param.h>
-#include <sys/user.h>
-#include <sys/proc.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <nlist.h>
-#include <kvm.h>
-
-#include <vm/vm.h>
-#include <vm/vm_param.h>
-
-#include <limits.h>
-#include <db.h>
-
-#include "kvm_private.h"
-
-void
-_kvm_freevtop(kd)
- kvm_t *kd;
-{
-
-}
-
-int
-_kvm_initvtop(kd)
- kvm_t *kd;
-{
-
- return (0);
-}
-
-int
-_kvm_kvatop(kd, va, pa)
- kvm_t *kd;
- u_long va;
- u_long *pa;
-{
-
- /* don't forget k0seg translations! */
-
- return (0);
-}
diff --git a/lib/libkvm.old/kvm_arm32.c b/lib/libkvm.old/kvm_arm32.c
deleted file mode 100644
index 005524bdb5f..00000000000
--- a/lib/libkvm.old/kvm_arm32.c
+++ /dev/null
@@ -1,205 +0,0 @@
-/* $OpenBSD: kvm_arm32.c,v 1.1 1996/03/19 23:15:29 niklas Exp $ */
-/* $NetBSD: kvm_arm32.c,v 1.1.1.1 1996/03/16 10:05:25 leo Exp $ */
-
-/*
- * Copyright (c) 1989, 1992, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software developed by the Computer Systems
- * Engineering group at Lawrence Berkeley Laboratory under DARPA contract
- * BG 91-66 and contributed to Berkeley.
- *
- * 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 University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- *
- * $OpenBSD: kvm_arm32.c,v 1.1 1996/03/19 23:15:29 niklas Exp $
- */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-/* from: static char sccsid[] = "@(#)kvm_hp300.c 8.1 (Berkeley) 6/4/93"; */
-static char *rcsid = "$OpenBSD: kvm_arm32.c,v 1.1 1996/03/19 23:15:29 niklas Exp $";
-#endif /* LIBC_SCCS and not lint */
-
-/*
- * arm32 machine dependent routines for kvm.
- */
-
-#include <sys/param.h>
-#include <sys/user.h>
-#include <sys/proc.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <nlist.h>
-#include <kvm.h>
-
-#include <vm/vm.h>
-#include <vm/vm_param.h>
-
-#include <limits.h>
-#include <db.h>
-
-#include "kvm_private.h"
-
-#include <machine/pte.h>
-
-#ifndef btop
-#define btop(x) (((unsigned)(x)) >> PGSHIFT) /* XXX */
-#define ptob(x) ((caddr_t)((x) << PGSHIFT)) /* XXX */
-#endif
-
-struct vmstate {
- pd_entry_t **IdlePTD;
- pd_entry_t *PTD;
-};
-
-#define KREAD(kd, addr, p)\
- (kvm_read(kd, addr, (char *)(p), sizeof(*(p))) != sizeof(*(p)))
-
-void
-_kvm_freevtop(kd)
- kvm_t *kd;
-{
- _kvm_err(kd, 0, "unsupported");
- return;
- if (kd->vmst->PTD != 0)
- free(kd->vmst->PTD);
-
- if (kd->vmst != 0)
- free(kd->vmst);
-}
-
-int
-_kvm_initvtop(kd)
- kvm_t *kd;
-{
- struct vmstate *vm;
- struct nlist nlist[2];
-
- _kvm_err(kd, 0, "unsupported");
- return (0);
- vm = (struct vmstate *)_kvm_malloc(kd, sizeof(*vm));
- if (vm == 0)
- return (-1);
- kd->vmst = vm;
-
- nlist[0].n_name = "_IdlePTD";
- nlist[1].n_name = 0;
-
- if (kvm_nlist(kd, nlist) != 0) {
- _kvm_err(kd, kd->program, "bad namelist");
- return (-1);
- }
- vm->IdlePTD = 0;
- vm->PTD = 0;
- if (KREAD(kd, (u_long)nlist[0].n_value, &vm->IdlePTD)) {
- _kvm_err(kd, kd->program, "cannot read IdlePTD");
- return (-1);
- }
- vm->PTD = (pd_entry_t *)_kvm_malloc(kd, NBPG);
- if ((kvm_read(kd, (u_long)vm->IdlePTD, &vm->PTD, NBPG)) != NBPG) {
- _kvm_err(kd, kd->program, "cannot read PTD");
- return (-1);
- }
- 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;
-{
- struct vmstate *vm;
- u_long offset;
-
- _kvm_err(kd, 0, "unsupported");
- return (0);
- if (ISALIVE(kd)) {
- _kvm_err(kd, 0, "vatop called in live kernel!");
- return(0);
- }
- vm = kd->vmst;
- offset = va & PGOFSET;
-
-invalid:
- _kvm_err(kd, 0, "invalid address (%x)", va);
- return (0);
-}
-
-/*
- * Translate a user virtual address to a physical address.
- */
-int
-_kvm_uvatop(kd, p, va, pa)
- kvm_t *kd;
- const struct proc *p;
- u_long va;
- u_long *pa;
-{
- struct vmspace vms;
- pd_entry_t pde, *pdeloc;
- pt_entry_t pte, *pteloc;
- u_long kva, offset;
-
- _kvm_err(kd, 0, "unsupported");
- return (0);
-
- if (va >= KERNBASE)
- goto invalid;
-
- /* XXX - should be passed a `kinfo_proc *' here */
- if (kvm_read(kd, (u_long)p->p_vmspace, (char *)&vms, sizeof(vms)) !=
- sizeof(vms))
- goto invalid;
-
- pdeloc = vms.vm_pmap.pm_pdir + (va >> PDSHIFT);
- if (kvm_read(kd, (u_long)pdeloc, (char *)&pde, sizeof(pde)) !=
- sizeof(pde))
- goto invalid;
- if (pde == 0)
- goto invalid;
-
- pteloc = (pt_entry_t *)(pde & PG_FRAME) + btop(va & PT_MASK);
- if (lseek(kd->pmfd, (off_t)(u_long)pteloc, 0) != (off_t)(u_long)pteloc)
- goto invalid;
- if (read(kd->pmfd, (char *)&pte, sizeof(pte)) != sizeof(pte))
- goto invalid;
- if (pte == 0)
- goto invalid;
-
- offset = va & PGOFSET;
- *pa = (pte & PG_FRAME) + offset;
- return (NBPG - offset);
-
-invalid:
- _kvm_err(kd, 0, "invalid address (%x)", va);
- return (0);
-}
diff --git a/lib/libkvm.old/kvm_file.c b/lib/libkvm.old/kvm_file.c
deleted file mode 100644
index efcb5d1584d..00000000000
--- a/lib/libkvm.old/kvm_file.c
+++ /dev/null
@@ -1,194 +0,0 @@
-/* $OpenBSD: kvm_file.c,v 1.2 2000/02/19 22:01:31 deraadt Exp $ */
-
-/*-
- * Copyright (c) 1989, 1992, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * 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 University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "@(#)kvm_file.c 8.1 (Berkeley) 6/4/93";
-#endif /* LIBC_SCCS and not lint */
-
-/*
- * File list interface for kvm. pstat, fstat and netstat are
- * users of this code, so we've factored it out into a separate module.
- * Thus, we keep this grunge out of the other kvm applications (i.e.,
- * most other applications are interested only in open/close/read/nlist).
- */
-
-#include <sys/param.h>
-#include <sys/user.h>
-#include <sys/proc.h>
-#include <sys/exec.h>
-#define _KERNEL
-#include <sys/file.h>
-#undef _KERNEL
-#include <sys/stat.h>
-#include <sys/ioctl.h>
-#include <sys/tty.h>
-#include <nlist.h>
-#include <kvm.h>
-
-#include <vm/vm.h>
-#include <vm/vm_param.h>
-#include <vm/swap_pager.h>
-
-#include <sys/sysctl.h>
-
-#include <limits.h>
-#include <ndbm.h>
-#include <paths.h>
-
-#include "kvm_private.h"
-
-#define KREAD(kd, addr, obj) \
- (kvm_read(kd, addr, obj, sizeof(*obj)) != sizeof(*obj))
-
-/*
- * Get file structures.
- */
-static
-kvm_deadfiles(kd, op, arg, filehead_o, nfiles)
- kvm_t *kd;
- int op, arg, nfiles;
- long filehead_o;
-{
- int buflen = kd->arglen, needed = buflen, error, n = 0;
- struct file *fp, file;
- struct filelist filehead;
- register char *where = kd->argspc;
- char *start = where;
-
- /*
- * first copyout filehead
- */
- if (buflen > sizeof (filehead)) {
- if (KREAD(kd, filehead_o, &filehead)) {
- _kvm_err(kd, kd->program, "can't read filehead");
- return (0);
- }
- buflen -= sizeof (filehead);
- where += sizeof (filehead);
- *(struct filelist *)kd->argspc = filehead;
- }
- /*
- * followed by an array of file structures
- */
- for (fp = filehead.lh_first; fp != 0; fp = fp->f_list.le_next) {
- if (buflen > sizeof (struct file)) {
- if (KREAD(kd, (long)fp, ((struct file *)where))) {
- _kvm_err(kd, kd->program, "can't read kfp");
- return (0);
- }
- buflen -= sizeof (struct file);
- fp = (struct file *)where;
- where += sizeof (struct file);
- n++;
- }
- }
- if (n != nfiles) {
- _kvm_err(kd, kd->program, "inconsistant nfiles");
- return (0);
- }
- return (nfiles);
-}
-
-char *
-kvm_getfiles(kd, op, arg, cnt)
- kvm_t *kd;
- int op, arg;
- int *cnt;
-{
- size_t size;
- int mib[2], st, nfiles;
- struct file *fp, *fplim;
- struct filelist filehead;
-
- if (ISALIVE(kd)) {
- size = 0;
- mib[0] = CTL_KERN;
- mib[1] = KERN_FILE;
- st = sysctl(mib, 2, NULL, &size, NULL, 0);
- if (st == -1) {
- _kvm_syserr(kd, kd->program, "kvm_getfiles");
- return (0);
- }
- if (kd->argspc == 0)
- kd->argspc = (char *)_kvm_malloc(kd, size);
- else if (kd->arglen < size)
- kd->argspc = (char *)_kvm_realloc(kd, kd->argspc, size);
- if (kd->argspc == 0)
- return (0);
- kd->arglen = size;
- st = sysctl(mib, 2, kd->argspc, &size, NULL, 0);
- if (st == -1 || size < sizeof(filehead)) {
- _kvm_syserr(kd, kd->program, "kvm_getfiles");
- return (0);
- }
- filehead = *(struct filelist *)kd->argspc;
- fp = (struct file *)(kd->argspc + sizeof (filehead));
- fplim = (struct file *)(kd->argspc + size);
- for (nfiles = 0; filehead.lh_first && (fp < fplim);
- nfiles++, fp++)
- filehead.lh_first = fp->f_list.le_next;
- } else {
- struct nlist nl[3], *p;
-
- nl[0].n_name = "_filehead";
- nl[1].n_name = "_nfiles";
- nl[2].n_name = 0;
-
- if (kvm_nlist(kd, nl) != 0) {
- for (p = nl; p->n_type != 0; ++p)
- ;
- _kvm_err(kd, kd->program,
- "%s: no such symbol", p->n_name);
- return (0);
- }
- if (KREAD(kd, nl[0].n_value, &nfiles)) {
- _kvm_err(kd, kd->program, "can't read nfiles");
- return (0);
- }
- size = sizeof(filehead) + (nfiles + 10) * sizeof(struct file);
- if (kd->argspc == 0)
- kd->argspc = (char *)_kvm_malloc(kd, size);
- else if (kd->arglen < size)
- kd->argspc = (char *)_kvm_realloc(kd, kd->argspc, size);
- if (kd->argspc == 0)
- return (0);
- kd->arglen = size;
- nfiles = kvm_deadfiles(kd, op, arg, nl[1].n_value, nfiles);
- if (nfiles == 0)
- return (0);
- }
- *cnt = nfiles;
- return (kd->argspc);
-}
diff --git a/lib/libkvm.old/kvm_geterr.3 b/lib/libkvm.old/kvm_geterr.3
deleted file mode 100644
index c54f37dc53b..00000000000
--- a/lib/libkvm.old/kvm_geterr.3
+++ /dev/null
@@ -1,82 +0,0 @@
-.\" $OpenBSD: kvm_geterr.3,v 1.2 1999/07/09 13:35:26 aaron Exp $
-.\"
-.\" Copyright (c) 1992, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" This code is derived from software developed by the Computer Systems
-.\" Engineering group at Lawrence Berkeley Laboratory under DARPA contract
-.\" BG 91-66 and contributed to Berkeley.
-.\"
-.\" 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 University of
-.\" California, Berkeley and its contributors.
-.\" 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
-.\"
-.\" @(#)kvm_geterr.3 8.1 (Berkeley) 6/4/93
-.\"
-.Dd June 4, 1993
-.Dt KVM_GETERR 3
-.Os
-.Sh NAME
-.Nm kvm_geterr
-.Nd get error message on kvm descriptor
-.Sh SYNOPSIS
-.Fd #include <kvm.h>
-.br
-.Ft char *
-.Fn kvm_geterr "kvm_t *kd"
-.Sh DESCRIPTION
-This function returns a string describing the most recent error condition
-on the descriptor
-.Fa kd .
-The results are undefined if the most recent
-.Xr kvm 3
-library call did not produce an error.
-The string returned is stored in memory owned by
-.Xr kvm 3
-so the message should be copied out and saved elsewhere if necessary.
-.Sh BUGS
-This routine cannot be used to access error conditions due to a failed
-.Fn kvm_openfiles
-call, since failure is indicated by returning a
-.Dv NULL
-descriptor.
-Therefore, errors on open are output to the special error buffer
-passed to
-.Fn kvm_openfiles .
-This option is not available to
-.Fn kvm_open .
-.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
diff --git a/lib/libkvm.old/kvm_getfiles.3 b/lib/libkvm.old/kvm_getfiles.3
deleted file mode 100644
index e8ed4c3d912..00000000000
--- a/lib/libkvm.old/kvm_getfiles.3
+++ /dev/null
@@ -1,89 +0,0 @@
-.\" $OpenBSD: kvm_getfiles.3,v 1.6 2000/04/15 02:15:28 aaron Exp $
-.\"
-.\" Copyright (c) 1992, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" This code is derived from software developed by the Computer Systems
-.\" Engineering group at Lawrence Berkeley Laboratory under DARPA contract
-.\" BG 91-66 and contributed to Berkeley.
-.\"
-.\" 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 University of
-.\" California, Berkeley and its contributors.
-.\" 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
-.\"
-.\" @(#)kvm_getfiles.3 8.2 (Berkeley) 4/19/94
-.\"
-.Dd April 19, 1994
-.Dt KVM_GETFILES 3
-.Os
-.Sh NAME
-.Nm kvm_getfiles
-.Nd survey open files
-.Sh SYNOPSIS
-.Fd #include <sys/types.h>
-.Fd #include <kvm.h>
-.Fd #define _KERNEL
-.Fd #include <sys/file.h>
-.Fd #undef _KERNEL
-.\" .Fa kvm_t *kd
-.br
-.Ft char *
-.Fn kvm_getfiles "kvm_t *kd" "int op" "int arg" "int *cnt"
-.Sh DESCRIPTION
-.Fn kvm_getfiles
-returns a (sub-)set of the open files in the kernel indicated by
-.Fa kd .
-The
-.Fa op
-and
-.Fa arg
-arguments constitute a predicate which limits the set of files
-returned. No predicates are currently defined.
-.Pp
-The number of processes found is returned in the reference parameter
-.Fa cnt .
-The files are returned as a contiguous array of file structures,
-preceded by the address of the first file entry in the kernel.
-This memory is owned by kvm and is not guaranteed to be persistent across
-subsequent kvm library calls. Data should be copied out if it needs to be
-saved.
-.Sh RETURN VALUES
-.Fn kvm_getfiles
-will return
-.Dv NULL
-on failure.
-.Sh BUGS
-This routine does not belong in the kvm interface.
-.Sh SEE ALSO
-.Xr kvm 3 ,
-.Xr kvm_close 3 ,
-.Xr kvm_geterr 3 ,
-.Xr kvm_nlist 3 ,
-.Xr kvm_open 3 ,
-.Xr kvm_openfiles 3 ,
-.Xr kvm_read 3 ,
-.Xr kvm_write 3
diff --git a/lib/libkvm.old/kvm_getloadavg.3 b/lib/libkvm.old/kvm_getloadavg.3
deleted file mode 100644
index 8759deeee30..00000000000
--- a/lib/libkvm.old/kvm_getloadavg.3
+++ /dev/null
@@ -1,67 +0,0 @@
-.\" $OpenBSD: kvm_getloadavg.3,v 1.3 1999/05/16 19:55:55 alex Exp $
-.\"
-.\" Copyright (c) 1992, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" 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 University of
-.\" California, Berkeley and its contributors.
-.\" 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
-.\"
-.\" @(#)kvm_getloadavg.3 8.1 (Berkeley) 6/4/93
-.\"
-.Dd June 4, 1993
-.Dt KVM_GETLOADAVG 3
-.Os
-.Sh NAME
-.Nm kvm_getloadavg
-.Nd get load average of the system
-.Sh SYNOPSIS
-.Fd #include <sys/resource.h>
-.Fd #include <kvm.h>
-.br
-.Ft int
-.Fn kvm_getloadavg "kvm_t *kd" "double loadavg[]" "int nelem"
-.Sh DESCRIPTION
-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.
-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.
-.Sh DIAGNOSTICS
-If the load average was unobtainable, \-1 is returned; otherwise,
-the number of samples actually retrieved is returned.
-.Sh SEE ALSO
-.Xr uptime 1 ,
-.Xr getloadavg 3 ,
-.Xr kvm 3
diff --git a/lib/libkvm.old/kvm_getloadavg.c b/lib/libkvm.old/kvm_getloadavg.c
deleted file mode 100644
index ce942782eaa..00000000000
--- a/lib/libkvm.old/kvm_getloadavg.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/* $OpenBSD: kvm_getloadavg.c,v 1.1 1996/03/19 23:15:33 niklas Exp $ */
-
-/*-
- * Copyright (c) 1993
- * The Regents of the University of California. All rights reserved.
- *
- * 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 University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "@(#)kvm_getloadavg.c 8.1 (Berkeley) 6/4/93";
-#endif /* LIBC_SCCS and not lint */
-
-#include <sys/param.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <sys/proc.h>
-#include <sys/sysctl.h>
-#include <vm/vm_param.h>
-
-#include <db.h>
-#include <fcntl.h>
-#include <limits.h>
-#include <nlist.h>
-#include <kvm.h>
-
-#include "kvm_private.h"
-
-static struct nlist nl[] = {
- { "_averunnable" },
-#define X_AVERUNNABLE 0
- { "_fscale" },
-#define X_FSCALE 1
- { "" },
-};
-
-/*
- * kvm_getloadavg() -- Get system load averages, from live or dead kernels.
- *
- * Put `nelem' samples into `loadavg' array.
- * Return number of samples retrieved, or -1 on error.
- */
-int
-kvm_getloadavg(kd, loadavg, nelem)
- kvm_t *kd;
- double loadavg[];
- int nelem;
-{
- struct loadavg loadinfo;
- struct nlist *p;
- int fscale, i;
-
- if (ISALIVE(kd))
- return (getloadavg(loadavg, nelem));
-
- if (kvm_nlist(kd, nl) != 0) {
- for (p = nl; p->n_type != 0; ++p);
- _kvm_err(kd, kd->program,
- "%s: no such symbol", p->n_name);
- return (-1);
- }
-
-#define KREAD(kd, addr, obj) \
- (kvm_read(kd, addr, (char *)(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);
- }
-
- /*
- * Old kernels have fscale separately; if not found assume
- * running new format.
- */
- if (!KREAD(kd, nl[X_FSCALE].n_value, &fscale))
- loadinfo.fscale = fscale;
-
- nelem = MIN(nelem, sizeof(loadinfo.ldavg) / sizeof(fixpt_t));
- for (i = 0; i < nelem; i++)
- loadavg[i] = (double) loadinfo.ldavg[i] / loadinfo.fscale;
- return (nelem);
-}
diff --git a/lib/libkvm.old/kvm_getprocs.3 b/lib/libkvm.old/kvm_getprocs.3
deleted file mode 100644
index 02f59a2c289..00000000000
--- a/lib/libkvm.old/kvm_getprocs.3
+++ /dev/null
@@ -1,163 +0,0 @@
-.\" $OpenBSD: kvm_getprocs.3,v 1.5 2000/04/15 02:15:28 aaron Exp $
-.\"
-.\" Copyright (c) 1992, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" This code is derived from software developed by the Computer Systems
-.\" Engineering group at Lawrence Berkeley Laboratory under DARPA contract
-.\" BG 91-66 and contributed to Berkeley.
-.\"
-.\" 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 University of
-.\" California, Berkeley and its contributors.
-.\" 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
-.\"
-.\" @(#)kvm_getprocs.3 8.1 (Berkeley) 6/4/93
-.\"
-.Dd June 4, 1993
-.Dt KVM_GETPROCS 3
-.Os
-.Sh NAME
-.Nm kvm_getprocs ,
-.Nm kvm_getargv ,
-.Nm kvm_getenvv
-.Nd access user process state
-.Sh SYNOPSIS
-.Fd #include <kvm.h>
-.Fd #include <sys/sysctl.h>
-.\" .Fa kvm_t *kd
-.br
-.Ft struct kinfo_proc *
-.Fn kvm_getprocs "kvm_t *kd" "int op" "int arg" "int *cnt"
-.Ft char **
-.Fn kvm_getargv "kvm_t *kd" "const struct kinfo_proc *p" "int nchr"
-.Ft char **
-.Fn kvm_getenvv "kvm_t *kd" "const struct kinfo_proc *p" "int nchr"
-.Sh DESCRIPTION
-.Fn kvm_getprocs
-returns a (sub-)set of active processes in the kernel indicated by
-.Fa kd .
-The
-.Fa op
-and
-.Fa arg
-arguments constitute a predicate which limits the set of processes
-returned. The value of
-.Fa op
-describes the filtering predicate as follows:
-.Pp
-.Bl -tag -width 20n -offset indent -compact
-.It Sy KERN_PROC_ALL
-all processes
-.It Sy KERN_PROC_PID
-processes with process id
-.Fa arg
-.It Sy KERN_PROC_PGRP
-processes with process group
-.Fa arg
-.It Sy KERN_PROC_SESSION
-processes with session
-.Fa arg
-.It Sy KERN_PROC_TTY
-processes with tty
-.Fa arg
-.It Sy KERN_PROC_UID
-processes with effective user id
-.Fa arg
-.It Sy KERN_PROC_RUID
-processes with real user id
-.Fa arg
-.El
-.Pp
-The number of processes found is returned in the reference parameter
-.Fa cnt .
-The processes are returned as a contiguous array of kinfo_proc structures.
-This memory is locally allocated, and subsequent calls to
-.Fn kvm_getprocs
-and
-.Fn kvm_close
-will overwrite this storage.
-.Pp
-.Fn kvm_getargv
-returns a null-terminated argument vector that corresponds to the
-command line arguments passed to process indicated by
-.Fa p .
-Most likely, these arguments correspond to the values passed to
-.Xr exec 3
-on process creation. This information is, however,
-deliberately under control of the process itself.
-Note that the original command name can be found, unaltered,
-in the p_comm field of the process structure returned by
-.Fn kvm_getprocs .
-.Pp
-The
-.Fa nchr
-argument indicates the maximum number of characters, including null bytes,
-to use in building the strings. If this amount is exceeded, the string
-causing the overflow is truncated and the partial result is returned.
-This is handy for programs like
-.Xr ps 1
-and
-.Xr w 1
-that print only a one line summary of a command and should not copy
-out large amounts of text only to ignore it.
-If
-.Fa nchr
-is zero, no limit is imposed and all argument strings are returned in
-their entirety.
-.Pp
-The memory allocated to the argv pointers and string storage
-is owned by the kvm library. Subsequent
-.Fn kvm_getprocs
-and
-.Xr kvm_close 3
-calls will clobber this storage.
-.Pp
-The
-.Fn kvm_getenvv
-function is similar to
-.Fn kvm_getargv
-but returns the vector of environment strings. This data is
-also alterable by the process.
-.Sh RETURN VALUES
-.Fn kvm_getprocs ,
-.Fn kvm_getargv ,
-and
-.Fn kvm_getenvv ,
-all return
-.Dv NULL
-on failure.
-.Sh BUGS
-These routines do not belong in the kvm interface.
-.Sh SEE ALSO
-.Xr kvm 3 ,
-.Xr kvm_close 3 ,
-.Xr kvm_geterr 3 ,
-.Xr kvm_nlist 3 ,
-.Xr kvm_open 3 ,
-.Xr kvm_openfiles 3 ,
-.Xr kvm_read 3 ,
-.Xr kvm_write 3
diff --git a/lib/libkvm.old/kvm_i386.c b/lib/libkvm.old/kvm_i386.c
deleted file mode 100644
index f09bd41cb90..00000000000
--- a/lib/libkvm.old/kvm_i386.c
+++ /dev/null
@@ -1,195 +0,0 @@
-/* $OpenBSD: kvm_i386.c,v 1.1 1996/03/19 23:15:34 niklas Exp $ */
-
-/*-
- * Copyright (c) 1989, 1992, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software developed by the Computer Systems
- * Engineering group at Lawrence Berkeley Laboratory under DARPA contract
- * BG 91-66 and contributed to Berkeley.
- *
- * 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 University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-/* from: static char sccsid[] = "@(#)kvm_hp300.c 8.1 (Berkeley) 6/4/93"; */
-static char *rcsid = "$OpenBSD: kvm_i386.c,v 1.1 1996/03/19 23:15:34 niklas Exp $";
-#endif /* LIBC_SCCS and not lint */
-
-/*
- * i386 machine dependent routines for kvm. Hopefully, the forthcoming
- * vm code will one day obsolete this module.
- */
-
-#include <sys/param.h>
-#include <sys/user.h>
-#include <sys/proc.h>
-#include <sys/stat.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <nlist.h>
-#include <kvm.h>
-
-#include <vm/vm.h>
-#include <vm/vm_param.h>
-
-#include <limits.h>
-#include <db.h>
-
-#include "kvm_private.h"
-
-#include <machine/pte.h>
-
-#ifndef btop
-#define btop(x) (((unsigned)(x)) >> PGSHIFT) /* XXX */
-#define ptob(x) ((caddr_t)((x) << PGSHIFT)) /* XXX */
-#endif
-
-struct vmstate {
- pd_entry_t *PTD;
-};
-
-void
-_kvm_freevtop(kd)
- kvm_t *kd;
-{
- if (kd->vmst != 0) {
- if (kd->vmst->PTD != 0)
- free(kd->vmst->PTD);
-
- free(kd->vmst);
- }
-}
-
-int
-_kvm_initvtop(kd)
- kvm_t *kd;
-{
- struct vmstate *vm;
- struct nlist nlist[2];
- u_long pa;
-
- vm = (struct vmstate *)_kvm_malloc(kd, sizeof(*vm));
- if (vm == 0)
- return (-1);
- kd->vmst = vm;
-
- nlist[0].n_name = "_PTDpaddr";
- nlist[1].n_name = 0;
-
- if (kvm_nlist(kd, nlist) != 0) {
- _kvm_err(kd, kd->program, "bad namelist");
- return (-1);
- }
-
- vm->PTD = 0;
-
- if (lseek(kd->pmfd, (off_t)(nlist[0].n_value - KERNBASE), 0) == -1 &&
- errno != 0) {
- _kvm_syserr(kd, kd->program, "kvm_lseek");
- goto invalid;
- }
- if (read(kd->pmfd, &pa, sizeof pa) != sizeof pa) {
- _kvm_syserr(kd, kd->program, "kvm_read");
- goto invalid;
- }
-
- vm->PTD = (pd_entry_t *)_kvm_malloc(kd, NBPG);
-
- if (lseek(kd->pmfd, (off_t)pa, 0) == -1 && errno != 0) {
- _kvm_syserr(kd, kd->program, "kvm_lseek");
- goto invalid;
- }
- if (read(kd->pmfd, vm->PTD, NBPG) != NBPG) {
- _kvm_syserr(kd, kd->program, "kvm_read");
- goto invalid;
- }
-
- return (0);
-
-invalid:
- if (vm->PTD != 0)
- free(vm->PTD);
- return (-1);
-}
-
-/*
- * Translate a kernel virtual address to a physical address.
- */
-int
-_kvm_kvatop(kd, va, pa)
- kvm_t *kd;
- u_long va;
- u_long *pa;
-{
- struct vmstate *vm;
- u_long offset;
- u_long pte_pa;
- pt_entry_t pte;
-
- if (ISALIVE(kd)) {
- _kvm_err(kd, 0, "vatop called in live kernel!");
- return(0);
- }
-
- vm = kd->vmst;
- offset = va & PGOFSET;
-
- /*
- * If we are initializing (kernel page table descriptor pointer
- * not yet set) * then return pa == va to avoid infinite recursion.
- */
- if (vm->PTD == 0) {
- *pa = va;
- return (NBPG - offset);
- }
- if ((vm->PTD[pdei(va)] & PG_V) == 0)
- goto invalid;
-
- pte_pa = (vm->PTD[pdei(va)] & PG_FRAME) +
- (ptei(va) * sizeof(pt_entry_t));
- /* XXX READ PHYSICAL XXX */
- {
- if (lseek(kd->pmfd, (off_t)pte_pa, 0) == -1 && errno != 0) {
- _kvm_syserr(kd, kd->program, "kvm_lseek");
- goto invalid;
- }
- if (read(kd->pmfd, &pte, sizeof pte) != sizeof pte) {
- _kvm_syserr(kd, kd->program, "kvm_read");
- goto invalid;
- }
- }
-
- *pa = (pte & PG_FRAME) + offset;
- return (NBPG - offset);
-
-invalid:
- _kvm_err(kd, 0, "invalid address (%x)", va);
- return (0);
-}
diff --git a/lib/libkvm.old/kvm_m68k.c b/lib/libkvm.old/kvm_m68k.c
deleted file mode 100644
index 9e38c4cbb86..00000000000
--- a/lib/libkvm.old/kvm_m68k.c
+++ /dev/null
@@ -1,237 +0,0 @@
-/* $OpenBSD: kvm_m68k.c,v 1.2 1996/05/26 01:04:40 deraadt Exp $ */
-
-/* $NetBSD: kvm_m68k.c,v 1.3 1996/05/14 21:59:57 scottr Exp $ */
-
-/*-
- * Copyright (c) 1989, 1992, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software developed by the Computer Systems
- * Engineering group at Lawrence Berkeley Laboratory under DARPA contract
- * BG 91-66 and contributed to Berkeley.
- *
- * 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 University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-/* from: static char sccsid[] = "@(#)kvm_hp300.c 8.1 (Berkeley) 6/4/93"; */
-static char *rcsid = "$OpenBSD: kvm_m68k.c,v 1.2 1996/05/26 01:04:40 deraadt Exp $";
-#endif /* LIBC_SCCS and not lint */
-
-/*
- * m68k machine dependent routines for kvm. Hopefully, the forthcoming
- * vm code will one day obsolete this module.
- */
-
-#include <sys/param.h>
-#include <sys/user.h>
-#include <sys/proc.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <nlist.h>
-#include <kvm.h>
-
-#include <vm/vm.h>
-#include <vm/vm_param.h>
-
-#include <limits.h>
-#include <db.h>
-
-#include "kvm_private.h"
-
-#include <machine/pte.h>
-
-#ifndef btop
-#define btop(x) (((unsigned)(x)) >> PGSHIFT) /* XXX */
-#define ptob(x) ((caddr_t)((x) << PGSHIFT)) /* XXX */
-#endif
-
-struct vmstate {
- u_long lowram;
- int mmutype;
- st_entry_t *Sysseg;
-};
-
-#define KREAD(kd, addr, p)\
- (kvm_read(kd, addr, (char *)(p), sizeof(*(p))) != sizeof(*(p)))
-
-void
-_kvm_freevtop(kd)
- kvm_t *kd;
-{
- if (kd->vmst != 0)
- free(kd->vmst);
-}
-
-int
-_kvm_initvtop(kd)
- kvm_t *kd;
-{
- struct vmstate *vm;
- struct nlist nlist[4];
-
- vm = (struct vmstate *)_kvm_malloc(kd, sizeof(*vm));
- if (vm == 0)
- return (-1);
- kd->vmst = vm;
-
- nlist[0].n_name = "_lowram";
- nlist[1].n_name = "_mmutype";
- nlist[2].n_name = "_Sysseg";
- nlist[3].n_name = 0;
-
- if (kvm_nlist(kd, nlist) != 0) {
- _kvm_err(kd, kd->program, "bad namelist");
- return (-1);
- }
- vm->Sysseg = 0;
- if (KREAD(kd, (u_long)nlist[0].n_value, &vm->lowram)) {
- _kvm_err(kd, kd->program, "cannot read lowram");
- return (-1);
- }
- if (KREAD(kd, (u_long)nlist[1].n_value, &vm->mmutype)) {
- _kvm_err(kd, kd->program, "cannot read mmutype");
- return (-1);
- }
- if (KREAD(kd, (u_long)nlist[2].n_value, &vm->Sysseg)) {
- _kvm_err(kd, kd->program, "cannot read segment table");
- return (-1);
- }
- return (0);
-}
-
-static int
-_kvm_vatop(kd, sta, va, pa)
- kvm_t *kd;
- st_entry_t *sta;
- u_long va;
- u_long *pa;
-{
- register struct vmstate *vm;
- register u_long lowram;
- register u_long addr;
- int p, ste, pte;
- int offset;
-
- if (ISALIVE(kd)) {
- _kvm_err(kd, 0, "vatop called in live kernel!");
- return((off_t)0);
- }
- vm = kd->vmst;
- offset = va & PGOFSET;
- /*
- * If we are initializing (kernel segment table pointer not yet set)
- * then return pa == va to avoid infinite recursion.
- */
- if (vm->Sysseg == 0) {
- *pa = va;
- return (NBPG - offset);
- }
- lowram = vm->lowram;
- if (vm->mmutype == -2) {
- st_entry_t *sta2;
-
- addr = (u_long)&sta[va >> SG4_SHIFT1];
- /*
- * Can't use KREAD to read kernel segment table entries.
- * Fortunately it is 1-to-1 mapped so we don't have to.
- */
- if (sta == vm->Sysseg) {
- if (lseek(kd->pmfd, (off_t)addr, 0) == -1 ||
- read(kd->pmfd, (char *)&ste, sizeof(ste)) < 0)
- goto invalid;
- } else if (KREAD(kd, addr, &ste))
- goto invalid;
- if ((ste & SG_V) == 0) {
- _kvm_err(kd, 0, "invalid level 1 descriptor (%x)",
- ste);
- return((off_t)0);
- }
- sta2 = (st_entry_t *)(ste & SG4_ADDR1);
- addr = (u_long)&sta2[(va & SG4_MASK2) >> SG4_SHIFT2];
- /*
- * Address from level 1 STE is a physical address,
- * so don't use kvm_read.
- */
- if (lseek(kd->pmfd, (off_t)(addr - lowram), 0) == -1 ||
- read(kd->pmfd, (char *)&ste, sizeof(ste)) < 0)
- goto invalid;
- if ((ste & SG_V) == 0) {
- _kvm_err(kd, 0, "invalid level 2 descriptor (%x)",
- ste);
- return((off_t)0);
- }
- sta2 = (st_entry_t *)(ste & SG4_ADDR2);
- addr = (u_long)&sta2[(va & SG4_MASK3) >> SG4_SHIFT3];
- } else {
- addr = (u_long)&sta[va >> SEGSHIFT];
- /*
- * Can't use KREAD to read kernel segment table entries.
- * Fortunately it is 1-to-1 mapped so we don't have to.
- */
- if (sta == vm->Sysseg) {
- if (lseek(kd->pmfd, (off_t)addr, 0) == -1 ||
- read(kd->pmfd, (char *)&ste, sizeof(ste)) < 0)
- goto invalid;
- } else if (KREAD(kd, addr, &ste))
- goto invalid;
- if ((ste & SG_V) == 0) {
- _kvm_err(kd, 0, "invalid segment (%x)", ste);
- return((off_t)0);
- }
- p = btop(va & SG_PMASK);
- addr = (ste & SG_FRAME) + (p * sizeof(pt_entry_t));
- }
- /*
- * Address from STE is a physical address so don't use kvm_read.
- */
- if (lseek(kd->pmfd, (off_t)(addr - lowram), 0) == -1 ||
- read(kd->pmfd, (char *)&pte, sizeof(pte)) < 0)
- goto invalid;
- addr = pte & PG_FRAME;
- if (pte == PG_NV) {
- _kvm_err(kd, 0, "page not valid");
- return (0);
- }
- *pa = addr - lowram + offset;
-
- return (NBPG - offset);
-invalid:
- _kvm_err(kd, 0, "invalid address (%x)", va);
- return (0);
-}
-
-int
-_kvm_kvatop(kd, va, pa)
- kvm_t *kd;
- u_long va;
- u_long *pa;
-{
- return (_kvm_vatop(kd, (u_long)kd->vmst->Sysseg, va, pa));
-}
diff --git a/lib/libkvm.old/kvm_mips.c b/lib/libkvm.old/kvm_mips.c
deleted file mode 100644
index ced258a745b..00000000000
--- a/lib/libkvm.old/kvm_mips.c
+++ /dev/null
@@ -1,164 +0,0 @@
-/* $OpenBSD: kvm_mips.c,v 1.2 1996/06/07 06:50:41 deraadt Exp $ */
-
-/*-
- * Copyright (c) 1989, 1992, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software developed by the Computer Systems
- * Engineering group at Lawrence Berkeley Laboratory under DARPA contract
- * BG 91-66 and contributed to Berkeley. Modified for MIPS by Ralph Campbell.
- *
- * 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 University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "@(#)kvm_mips.c 8.1 (Berkeley) 6/4/93";
-#endif /* LIBC_SCCS and not lint */
-/*
- * MIPS machine dependent routines for kvm. Hopefully, the forthcoming
- * vm code will one day obsolete this module.
- */
-
-#include <sys/param.h>
-#include <sys/user.h>
-#include <sys/proc.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <nlist.h>
-#include <kvm.h>
-
-#include <vm/vm.h>
-#include <vm/vm_param.h>
-
-#include <limits.h>
-#include <db.h>
-
-#include "kvm_private.h"
-
-#include <machine/cpu.h>
-#include <machine/pte.h>
-#include <machine/pmap.h>
-
-struct vmstate {
- pt_entry_t *Sysmap;
- u_int Sysmapsize;
-};
-
-#define KREAD(kd, addr, p)\
- (kvm_read(kd, addr, (char *)(p), sizeof(*(p))) != sizeof(*(p)))
-
-void
-_kvm_freevtop(kd)
- kvm_t *kd;
-{
- if (kd->vmst != 0)
- free(kd->vmst);
-}
-
-int
-_kvm_initvtop(kd)
- kvm_t *kd;
-{
- struct vmstate *vm;
- struct nlist nlist[3];
-
- vm = (struct vmstate *)_kvm_malloc(kd, sizeof(*vm));
- if (vm == 0)
- return (-1);
- kd->vmst = vm;
-
- nlist[0].n_name = "Sysmap";
- nlist[1].n_name = "Sysmapsize";
- nlist[2].n_name = 0;
-
- if (kvm_nlist(kd, nlist) != 0) {
- _kvm_err(kd, kd->program, "bad namelist");
- return (-1);
- }
- if (KREAD(kd, (u_long)nlist[0].n_value, &vm->Sysmap)) {
- _kvm_err(kd, kd->program, "cannot read Sysmap");
- return (-1);
- }
- if (KREAD(kd, (u_long)nlist[1].n_value, &vm->Sysmapsize)) {
- _kvm_err(kd, kd->program, "cannot read mmutype");
- return (-1);
- }
- 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;
-{
- register struct vmstate *vm;
- u_long pte, addr, offset;
-
- if (ISALIVE(kd)) {
- _kvm_err(kd, 0, "vatop called in live kernel!");
- return((off_t)0);
- }
- vm = kd->vmst;
- offset = va & PGOFSET;
- /*
- * If we are initializing (kernel segment table pointer not yet set)
- * then return pa == va to avoid infinite recursion.
- */
- if (vm->Sysmap == 0) {
- *pa = va;
- return (NBPG - offset);
- }
- if (va < KERNBASE ||
- va >= VM_MIN_KERNEL_ADDRESS + vm->Sysmapsize * NBPG)
- goto invalid;
- if (va < VM_MIN_KERNEL_ADDRESS) {
- *pa = CACHED_TO_PHYS(va);
- return (NBPG - offset);
- }
- addr = (u_long)(vm->Sysmap + ((va - VM_MIN_KERNEL_ADDRESS) >> PGSHIFT));
- /*
- * Can't use KREAD to read kernel segment table entries.
- * Fortunately it is 1-to-1 mapped so we don't have to.
- */
- if (lseek(kd->pmfd, (off_t)addr, 0) < 0 ||
- read(kd->pmfd, (char *)&pte, sizeof(pte)) < 0)
- goto invalid;
- if (!(pte & PG_V))
- goto invalid;
- *pa = (pte & PG_FRAME) | offset;
- return (NBPG - offset);
-
-invalid:
- _kvm_err(kd, 0, "invalid address (%x)", va);
- return (0);
-}
diff --git a/lib/libkvm.old/kvm_nlist.3 b/lib/libkvm.old/kvm_nlist.3
deleted file mode 100644
index 7adc606e5a2..00000000000
--- a/lib/libkvm.old/kvm_nlist.3
+++ /dev/null
@@ -1,90 +0,0 @@
-.\" $OpenBSD: kvm_nlist.3,v 1.3 1997/09/09 14:45:27 millert Exp $
-.\"
-.\" Copyright (c) 1992, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" This code is derived from software developed by the Computer Systems
-.\" Engineering group at Lawrence Berkeley Laboratory under DARPA contract
-.\" BG 91-66 and contributed to Berkeley.
-.\"
-.\" 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 University of
-.\" California, Berkeley and its contributors.
-.\" 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
-.\"
-.\" @(#)kvm_nlist.3 8.1 (Berkeley) 6/4/93
-.\"
-.Dd June 4, 1993
-.Dt KVM_NLIST 3
-.Os
-.Sh NAME
-.Nm kvm_nlist
-.Nd retrieve symbol table names from a kernel image
-.Sh SYNOPSIS
-.Fd #include <kvm.h>
-.Fd #include <nlist.h>
-.Ft int
-.Fn kvm_nlist "kvm_t *kd" "struct nlist *nl"
-.Sh DESCRIPTION
-.Fn kvm_nlist
-retrieves the symbol table entries indicated by the name list argument
-.Fa \&nl .
-This argument points to an array of nlist structures, terminated by
-an entry whose n_name field is
-.Dv NULL
-(see
-.Xr nlist 3 ) .
-Each symbol is looked up using the n_name field, and if found, the
-corresponding n_type and n_value fields are filled in. These fields are set
-to 0 if the symbol is not found.
-.Pp
-The program
-.Xr kvm_mkdb 8
-builds a database from the running kernel's namelist.
-If the database matches the opened kernel,
-.Fn kvm_nlist
-uses it to speed lookups.
-.Sh RETURN VALUES
-The
-.Fn kvm_nlist
-function returns the number of invalid entries found.
-If the kernel symbol table was unreadable, -1 is returned.
-.Sh FILES
-.Bl -tag -width /var/db/kvm_bsd.db -compact
-.It Pa /var/db/kvm_bsd.db
-.El
-.Sh SEE ALSO
-.Xr kvm 3 ,
-.Xr kvm_close 3 ,
-.Xr kvm_getargv 3 ,
-.Xr kvm_getenvv 3 ,
-.Xr kvm_geterr 3 ,
-.Xr kvm_getprocs 3 ,
-.Xr kvm_open 3 ,
-.Xr kvm_openfiles 3 ,
-.Xr kvm_read 3 ,
-.Xr kvm_write 3 ,
-.Xr kvm_mkdb 8
diff --git a/lib/libkvm.old/kvm_ns32k.c b/lib/libkvm.old/kvm_ns32k.c
deleted file mode 100644
index 96efee7fe35..00000000000
--- a/lib/libkvm.old/kvm_ns32k.c
+++ /dev/null
@@ -1,184 +0,0 @@
-/* $OpenBSD: kvm_ns32k.c,v 1.1 1996/03/19 23:15:38 niklas Exp $ */
-/* $NetBSD: kvm_ns32k.c,v 1.1.1.1 1996/03/16 10:05:24 leo Exp $ */
-
-/*-
- * Copyright (c) 1989, 1992, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software developed by the Computer Systems
- * Engineering group at Lawrence Berkeley Laboratory under DARPA contract
- * BG 91-66 and contributed to Berkeley.
- *
- * 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 University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- */
-
-/* from: "@(#)kvm_hp300.c 8.1 (Berkeley) 6/4/93"; */
-
-/*
- * ns32k machine dependent routines for kvm. Hopefully, the forthcoming
- * vm code will one day obsolete this module.
- *
- */
-
-#include <sys/param.h>
-#include <sys/user.h>
-#include <sys/proc.h>
-#include <sys/stat.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <nlist.h>
-#include <kvm.h>
-
-#include <vm/vm.h>
-#include <vm/vm_param.h>
-
-#include <limits.h>
-#include <db.h>
-
-#include "kvm_private.h"
-
-#include <machine/pte.h>
-
-#ifndef btop
-#define btop(x) (((unsigned)(x)) >> PGSHIFT) /* XXX */
-#define ptob(x) ((caddr_t)((x) << PGSHIFT)) /* XXX */
-#endif
-
-struct vmstate {
- pd_entry_t **PTDpaddr;
- pd_entry_t *PTD;
-};
-
-#define KREAD(kd, addr, p)\
- (kvm_read(kd, addr, (char *)(p), sizeof(*(p))) != sizeof(*(p)))
-
-void
-_kvm_freevtop(kd)
- kvm_t *kd;
-{
- if (kd->vmst != 0) {
- if (kd->vmst->PTD != 0)
- free(kd->vmst->PTD);
-
- free(kd->vmst);
- }
-}
-
-int
-_kvm_initvtop(kd)
- kvm_t *kd;
-{
- struct vmstate *vm;
- struct nlist nlist[2];
- pt_entry_t *tmpPTD;
-
- vm = (struct vmstate *)_kvm_malloc(kd, sizeof(*vm));
- if (vm == 0)
- return (-1);
- kd->vmst = vm;
-
- nlist[0].n_name = "_PTDpaddr";
- nlist[1].n_name = 0;
-
- if (kvm_nlist(kd, nlist) != 0) {
- _kvm_err(kd, kd->program, "bad namelist");
- return (-1);
- }
-
- vm->PTDpaddr = 0;
- vm->PTD = 0;
- if (KREAD(kd, (u_long)nlist[0].n_value - KERNBASE, &vm->PTDpaddr)) {
- _kvm_err(kd, kd->program, "cannot read PTDpaddr");
- return (-1);
- }
-
- tmpPTD = (pd_entry_t *)_kvm_malloc(kd, NBPG);
- if ((kvm_read(kd, (u_long)vm->PTDpaddr, tmpPTD, NBPG)) != NBPG) {
- free(tmpPTD);
- _kvm_err(kd, kd->program, "cannot read PTD");
- return (-1);
- }
- vm->PTD = tmpPTD;
- 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;
-{
- struct vmstate *vm;
- u_long offset;
- u_long pte_pa;
- pt_entry_t pte;
-
- if (ISALIVE(kd)) {
- _kvm_err(kd, 0, "vatop called in live kernel!");
- return(0);
- }
-
- vm = kd->vmst;
- offset = va & PGOFSET;
-
- /*
- * If we are initializing (kernel page table descriptor pointer
- * not yet set) * then return pa == va to avoid infinite recursion.
- */
- if (vm->PTD == 0) {
- *pa = va;
- return (NBPG - offset);
- }
- if ((vm->PTD[pdei(va)] & PG_V) == 0)
- goto invalid;
-
- pte_pa = (vm->PTD[pdei(va)] & PG_FRAME) +
- (ptei(va) * sizeof(pt_entry_t));
- /* XXX READ PHYSICAL XXX */
- {
- if (lseek(kd->pmfd, (off_t)pte_pa, 0) == -1 && errno != 0) {
- _kvm_syserr(kd, 0, "kvm_lseek");
- goto invalid;
- }
- if (read(kd->pmfd, &pte, sizeof pte) != sizeof pte) {
- _kvm_syserr(kd, kd->program, "kvm_read");
- goto invalid;
- }
- }
-
- *pa = (pte & PG_FRAME) + offset;
- return (NBPG - offset);
-
-invalid:
- _kvm_err(kd, 0, "invalid address (%x)", va);
- return (0);
-}
diff --git a/lib/libkvm.old/kvm_open.3 b/lib/libkvm.old/kvm_open.3
deleted file mode 100644
index 14325d69d38..00000000000
--- a/lib/libkvm.old/kvm_open.3
+++ /dev/null
@@ -1,191 +0,0 @@
-.\" $OpenBSD: kvm_open.3,v 1.4 2000/04/15 02:15:28 aaron Exp $
-.\"
-.\" Copyright (c) 1992, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" This code is derived from software developed by the Computer Systems
-.\" Engineering group at Lawrence Berkeley Laboratory under DARPA contract
-.\" BG 91-66 and contributed to Berkeley.
-.\"
-.\" 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 University of
-.\" California, Berkeley and its contributors.
-.\" 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
-.\"
-.\" @(#)kvm_open.3 8.3 (Berkeley) 4/19/94
-.\"
-.Dd April 19, 1994
-.Dt KVM_OPEN 3
-.Os
-.Sh NAME
-.Nm kvm_open ,
-.Nm kvm_openfiles ,
-.Nm kvm_close
-.Nd initialize kernel virtual memory access
-.Sh SYNOPSIS
-.Fd #include <fcntl.h>
-.Fd #include <kvm.h>
-.br
-.Ft kvm_t *
-.Fn kvm_open "const char *execfile" "const char *corefile" "char *swapfile" "int flags" "const char *errstr"
-.Ft kvm_t *
-.Fn kvm_openfiles "const char *execfile" "const char *corefile" "char *swapfile" "int flags" "char *errbuf"
-.Ft int
-.Fn kvm_close "kvm_t *kd"
-.Sh DESCRIPTION
-The functions
-.Fn kvm_open
-and
-.Fn kvm_openfiles
-return a descriptor used to access kernel virtual memory
-via the
-.Xr kvm 3
-library routines. Both active kernels and crash dumps are accessible
-through this interface.
-.Pp
-.Fa execfile
-is the executable image of the kernel being examined.
-This file must contain a symbol table.
-If this argument is
-.Dv NULL ,
-the currently running system is assumed,
-which is indicated by
-.Dv _PATH_KSYMS ,
-if it exists, otherwise
-.Dv _PATH_UNIX
-is used.
-Both are defined in <paths.h>.
-.Pp
-.Fa corefile
-is the kernel memory device file. It can be either /dev/mem
-or a crash dump core generated by
-.Xr savecore 8 .
-If
-.Fa corefile
-is
-.Dv NULL ,
-the default indicated by
-.Dv _PATH_MEM
-from <paths.h> is used.
-.Pp
-.Fa swapfile
-should indicate the swap device. If
-.Dv NULL ,
-.Dv _PATH_DRUM
-from <paths.h> is used.
-.Pp
-The
-.Fa flags
-argument indicates read/write access as in
-.Xr open 2
-and applies only to the core file.
-Only
-.Dv O_RDONLY ,
-.Dv O_WRONLY ,
-and
-.Dv O_RDWR
-are permitted.
-.Pp
-There are two open routines which differ only with respect to
-the error mechanism.
-One provides backward compatibility with the SunOS kvm library, while the
-other provides an improved error reporting framework.
-.Pp
-The
-.Fn kvm_open
-function is the Sun kvm compatible open call. Here, the
-.Fa errstr
-argument indicates how errors should be handled. If it is
-.Dv NULL ,
-no errors are reported and the application cannot know the
-specific nature of the failed kvm call.
-If it is not
-.Dv NULL ,
-errors are printed to stderr with
-.Fa errstr
-prepended to the message, as in
-.Xr perror 3 .
-Normally, the name of the program is used here.
-The string is assumed to persist at least until the corresponding
-.Fn kvm_close
-call.
-.Pp
-The
-.Fn kvm_openfiles
-function provides BSD style error reporting.
-Here, error messages are not printed out by the library.
-Instead, the application obtains the error message
-corresponding to the most recent kvm library call using
-.Fn kvm_geterr
-(see
-.Xr kvm_geterr 3 ) .
-The results are undefined if the most recent kvm call did not produce
-an error.
-Since
-.Fn kvm_geterr
-requires a kvm descriptor, but the open routines return
-.Dv NULL
-on failure,
-.Fn kvm_geterr
-cannot be used to get the error message if open fails.
-Thus,
-.Fn kvm_openfiles
-will place any error message in the
-.Fa errbuf
-argument. This buffer should be _POSIX2_LINE_MAX characters large (from
-<limits.h>).
-.Sh RETURN VALUES
-The
-.Fn kvm_open
-and
-.Fn kvm_openfiles
-functions both return a descriptor to be used
-in all subsequent kvm library calls.
-The library is fully re-entrant.
-On failure,
-.Dv NULL
-is returned, in which case
-.Fn kvm_openfiles
-writes the error message into
-.Fa errbuf .
-.Pp
-The
-.Fn kvm_close
-function returns 0 on success and -1 on failure.
-.Sh BUGS
-There should not be two open calls. The ill-defined error semantics
-of the Sun library and the desire to have a backward-compatible library
-for BSD left little choice.
-.Sh SEE ALSO
-.Xr open 2 ,
-.Xr kvm 3 ,
-.Xr kvm_getargv 3 ,
-.Xr kvm_getenvv 3 ,
-.Xr kvm_geterr 3 ,
-.Xr kvm_getprocs 3 ,
-.Xr kvm_nlist 3 ,
-.Xr kvm_read 3 ,
-.Xr kvm_write 3
diff --git a/lib/libkvm.old/kvm_private.h b/lib/libkvm.old/kvm_private.h
deleted file mode 100644
index 859f200292f..00000000000
--- a/lib/libkvm.old/kvm_private.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/* $OpenBSD: kvm_private.h,v 1.2 1996/05/26 01:04:41 deraadt Exp $ */
-
-/* $NetBSD: kvm_private.h,v 1.2 1996/05/13 02:30:25 thorpej Exp $ */
-
-/*-
- * Copyright (c) 1992, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software developed by the Computer Systems
- * Engineering group at Lawrence Berkeley Laboratory under DARPA contract
- * BG 91-66 and contributed to Berkeley.
- *
- * 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 University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- *
- * @(#)kvm_private.h 8.1 (Berkeley) 6/4/93
- */
-
-struct __kvm {
- /*
- * a string to be prepended to error messages
- * provided for compatibility with sun's interface
- * if this value is null, errors are saved in errbuf[]
- */
- const char *program;
- char *errp; /* XXX this can probably go away */
- char errbuf[_POSIX2_LINE_MAX];
- DB *db;
-#define ISALIVE(kd) ((kd)->vmfd >= 0)
- int pmfd; /* physical memory file (or crashdump) */
- int vmfd; /* virtual memory file (-1 if crashdump) */
- int swfd; /* swap file (e.g., /dev/drum) */
- int nlfd; /* namelist file (e.g., /vmunix) */
- struct kinfo_proc *procbase;
- int nbpg; /* page size */
- char *swapspc; /* (dynamic) storage for swapped pages */
- char *argspc, *argbuf; /* (dynamic) storage for argv strings */
- int arglen; /* length of the above */
- char **argv; /* (dynamic) storage for argv pointers */
- int argc; /* length of above (not actual # present) */
- /*
- * Kernel virtual address translation state. This only gets filled
- * in for dead kernels; otherwise, the running kernel (i.e. kmem)
- * will do the translations for us. It could be big, so we
- * only allocate it if necessary.
- */
- struct vmstate *vmst;
- /*
- * These kernel variables are used for looking up user addresses,
- * and are cached for efficiency.
- */
- struct pglist *vm_page_buckets;
- int vm_page_hash_mask;
-};
-
-/*
- * Functions used internally by kvm, but across kvm modules.
- */
-void _kvm_err __P((kvm_t *kd, const char *program, const char *fmt, ...));
-void _kvm_freeprocs __P((kvm_t *kd));
-void _kvm_freevtop __P((kvm_t *));
-int _kvm_initvtop __P((kvm_t *));
-int _kvm_kvatop __P((kvm_t *, u_long, u_long *));
-void *_kvm_malloc __P((kvm_t *kd, size_t));
-void *_kvm_realloc __P((kvm_t *kd, void *, size_t));
-void _kvm_syserr
- __P((kvm_t *kd, const char *program, const char *fmt, ...));
diff --git a/lib/libkvm.old/kvm_proc.c b/lib/libkvm.old/kvm_proc.c
deleted file mode 100644
index 22878d26243..00000000000
--- a/lib/libkvm.old/kvm_proc.c
+++ /dev/null
@@ -1,957 +0,0 @@
-/* $OpenBSD: kvm_proc.c,v 1.4 1999/12/01 09:58:16 deraadt Exp $ */
-/* $NetBSD: kvm_proc.c,v 1.30 1999/03/24 05:50:50 mrg Exp $ */
-/*-
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Charles M. Hannum.
- *
- * 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.
- */
-/*-
- * Copyright (c) 1994, 1995 Charles M. Hannum. All rights reserved.
- * Copyright (c) 1989, 1992, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software developed by the Computer Systems
- * Engineering group at Lawrence Berkeley Laboratory under DARPA contract
- * BG 91-66 and contributed to Berkeley.
- *
- * 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 University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-#if 0
-static char sccsid[] = "@(#)kvm_proc.c 8.3 (Berkeley) 9/23/93";
-#else
-static char *rcsid = "$OpenBSD: kvm_proc.c,v 1.4 1999/12/01 09:58:16 deraadt Exp $";
-#endif
-#endif /* LIBC_SCCS and not lint */
-
-/*
- * Proc traversal interface for kvm. ps and w are (probably) the exclusive
- * users of this code, so we've factored it out into a separate module.
- * Thus, we keep this grunge out of the other kvm applications (i.e.,
- * most other applications are interested only in open/close/read/nlist).
- */
-
-#include <sys/param.h>
-#include <sys/user.h>
-#include <sys/proc.h>
-#include <sys/exec.h>
-#include <sys/stat.h>
-#include <sys/ioctl.h>
-#include <sys/tty.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <nlist.h>
-#include <kvm.h>
-
-#include <vm/vm.h>
-#include <vm/vm_param.h>
-
-#ifdef UVM
-#include <uvm/uvm_extern.h>
-#include <uvm/uvm_amap.h>
-#else
-#include <vm/swap_pager.h>
-#endif
-
-#include <sys/sysctl.h>
-
-#include <limits.h>
-#include <db.h>
-#include <paths.h>
-
-#include "kvm_private.h"
-
-#define KREAD(kd, addr, obj) \
- (kvm_read(kd, addr, (void *)(obj), sizeof(*obj)) != sizeof(*obj))
-
-#ifndef UVM
-int _kvm_readfromcore __P((kvm_t *, u_long, u_long));
-int _kvm_readfrompager __P((kvm_t *, struct vm_object *, u_long));
-#endif
-ssize_t kvm_uread __P((kvm_t *, const struct proc *, u_long, char *,
- size_t));
-
-static char **kvm_argv __P((kvm_t *, const struct proc *, u_long, int,
- int));
-static int kvm_deadprocs __P((kvm_t *, int, int, u_long, u_long, int));
-static char **kvm_doargv __P((kvm_t *, const struct kinfo_proc *, int,
- void (*)(struct ps_strings *, u_long *, int *)));
-static int kvm_proclist __P((kvm_t *, int, int, struct proc *,
- struct kinfo_proc *, int));
-static int proc_verify __P((kvm_t *, u_long, const struct proc *));
-static void ps_str_a __P((struct ps_strings *, u_long *, int *));
-static void ps_str_e __P((struct ps_strings *, u_long *, int *));
-
-char *
-_kvm_uread(kd, p, va, cnt)
- kvm_t *kd;
- const struct proc *p;
- u_long va;
- u_long *cnt;
-{
- u_long addr, head;
- u_long offset;
- struct vm_map_entry vme;
-#ifdef UVM
- struct vm_amap amap;
- struct vm_anon *anonp, anon;
- struct vm_page pg;
- u_long slot;
-#else
- struct vm_object vmo;
- int rv;
-#endif
-
- if (kd->swapspc == 0) {
- kd->swapspc = (char *)_kvm_malloc(kd, kd->nbpg);
- if (kd->swapspc == 0)
- return (0);
- }
-
- /*
- * Look through the address map for the memory object
- * that corresponds to the given virtual address.
- * The header just has the entire valid range.
- */
- head = (u_long)&p->p_vmspace->vm_map.header;
- addr = head;
- while (1) {
- if (KREAD(kd, addr, &vme))
- return (0);
-
-#ifdef UVM
- if (va >= vme.start && va < vme.end &&
- vme.aref.ar_amap != NULL)
- break;
-#else
- if (va >= vme.start && va < vme.end &&
- vme.object.vm_object != 0)
- break;
-#endif
-
- addr = (u_long)vme.next;
- if (addr == head)
- return (0);
- }
-
-#ifdef UVM
- /*
- * we found the map entry, now to find the object...
- */
- if (vme.aref.ar_amap == NULL)
- return NULL;
-
- addr = (u_long)vme.aref.ar_amap;
- if (KREAD(kd, addr, &amap))
- return NULL;
-
- offset = va - vme.start;
- slot = offset / kd->nbpg + vme.aref.ar_pageoff;
- /* sanity-check slot number */
- if (slot > amap.am_nslot)
- return NULL;
-
- addr = (u_long)amap.am_anon + (offset / kd->nbpg) * sizeof(anonp);
- if (KREAD(kd, addr, &anonp))
- return NULL;
-
- addr = (u_long)anonp;
- if (KREAD(kd, addr, &anon))
- return NULL;
-
- addr = (u_long)anon.u.an_page;
- if (addr) {
- if (KREAD(kd, addr, &pg))
- return NULL;
-
- if (lseek(kd->pmfd, pg.phys_addr, SEEK_SET) < 0)
- return NULL;
-
- if (read(kd->pmfd, (void *)kd->swapspc, (size_t)kd->nbpg)
- != kd->nbpg)
- return NULL;
- } else {
- if (lseek(kd->swfd, (off_t)(anon.an_swslot * kd->nbpg),
- SEEK_SET) < 0)
- return NULL;
- if (read(kd->swfd, (void *)kd->swapspc, (size_t)kd->nbpg)
- != kd->nbpg)
- return NULL;
- }
-
-#else
- /*
- * We found the right object -- follow shadow links.
- */
- offset = va - vme.start + vme.offset;
- addr = (u_long)vme.object.vm_object;
-
- while (1) {
- /* Try reading the page from core first. */
- if ((rv = _kvm_readfromcore(kd, addr, offset)))
- break;
-
- if (KREAD(kd, addr, &vmo))
- return (0);
-
- /* If there is a pager here, see if it has the page. */
- if (vmo.pager != 0 &&
- (rv = _kvm_readfrompager(kd, &vmo, offset)))
- break;
-
- /* Move down the shadow chain. */
- addr = (u_long)vmo.shadow;
- if (addr == 0)
- return (0);
- offset += vmo.shadow_offset;
- }
-
- if (rv == -1)
- return (0);
-#endif
-
- /* Found the page. */
- offset %= kd->nbpg;
- *cnt = kd->nbpg - offset;
- return (&kd->swapspc[offset]);
-}
-
-#ifndef UVM
-
-#define vm_page_hash(kd, object, offset) \
- (((u_long)object + (u_long)(offset / kd->nbpg)) & kd->vm_page_hash_mask)
-
-int
-_kvm_coreinit(kd)
- kvm_t *kd;
-{
- struct nlist nlist[3];
-
- nlist[0].n_name = "_vm_page_buckets";
- nlist[1].n_name = "_vm_page_hash_mask";
- nlist[2].n_name = 0;
- if (kvm_nlist(kd, nlist) != 0)
- return (-1);
-
- if (KREAD(kd, nlist[0].n_value, &kd->vm_page_buckets) ||
- KREAD(kd, nlist[1].n_value, &kd->vm_page_hash_mask))
- return (-1);
-
- return (0);
-}
-
-int
-_kvm_readfromcore(kd, object, offset)
- kvm_t *kd;
- u_long object, offset;
-{
- u_long addr;
- struct pglist bucket;
- struct vm_page mem;
- off_t seekpoint;
-
- if (kd->vm_page_buckets == 0 &&
- _kvm_coreinit(kd))
- return (-1);
-
- addr = (u_long)&kd->vm_page_buckets[vm_page_hash(kd, object, offset)];
- if (KREAD(kd, addr, &bucket))
- return (-1);
-
- addr = (u_long)bucket.tqh_first;
- offset &= ~(kd->nbpg -1);
- while (1) {
- if (addr == 0)
- return (0);
-
- if (KREAD(kd, addr, &mem))
- return (-1);
-
- if ((u_long)mem.object == object &&
- (u_long)mem.offset == offset)
- break;
-
- addr = (u_long)mem.hashq.tqe_next;
- }
-
- seekpoint = mem.phys_addr;
-
- if (lseek(kd->pmfd, seekpoint, 0) == -1)
- return (-1);
- if (read(kd->pmfd, kd->swapspc, kd->nbpg) != kd->nbpg)
- return (-1);
-
- return (1);
-}
-
-int
-_kvm_readfrompager(kd, vmop, offset)
- kvm_t *kd;
- struct vm_object *vmop;
- u_long offset;
-{
- u_long addr;
- struct pager_struct pager;
- struct swpager swap;
- int ix;
- struct swblock swb;
- off_t seekpoint;
-
- /* Read in the pager info and make sure it's a swap device. */
- addr = (u_long)vmop->pager;
- if (KREAD(kd, addr, &pager) || pager.pg_type != PG_SWAP)
- return (-1);
-
- /* Read in the swap_pager private data. */
- addr = (u_long)pager.pg_data;
- if (KREAD(kd, addr, &swap))
- return (-1);
-
- /*
- * Calculate the paging offset, and make sure it's within the
- * bounds of the pager.
- */
- offset += vmop->paging_offset;
- ix = offset / dbtob(swap.sw_bsize);
-#if 0
- if (swap.sw_blocks == 0 || ix >= swap.sw_nblocks)
- return (-1);
-#else
- if (swap.sw_blocks == 0 || ix >= swap.sw_nblocks) {
- int i;
- printf("BUG BUG BUG BUG:\n");
- printf("object %x offset %x pgoffset %x pager %x swpager %x\n",
- vmop, offset - vmop->paging_offset, vmop->paging_offset,
- vmop->pager, pager.pg_data);
- printf("osize %x bsize %x blocks %x nblocks %x\n",
- swap.sw_osize, swap.sw_bsize, swap.sw_blocks,
- swap.sw_nblocks);
- for (ix = 0; ix < swap.sw_nblocks; ix++) {
- addr = (u_long)&swap.sw_blocks[ix];
- if (KREAD(kd, addr, &swb))
- return (0);
- printf("sw_blocks[%d]: block %x mask %x\n", ix,
- swb.swb_block, swb.swb_mask);
- }
- return (-1);
- }
-#endif
-
- /* Read in the swap records. */
- addr = (u_long)&swap.sw_blocks[ix];
- if (KREAD(kd, addr, &swb))
- return (-1);
-
- /* Calculate offset within pager. */
- offset %= dbtob(swap.sw_bsize);
-
- /* Check that the page is actually present. */
- if ((swb.swb_mask & (1 << (offset / kd->nbpg))) == 0)
- return (0);
-
- if (!ISALIVE(kd))
- return (-1);
-
- /* Calculate the physical address and read the page. */
- seekpoint = dbtob(swb.swb_block) + (offset & ~(kd->nbpg -1));
-
- if (lseek(kd->swfd, seekpoint, 0) == -1)
- return (-1);
- if (read(kd->swfd, kd->swapspc, kd->nbpg) != kd->nbpg)
- return (-1);
-
- return (1);
-}
-#endif /* UVM */
-
-/*
- * Read proc's from memory file into buffer bp, which has space to hold
- * at most maxcnt procs.
- */
-static int
-kvm_proclist(kd, what, arg, p, bp, maxcnt)
- kvm_t *kd;
- int what, arg;
- struct proc *p;
- struct kinfo_proc *bp;
- int maxcnt;
-{
- int cnt = 0;
- struct eproc eproc;
- struct pgrp pgrp;
- struct session sess;
- struct tty tty;
- struct proc proc;
-
- for (; cnt < maxcnt && p != NULL; p = proc.p_list.le_next) {
- if (KREAD(kd, (u_long)p, &proc)) {
- _kvm_err(kd, kd->program, "can't read proc at %x", p);
- return (-1);
- }
- if (KREAD(kd, (u_long)proc.p_cred, &eproc.e_pcred) == 0)
- KREAD(kd, (u_long)eproc.e_pcred.pc_ucred,
- &eproc.e_ucred);
-
- switch(what) {
-
- case KERN_PROC_PID:
- if (proc.p_pid != (pid_t)arg)
- continue;
- break;
-
- case KERN_PROC_UID:
- if (eproc.e_ucred.cr_uid != (uid_t)arg)
- continue;
- break;
-
- case KERN_PROC_RUID:
- if (eproc.e_pcred.p_ruid != (uid_t)arg)
- continue;
- break;
- }
- /*
- * We're going to add another proc to the set. If this
- * will overflow the buffer, assume the reason is because
- * nprocs (or the proc list) is corrupt and declare an error.
- */
- if (cnt >= maxcnt) {
- _kvm_err(kd, kd->program, "nprocs corrupt");
- return (-1);
- }
- /*
- * gather eproc
- */
- eproc.e_paddr = p;
- if (KREAD(kd, (u_long)proc.p_pgrp, &pgrp)) {
- _kvm_err(kd, kd->program, "can't read pgrp at %x",
- proc.p_pgrp);
- return (-1);
- }
- eproc.e_sess = pgrp.pg_session;
- eproc.e_pgid = pgrp.pg_id;
- eproc.e_jobc = pgrp.pg_jobc;
- if (KREAD(kd, (u_long)pgrp.pg_session, &sess)) {
- _kvm_err(kd, kd->program, "can't read session at %x",
- pgrp.pg_session);
- return (-1);
- }
- if ((proc.p_flag & P_CONTROLT) && sess.s_ttyp != NULL) {
- if (KREAD(kd, (u_long)sess.s_ttyp, &tty)) {
- _kvm_err(kd, kd->program,
- "can't read tty at %x", sess.s_ttyp);
- return (-1);
- }
- eproc.e_tdev = tty.t_dev;
- eproc.e_tsess = tty.t_session;
- if (tty.t_pgrp != NULL) {
- if (KREAD(kd, (u_long)tty.t_pgrp, &pgrp)) {
- _kvm_err(kd, kd->program,
- "can't read tpgrp at &x",
- tty.t_pgrp);
- return (-1);
- }
- eproc.e_tpgid = pgrp.pg_id;
- } else
- eproc.e_tpgid = -1;
- } else
- eproc.e_tdev = NODEV;
- eproc.e_flag = sess.s_ttyvp ? EPROC_CTTY : 0;
- if (sess.s_leader == p)
- eproc.e_flag |= EPROC_SLEADER;
- if (proc.p_wmesg)
- (void)kvm_read(kd, (u_long)proc.p_wmesg,
- eproc.e_wmesg, WMESGLEN);
-
- (void)kvm_read(kd, (u_long)proc.p_vmspace,
- &eproc.e_vm, sizeof(eproc.e_vm));
-
- eproc.e_xsize = eproc.e_xrssize = 0;
- eproc.e_xccount = eproc.e_xswrss = 0;
-
- switch (what) {
-
- case KERN_PROC_PGRP:
- if (eproc.e_pgid != (pid_t)arg)
- continue;
- break;
-
- case KERN_PROC_TTY:
- if ((proc.p_flag & P_CONTROLT) == 0 ||
- eproc.e_tdev != (dev_t)arg)
- continue;
- break;
- }
- bcopy(&proc, &bp->kp_proc, sizeof(proc));
- bcopy(&eproc, &bp->kp_eproc, sizeof(eproc));
- ++bp;
- ++cnt;
- }
- return (cnt);
-}
-
-/*
- * Build proc info array by reading in proc list from a crash dump.
- * Return number of procs read. maxcnt is the max we will read.
- */
-static int
-kvm_deadprocs(kd, what, arg, a_allproc, a_zombproc, maxcnt)
- kvm_t *kd;
- int what, arg;
- u_long a_allproc;
- u_long a_zombproc;
- int maxcnt;
-{
- struct kinfo_proc *bp = kd->procbase;
- int acnt, zcnt;
- struct proc *p;
-
- if (KREAD(kd, a_allproc, &p)) {
- _kvm_err(kd, kd->program, "cannot read allproc");
- return (-1);
- }
- acnt = kvm_proclist(kd, what, arg, p, bp, maxcnt);
- if (acnt < 0)
- return (acnt);
-
- if (KREAD(kd, a_zombproc, &p)) {
- _kvm_err(kd, kd->program, "cannot read zombproc");
- return (-1);
- }
- zcnt = kvm_proclist(kd, what, arg, p, bp + acnt, maxcnt - acnt);
- if (zcnt < 0)
- zcnt = 0;
-
- return (acnt + zcnt);
-}
-
-struct kinfo_proc *
-kvm_getprocs(kd, op, arg, cnt)
- kvm_t *kd;
- int op, arg;
- int *cnt;
-{
- size_t size;
- int mib[4], st, nprocs;
-
- if (kd->procbase != 0) {
- free((void *)kd->procbase);
- /*
- * Clear this pointer in case this call fails. Otherwise,
- * kvm_close() will free it again.
- */
- kd->procbase = 0;
- }
- if (ISALIVE(kd)) {
- size = 0;
- mib[0] = CTL_KERN;
- mib[1] = KERN_PROC;
- mib[2] = op;
- mib[3] = arg;
- st = sysctl(mib, 4, NULL, &size, NULL, 0);
- if (st == -1) {
- _kvm_syserr(kd, kd->program, "kvm_getprocs");
- return (0);
- }
- kd->procbase = (struct kinfo_proc *)_kvm_malloc(kd, size);
- if (kd->procbase == 0)
- return (0);
- st = sysctl(mib, 4, kd->procbase, &size, NULL, 0);
- if (st == -1) {
- _kvm_syserr(kd, kd->program, "kvm_getprocs");
- return (0);
- }
- if (size % sizeof(struct kinfo_proc) != 0) {
- _kvm_err(kd, kd->program,
- "proc size mismatch (%d total, %d chunks)",
- size, sizeof(struct kinfo_proc));
- return (0);
- }
- nprocs = size / sizeof(struct kinfo_proc);
- } else {
- struct nlist nl[4], *p;
-
- nl[0].n_name = "_nprocs";
- nl[1].n_name = "_allproc";
- nl[2].n_name = "_zombproc";
- nl[3].n_name = 0;
-
- if (kvm_nlist(kd, nl) != 0) {
- for (p = nl; p->n_type != 0; ++p)
- ;
- _kvm_err(kd, kd->program,
- "%s: no such symbol", p->n_name);
- return (0);
- }
- if (KREAD(kd, nl[0].n_value, &nprocs)) {
- _kvm_err(kd, kd->program, "can't read nprocs");
- return (0);
- }
- size = nprocs * sizeof(struct kinfo_proc);
- kd->procbase = (struct kinfo_proc *)_kvm_malloc(kd, size);
- if (kd->procbase == 0)
- return (0);
-
- nprocs = kvm_deadprocs(kd, op, arg, nl[1].n_value,
- nl[2].n_value, nprocs);
-#ifdef notdef
- size = nprocs * sizeof(struct kinfo_proc);
- (void)realloc(kd->procbase, size);
-#endif
- }
- *cnt = nprocs;
- return (kd->procbase);
-}
-
-void
-_kvm_freeprocs(kd)
- kvm_t *kd;
-{
- if (kd->procbase) {
- free(kd->procbase);
- kd->procbase = 0;
- }
-}
-
-void *
-_kvm_realloc(kd, p, n)
- kvm_t *kd;
- void *p;
- size_t n;
-{
- void *np = (void *)realloc(p, n);
-
- if (np == 0)
- _kvm_err(kd, kd->program, "out of memory");
- return (np);
-}
-
-#ifndef MAX
-#define MAX(a, b) ((a) > (b) ? (a) : (b))
-#endif
-
-/*
- * Read in an argument vector from the user address space of process p.
- * addr if the user-space base address of narg null-terminated contiguous
- * strings. This is used to read in both the command arguments and
- * environment strings. Read at most maxcnt characters of strings.
- */
-static char **
-kvm_argv(kd, p, addr, narg, maxcnt)
- kvm_t *kd;
- const struct proc *p;
- u_long addr;
- int narg;
- int maxcnt;
-{
- char *np, *cp, *ep, *ap;
- u_long oaddr = -1;
- int len, cc;
- char **argv;
-
- /*
- * Check that there aren't an unreasonable number of agruments,
- * and that the address is in user space.
- */
- if (narg > ARG_MAX || addr < VM_MIN_ADDRESS || addr >= VM_MAXUSER_ADDRESS)
- return (0);
-
- if (kd->argv == 0) {
- /*
- * Try to avoid reallocs.
- */
- kd->argc = MAX(narg + 1, 32);
- kd->argv = (char **)_kvm_malloc(kd, kd->argc *
- sizeof(*kd->argv));
- if (kd->argv == 0)
- return (0);
- } else if (narg + 1 > kd->argc) {
- kd->argc = MAX(2 * kd->argc, narg + 1);
- kd->argv = (char **)_kvm_realloc(kd, kd->argv, kd->argc *
- sizeof(*kd->argv));
- if (kd->argv == 0)
- return (0);
- }
- if (kd->argspc == 0) {
- kd->argspc = (char *)_kvm_malloc(kd, kd->nbpg);
- if (kd->argspc == 0)
- return (0);
- kd->arglen = kd->nbpg;
- }
- if (kd->argbuf == 0) {
- kd->argbuf = (char *)_kvm_malloc(kd, kd->nbpg);
- if (kd->argbuf == 0)
- return (0);
- }
- cc = sizeof(char *) * narg;
- if (kvm_uread(kd, p, addr, (char *)kd->argv, cc) != cc)
- return (0);
- ap = np = kd->argspc;
- argv = kd->argv;
- len = 0;
- /*
- * Loop over pages, filling in the argument vector.
- */
- while (argv < kd->argv + narg && *argv != 0) {
- addr = (u_long)*argv & ~(kd->nbpg - 1);
- if (addr != oaddr) {
- if (kvm_uread(kd, p, addr, kd->argbuf, kd->nbpg) !=
- kd->nbpg)
- return (0);
- oaddr = addr;
- }
- addr = (u_long)*argv & (kd->nbpg - 1);
- cp = kd->argbuf + addr;
- cc = kd->nbpg - addr;
- if (maxcnt > 0 && cc > maxcnt - len)
- cc = maxcnt - len;;
- ep = memchr(cp, '\0', cc);
- if (ep != 0)
- cc = ep - cp + 1;
- if (len + cc > kd->arglen) {
- int off;
- char **pp;
- char *op = kd->argspc;
-
- kd->arglen *= 2;
- kd->argspc = (char *)_kvm_realloc(kd, kd->argspc,
- kd->arglen);
- if (kd->argspc == 0)
- return (0);
- /*
- * Adjust argv pointers in case realloc moved
- * the string space.
- */
- off = kd->argspc - op;
- for (pp = kd->argv; pp < argv; pp++)
- *pp += off;
- ap += off;
- np += off;
- }
- memcpy(np, cp, cc);
- np += cc;
- len += cc;
- if (ep != 0) {
- *argv++ = ap;
- ap = np;
- } else
- *argv += cc;
- if (maxcnt > 0 && len >= maxcnt) {
- /*
- * We're stopping prematurely. Terminate the
- * current string.
- */
- if (ep == 0) {
- *np = '\0';
- *argv++ = ap;
- }
- break;
- }
- }
- /* Make sure argv is terminated. */
- *argv = 0;
- return (kd->argv);
-}
-
-static void
-ps_str_a(p, addr, n)
- struct ps_strings *p;
- u_long *addr;
- int *n;
-{
- *addr = (u_long)p->ps_argvstr;
- *n = p->ps_nargvstr;
-}
-
-static void
-ps_str_e(p, addr, n)
- struct ps_strings *p;
- u_long *addr;
- int *n;
-{
- *addr = (u_long)p->ps_envstr;
- *n = p->ps_nenvstr;
-}
-
-/*
- * Determine if the proc indicated by p is still active.
- * This test is not 100% foolproof in theory, but chances of
- * being wrong are very low.
- */
-static int
-proc_verify(kd, kernp, p)
- kvm_t *kd;
- u_long kernp;
- const struct proc *p;
-{
- struct proc kernproc;
-
- /*
- * Just read in the whole proc. It's not that big relative
- * to the cost of the read system call.
- */
- if (kvm_read(kd, kernp, &kernproc, sizeof(kernproc)) !=
- sizeof(kernproc))
- return (0);
- return (p->p_pid == kernproc.p_pid &&
- (kernproc.p_stat != SZOMB || p->p_stat == SZOMB));
-}
-
-static char **
-kvm_doargv(kd, kp, nchr, info)
- kvm_t *kd;
- const struct kinfo_proc *kp;
- int nchr;
- void (*info)(struct ps_strings *, u_long *, int *);
-{
- const struct proc *p = &kp->kp_proc;
- char **ap;
- u_long addr;
- int cnt;
- struct ps_strings arginfo;
- static struct ps_strings *ps;
-
- if (ps == NULL) {
- struct _ps_strings _ps;
- int mib[2];
- size_t len;
-
- mib[0] = CTL_VM;
- mib[1] = VM_PSSTRINGS;
- len = sizeof(_ps);
- sysctl(mib, 2, &_ps, &len, NULL, 0);
- ps = (struct ps_strings *)_ps.val;
- }
-
- /*
- * Pointers are stored at the top of the user stack.
- */
- if (p->p_stat == SZOMB ||
- kvm_uread(kd, p, (u_long)ps, (char *)&arginfo,
- sizeof(arginfo)) != sizeof(arginfo))
- return (0);
-
- (*info)(&arginfo, &addr, &cnt);
- if (cnt == 0)
- return (0);
- ap = kvm_argv(kd, p, addr, cnt, nchr);
- /*
- * For live kernels, make sure this process didn't go away.
- */
- if (ap != 0 && ISALIVE(kd) &&
- !proc_verify(kd, (u_long)kp->kp_eproc.e_paddr, p))
- ap = 0;
- return (ap);
-}
-
-/*
- * Get the command args. This code is now machine independent.
- */
-char **
-kvm_getargv(kd, kp, nchr)
- kvm_t *kd;
- const struct kinfo_proc *kp;
- int nchr;
-{
- return (kvm_doargv(kd, kp, nchr, ps_str_a));
-}
-
-char **
-kvm_getenvv(kd, kp, nchr)
- kvm_t *kd;
- const struct kinfo_proc *kp;
- int nchr;
-{
- return (kvm_doargv(kd, kp, nchr, ps_str_e));
-}
-
-/*
- * Read from user space. The user context is given by p.
- */
-ssize_t
-kvm_uread(kd, p, uva, buf, len)
- kvm_t *kd;
- const struct proc *p;
- u_long uva;
- char *buf;
- size_t len;
-{
- char *cp;
-
- cp = buf;
- while (len > 0) {
- int cc;
- char *dp;
- u_long cnt;
-
- dp = _kvm_uread(kd, p, uva, &cnt);
- if (dp == 0) {
- _kvm_err(kd, 0, "invalid address (%lx)", uva);
- return (0);
- }
- cc = MIN(cnt, len);
- bcopy(dp, cp, cc);
-
- cp += cc;
- uva += cc;
- len -= cc;
- }
- return (ssize_t)(cp - buf);
-}
diff --git a/lib/libkvm.old/kvm_read.3 b/lib/libkvm.old/kvm_read.3
deleted file mode 100644
index 969bed16b28..00000000000
--- a/lib/libkvm.old/kvm_read.3
+++ /dev/null
@@ -1,94 +0,0 @@
-.\" $OpenBSD: kvm_read.3,v 1.2 1999/07/09 13:35:26 aaron Exp $
-.\"
-.\" Copyright (c) 1992, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" This code is derived from software developed by the Computer Systems
-.\" Engineering group at Lawrence Berkeley Laboratory under DARPA contract
-.\" BG 91-66 and contributed to Berkeley.
-.\"
-.\" 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 University of
-.\" California, Berkeley and its contributors.
-.\" 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
-.\"
-.\" @(#)kvm_read.3 8.1 (Berkeley) 6/4/93
-.\"
-.Dd June 4, 1993
-.Dt KVM_READ 3
-.Os
-.Sh NAME
-.Nm kvm_read ,
-.Nm kvm_write
-.Nd read or write kernel virtual memory
-.Sh SYNOPSIS
-.Fd #include <kvm.h>
-.Ft ssize_t
-.Fn kvm_read "kvm_t *kd" "u_long addr" "void *buf" "size_t nbytes"
-.Ft ssize_t
-.Fn kvm_write "kvm_t *kd" "u_long addr" "const void *buf" "size_t nbytes"
-.Sh DESCRIPTION
-The
-.Fn kvm_read
-and
-.Fn kvm_write
-functions are used to read and write kernel virtual memory (or a crash
-dump file). See
-.Fn kvm_open 3
-or
-.Fn kvm_openfiles 3
-for information regarding opening kernel virtual memory and crash dumps.
-.Pp
-The
-.Fn kvm_read
-function transfers
-.Fa nbytes
-bytes of data from
-the kernel space address
-.Fa addr
-to
-.Fa buf .
-Conversely,
-.Fn kvm_write
-transfers data from
-.Fa buf
-to
-.Fa addr .
-Unlike their SunOS counterparts, these functions cannot be used to
-read or write process address spaces.
-.Sh RETURN VALUES
-Upon success, the number of bytes actually transferred is returned.
-Otherwise, -1 is returned.
-.Sh SEE ALSO
-.Xr kvm 3 ,
-.Xr kvm_close 3 ,
-.Xr kvm_getargv 3 ,
-.Xr kvm_getenvv 3 ,
-.Xr kvm_geterr 3 ,
-.Xr kvm_getprocs 3 ,
-.Xr kvm_nlist 3 ,
-.Xr kvm_open 3 ,
-.Xr kvm_openfiles 3
diff --git a/lib/libkvm.old/kvm_sparc.c b/lib/libkvm.old/kvm_sparc.c
deleted file mode 100644
index cc001e3f166..00000000000
--- a/lib/libkvm.old/kvm_sparc.c
+++ /dev/null
@@ -1,251 +0,0 @@
-/* $OpenBSD: kvm_sparc.c,v 1.1 1996/03/19 23:15:41 niklas Exp $ */
-
-/*-
- * Copyright (c) 1992, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software developed by the Computer Systems
- * Engineering group at Lawrence Berkeley Laboratory under DARPA contract
- * BG 91-66 and contributed to Berkeley.
- *
- * 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 University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "@(#)kvm_sparc.c 8.1 (Berkeley) 6/4/93";
-#endif /* LIBC_SCCS and not lint */
-
-/*
- * Sparc machine dependent routines for kvm. Hopefully, the forthcoming
- * vm code will one day obsolete this module.
- */
-
-#include <sys/param.h>
-#include <sys/user.h>
-#include <sys/proc.h>
-#include <sys/stat.h>
-#include <sys/sysctl.h>
-#include <sys/device.h>
-#include <unistd.h>
-#include <nlist.h>
-#include <kvm.h>
-
-#include <vm/vm.h>
-#include <vm/vm_param.h>
-#include <machine/autoconf.h>
-
-#include <limits.h>
-#include <db.h>
-
-#include "kvm_private.h"
-
-#define MA_SIZE 32 /* XXX */
-struct vmstate {
- struct {
- int x_seginval;
- int x_npmemarr;
- struct memarr x_pmemarr[MA_SIZE];
- struct segmap x_segmap_store[NKREG*NSEGRG];
- } x;
-#define seginval x.x_seginval
-#define npmemarr x.x_npmemarr
-#define pmemarr x.x_pmemarr
-#define segmap_store x.x_segmap_store
- int *pte;
-};
-#define NPMEG(vm) ((vm)->seginval+1)
-
-static int cputyp = -1;
-
-static int pgshift, nptesg;
-
-#define VA_VPG(va) (cputyp==CPU_SUN4C ? VA_SUN4C_VPG(va) : VA_SUN4_VPG(va))
-
-static void
-_kvm_mustinit(kd)
- kvm_t *kd;
-{
- if (cputyp != -1)
- return;
- for (pgshift = 12; (1 << pgshift) != kd->nbpg; pgshift++)
- ;
- nptesg = NBPSG / kd->nbpg;
-
-#if 1
- if (cputyp == -1) {
- if (kd->nbpg == 8192)
- cputyp = CPU_SUN4;
- else
- cputyp = CPU_SUN4C;
- }
-#endif
-}
-
-void
-_kvm_freevtop(kd)
- kvm_t *kd;
-{
- if (kd->vmst != 0) {
- if (kd->vmst->pte != 0)
- free(kd->vmst->pte);
- free(kd->vmst);
- kd->vmst = 0;
- }
-}
-
-/*
- * Prepare for translation of kernel virtual addresses into offsets
- * into crash dump files. We use the MMU specific goop written at the
- * and of crash dump by pmap_dumpmmu().
- * (note: sun4/sun4c 2-level MMU specific)
- */
-int
-_kvm_initvtop(kd)
- kvm_t *kd;
-{
- register int i;
- register int off;
- register struct vmstate *vm;
- struct stat st;
- struct nlist nlist[5];
-
- _kvm_mustinit(kd);
-
- if ((vm = kd->vmst) == 0) {
- kd->vmst = vm = (struct vmstate *)_kvm_malloc(kd, sizeof(*vm));
- if (vm == 0)
- return (-1);
- }
-
- if (fstat(kd->pmfd, &st) < 0)
- return (-1);
- /*
- * Read segment table.
- */
-
- off = st.st_size - roundup(sizeof(vm->x), kd->nbpg);
- errno = 0;
- if (lseek(kd->pmfd, (off_t)off, 0) == -1 && errno != 0 ||
- read(kd->pmfd, (char *)&vm->x, sizeof(vm->x)) < 0) {
- _kvm_err(kd, kd->program, "cannot read segment map");
- return (-1);
- }
-
- vm->pte = (int *)_kvm_malloc(kd, NPMEG(vm) * nptesg * sizeof(int));
- if (vm->pte == 0) {
- free(kd->vmst);
- kd->vmst = 0;
- return (-1);
- }
-
- /*
- * Read PMEGs.
- */
- off = st.st_size - roundup(sizeof(vm->x), kd->nbpg) -
- roundup(NPMEG(vm) * nptesg * sizeof(int), kd->nbpg);
-
- errno = 0;
- if (lseek(kd->pmfd, (off_t)off, 0) == -1 && errno != 0 ||
- read(kd->pmfd, (char *)vm->pte, NPMEG(vm) * nptesg * sizeof(int)) < 0) {
- _kvm_err(kd, kd->program, "cannot read PMEG table");
- return (-1);
- }
-
- return (0);
-}
-
-#define VA_OFF(va) (va & (kd->nbpg - 1))
-
-/*
- * Translate a kernel virtual address to a physical address using the
- * mapping information in kd->vm. Returns the result in pa, and returns
- * the number of bytes that are contiguously available from this
- * physical address. This routine is used only for crashdumps.
- */
-int
-_kvm_kvatop(kd, va, pa)
- kvm_t *kd;
- u_long va;
- u_long *pa;
-{
- register int vr, vs, pte, off, nmem;
- register struct vmstate *vm = kd->vmst;
- struct regmap *rp;
- struct segmap *sp;
- struct memarr *mp;
-
- _kvm_mustinit(kd);
-
- if (va < KERNBASE)
- goto err;
-
- vr = VA_VREG(va);
- vs = VA_VSEG(va);
-
- sp = &vm->segmap_store[(vr-NUREG)*NSEGRG + vs];
- if (sp->sg_npte == 0)
- goto err;
- if (sp->sg_pmeg == vm->seginval)
- goto err;
- pte = vm->pte[sp->sg_pmeg * nptesg + VA_VPG(va)];
- if ((pte & PG_V) != 0) {
- register long p, dumpoff = 0;
-
- off = VA_OFF(va);
- p = (pte & PG_PFNUM) << pgshift;
- /* Translate (sparse) pfnum to (packed) dump offset */
- for (mp = vm->pmemarr, nmem = vm->npmemarr; --nmem >= 0; mp++) {
- if (mp->addr <= p && p < mp->addr + mp->len)
- break;
- dumpoff += mp->len;
- }
- if (nmem < 0)
- goto err;
- *pa = (dumpoff + p - mp->addr) | off;
- return (kd->nbpg - off);
- }
-err:
- _kvm_err(kd, 0, "invalid address (%x)", va);
- return (0);
-}
-
-#if 0
-static int
-getcputyp()
-{
- int mib[2];
- size_t size;
-
- mib[0] = CTL_HW;
- mib[1] = HW_CLASS;
- size = sizeof cputyp;
- if (sysctl(mib, 2, &cputyp, &size, NULL, 0) == -1)
- return (-1);
-}
-#endif
diff --git a/lib/libkvm.old/kvm_sun3.c b/lib/libkvm.old/kvm_sun3.c
deleted file mode 100644
index dc65db3e44c..00000000000
--- a/lib/libkvm.old/kvm_sun3.c
+++ /dev/null
@@ -1,134 +0,0 @@
-/* $OpenBSD: kvm_sun3.c,v 1.1 1996/03/19 23:15:42 niklas Exp $ */
-
-/*-
- * Copyright (c) 1992, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software developed by the Computer Systems
- * Engineering group at Lawrence Berkeley Laboratory under DARPA contract
- * BG 91-66 and contributed to Berkeley.
- *
- * 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 University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- */
-
-/*
- * Sun3 machine dependent routines for kvm. Hopefully, the forthcoming
- * vm code will one day obsolete this module. Furthermore, I hope it
- * gets here soon, because this basically is an error stub! (sorry)
- */
-
-#include <sys/param.h>
-#include <sys/user.h>
-#include <sys/proc.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <nlist.h>
-#include <kvm.h>
-
-#include <vm/vm.h>
-#include <vm/vm_param.h>
-
-#include <limits.h>
-#include <db.h>
-
-#include "kvm_private.h"
-
-struct vmstate {
- u_long end;
-};
-
-void
-_kvm_freevtop(kd)
- kvm_t *kd;
-{
- if (kd->vmst != 0)
- free(kd->vmst);
-}
-
-int
-_kvm_initvtop(kd)
- kvm_t *kd;
-{
- register int i;
- register int off;
- register struct vmstate *vm;
- struct stat st;
- struct nlist nlist[2];
-
- vm = (struct vmstate *)_kvm_malloc(kd, sizeof(*vm));
- if (vm == 0)
- return (-1);
-
- kd->vmst = vm;
-
- if (fstat(kd->pmfd, &st) < 0)
- return (-1);
-
- /* Get end of kernel address */
- nlist[0].n_name = "_end";
- nlist[1].n_name = 0;
- if (kvm_nlist(kd, nlist) != 0) {
- _kvm_err(kd, kd->program, "pmap_stod: no such symbol");
- return (-1);
- }
- vm->end = (u_long)nlist[0].n_value;
-
- return (0);
-}
-
-#define VA_OFF(va) (va & (NBPG - 1))
-
-/*
- * Translate a kernel virtual address to a physical address using the
- * mapping information in kd->vm. Returns the result in pa, and returns
- * the number of bytes that are contiguously available from this
- * physical address. This routine is used only for crashdumps.
- */
-int
-_kvm_kvatop(kd, va, pa)
- kvm_t *kd;
- u_long va;
- u_long *pa;
-{
- register int end;
-
- if (va < KERNBASE) {
- _kvm_err(kd, 0, "invalid address (%x<%x)", va, KERNBASE);
- return (0);
- }
-
- end = kd->vmst->end;
- if (va >= end) {
- _kvm_err(kd, 0, "invalid address (%x>=%x)", va, end);
- return (0);
- }
-
- *pa = (va - KERNBASE);
- return (end - va);
-}
diff --git a/lib/libkvm.old/kvm_vax.c b/lib/libkvm.old/kvm_vax.c
deleted file mode 100644
index dde14850ebf..00000000000
--- a/lib/libkvm.old/kvm_vax.c
+++ /dev/null
@@ -1,135 +0,0 @@
-/* $OpenBSD: kvm_vax.c,v 1.1 1996/03/19 23:15:43 niklas Exp $ */
-/* $NetBSD: kvm_vax.c,v 1.1.1.1 1996/03/16 10:05:24 leo Exp $ */
-/*-
- * Copyright (c) 1992, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software developed by the Computer Systems
- * Engineering group at Lawrence Berkeley Laboratory under DARPA contract
- * BG 91-66 and contributed to Berkeley.
- *
- * 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 University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- */
-
-/*
- * VAX machine dependent routines for kvm. Hopefully, the forthcoming
- * vm code will one day obsolete this module. Furthermore, I hope it
- * gets here soon, because this basically is an error stub! (sorry)
- * This code may not work anyway.
- */
-
-#include <sys/param.h>
-#include <sys/user.h>
-#include <sys/proc.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <nlist.h>
-#include <kvm.h>
-
-#include <vm/vm.h>
-#include <vm/vm_param.h>
-
-#include <limits.h>
-#include <db.h>
-
-#include "kvm_private.h"
-
-struct vmstate {
- u_long end;
-};
-
-void
-_kvm_freevtop(kd)
- kvm_t *kd;
-{
- if (kd->vmst != 0)
- free(kd->vmst);
-}
-
-int
-_kvm_initvtop(kd)
- kvm_t *kd;
-{
- register int i;
- register int off;
- register struct vmstate *vm;
- struct stat st;
- struct nlist nlist[2];
-
- vm = (struct vmstate *)_kvm_malloc(kd, sizeof(*vm));
- if (vm == 0)
- return (-1);
-
- kd->vmst = vm;
-
- if (fstat(kd->pmfd, &st) < 0)
- return (-1);
-
- /* Get end of kernel address */
- nlist[0].n_name = "_end";
- nlist[1].n_name = 0;
- if (kvm_nlist(kd, nlist) != 0) {
- _kvm_err(kd, kd->program, "pmap_stod: no such symbol");
- return (-1);
- }
- vm->end = (u_long)nlist[0].n_value;
-
- return (0);
-}
-
-#define VA_OFF(va) (va & (NBPG - 1))
-
-/*
- * Translate a kernel virtual address to a physical address using the
- * mapping information in kd->vm. Returns the result in pa, and returns
- * the number of bytes that are contiguously available from this
- * physical address. This routine is used only for crashdumps.
- */
-int
-_kvm_kvatop(kd, va, pa)
- kvm_t *kd;
- u_long va;
- u_long *pa;
-{
- register int end;
-
- if (va < KERNBASE) {
- _kvm_err(kd, 0, "invalid address (%x<%x)", va, KERNBASE);
- return (0);
- }
-
- end = kd->vmst->end;
- if (va >= end) {
- _kvm_err(kd, 0, "invalid address (%x>=%x)", va, end);
- return (0);
- }
-
- *pa = (va - KERNBASE);
- return (end - va);
-}
diff --git a/lib/libkvm.old/shlib_version b/lib/libkvm.old/shlib_version
deleted file mode 100644
index 890c57389b5..00000000000
--- a/lib/libkvm.old/shlib_version
+++ /dev/null
@@ -1,2 +0,0 @@
-major=4
-minor=1