CVS commit: src/lib/libkvm
Module Name:src Committed By: rin Date: Wed Aug 23 14:00:12 UTC 2023 Modified Files: src/lib/libkvm: kvm.c kvm_aarch64.c kvm_alpha.c kvm_i386pae.c kvm_or1k.c kvm_powerpc.c kvm_powerpc64.c kvm_riscv.c kvm_sparc64.c Log Message: libkvm: whitespace To generate a diff of this commit: cvs rdiff -u -r1.110 -r1.111 src/lib/libkvm/kvm.c cvs rdiff -u -r1.11 -r1.12 src/lib/libkvm/kvm_aarch64.c cvs rdiff -u -r1.28 -r1.29 src/lib/libkvm/kvm_alpha.c cvs rdiff -u -r1.3 -r1.4 src/lib/libkvm/kvm_i386pae.c cvs rdiff -u -r1.2 -r1.3 src/lib/libkvm/kvm_or1k.c src/lib/libkvm/kvm_riscv.c cvs rdiff -u -r1.14 -r1.15 src/lib/libkvm/kvm_powerpc.c cvs rdiff -u -r1.7 -r1.8 src/lib/libkvm/kvm_powerpc64.c cvs rdiff -u -r1.18 -r1.19 src/lib/libkvm/kvm_sparc64.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm.c diff -u src/lib/libkvm/kvm.c:1.110 src/lib/libkvm/kvm.c:1.111 --- src/lib/libkvm/kvm.c:1.110 Mon Jan 10 19:51:30 2022 +++ src/lib/libkvm/kvm.c Wed Aug 23 14:00:11 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm.c,v 1.110 2022/01/10 19:51:30 christos Exp $ */ +/* $NetBSD: kvm.c,v 1.111 2023/08/23 14:00:11 rin Exp $ */ /*- * Copyright (c) 1989, 1992, 1993 @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = "@(#)kvm.c 8.2 (Berkeley) 2/13/94"; #else -__RCSID("$NetBSD: kvm.c,v 1.110 2022/01/10 19:51:30 christos Exp $"); +__RCSID("$NetBSD: kvm.c,v 1.111 2023/08/23 14:00:11 rin Exp $"); #endif #endif /* LIBC_SCCS and not lint */ @@ -187,9 +187,9 @@ _kvm_pread(kvm_t *kd, int fd, void *buf, } /* If aligned nothing to do. */ - if (((off % kd->fdalign) | (size % kd->fdalign)) == 0) { + if (((off % kd->fdalign) | (size % kd->fdalign)) == 0) { return pread(fd, buf, size, off); - } + } /* * Otherwise must buffer. We can't tolerate short reads in this @@ -397,7 +397,7 @@ _kvm_open(kvm_t *kd, const char *uf, con goto failed; } kd->dump_size = (size_t)st.st_size; - kd->dump_mem = mmap(NULL, kd->dump_size, PROT_READ|PROT_WRITE, + kd->dump_mem = mmap(NULL, kd->dump_size, PROT_READ|PROT_WRITE, MAP_FILE|MAP_PRIVATE, kd->pmfd, 0); } return (kd); @@ -635,7 +635,7 @@ clear_gap(kvm_t *kd, bool (*write_buf)(v return -1; } size -= len; - } + } return 0; } Index: src/lib/libkvm/kvm_aarch64.c diff -u src/lib/libkvm/kvm_aarch64.c:1.11 src/lib/libkvm/kvm_aarch64.c:1.12 --- src/lib/libkvm/kvm_aarch64.c:1.11 Mon Jan 10 19:51:30 2022 +++ src/lib/libkvm/kvm_aarch64.c Wed Aug 23 14:00:11 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_aarch64.c,v 1.11 2022/01/10 19:51:30 christos Exp $ */ +/* $NetBSD: kvm_aarch64.c,v 1.12 2023/08/23 14:00:11 rin Exp $ */ /*- * Copyright (c) 2014, 2018 The NetBSD Foundation, Inc. @@ -49,7 +49,7 @@ #include "kvm_private.h" -__RCSID("$NetBSD: kvm_aarch64.c,v 1.11 2022/01/10 19:51:30 christos Exp $"); +__RCSID("$NetBSD: kvm_aarch64.c,v 1.12 2023/08/23 14:00:11 rin Exp $"); /*ARGSUSED*/ void @@ -68,10 +68,10 @@ _kvm_initvtop(kvm_t *kd) int _kvm_kvatop(kvm_t *kd, vaddr_t va, paddr_t *pa) { -if (ISALIVE(kd)) { -_kvm_err(kd, 0, "vatop called in live kernel!"); -return(0); -} + if (ISALIVE(kd)) { + _kvm_err(kd, 0, "vatop called in live kernel!"); + return(0); + } if ((va & AARCH64_DIRECTMAP_MASK) != AARCH64_DIRECTMAP_START) { /* @@ -154,7 +154,7 @@ lose: } if (--levels == 0) { *pa = (pte & page_addr) | (va & page_mask); - return page_size - (va & page_mask); + return page_size - (va & page_mask); } /* Index: src/lib/libkvm/kvm_alpha.c diff -u src/lib/libkvm/kvm_alpha.c:1.28 src/lib/libkvm/kvm_alpha.c:1.29 --- src/lib/libkvm/kvm_alpha.c:1.28 Mon Jan 10 19:51:30 2022 +++ src/lib/libkvm/kvm_alpha.c Wed Aug 23 14:00:11 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_alpha.c,v 1.28 2022/01/10 19:51:30 christos Exp $ */ +/* $NetBSD: kvm_alpha.c,v 1.29 2023/08/23 14:00:11 rin Exp $ */ /* * Copyright (c) 1994, 1995 Carnegie-Mellon University. @@ -50,7 +50,7 @@ #include "kvm_private.h" -__RCSID("$NetBSD: kvm_alpha.c,v 1.28 2022/01/10 19:51:30 christos Exp $"); +__RCSID("$NetBSD: kvm_alpha.c,v 1.29 2023/08/23 14:00:11 rin Exp $"); /*ARGSUSED*/ void @@ -74,10 +74,10 @@ _kvm_kvatop(kvm_t *kd, vaddr_t va, paddr u_long pteoff, page_off; int rv; -if (ISALIVE(kd)) { -_kvm_err(kd, 0, "vatop called in live kernel!"); -return(0); -} + if (ISALIVE(kd)) { + _kvm_err(kd, 0, "vatop called in live kernel!"); + return(0); + } cpu_kh = kd->cpu_data; page_off = va & (cpu_kh->page_size - 1); Index: src/lib/libkvm/kvm_i386pae.c diff -u src/lib/libkvm/kvm_i386pae.c:1.3 src/lib/libkvm/kvm_i386pae.c:1.4 --- src/lib/libkvm/kvm_i386pae.c:1.3 Sat Apr 25 05:17:16 2020 +++ src/lib/libkvm/kvm_i386pae.c Wed Aug 23 14:00:11 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_i386pae.c,v 1.3 2020/04/25 05:17:16 maxv Exp $ */ +/* $NetBSD:
CVS commit: src/lib/libkvm
Module Name:src Committed By: rin Date: Wed Aug 23 14:00:12 UTC 2023 Modified Files: src/lib/libkvm: kvm.c kvm_aarch64.c kvm_alpha.c kvm_i386pae.c kvm_or1k.c kvm_powerpc.c kvm_powerpc64.c kvm_riscv.c kvm_sparc64.c Log Message: libkvm: whitespace To generate a diff of this commit: cvs rdiff -u -r1.110 -r1.111 src/lib/libkvm/kvm.c cvs rdiff -u -r1.11 -r1.12 src/lib/libkvm/kvm_aarch64.c cvs rdiff -u -r1.28 -r1.29 src/lib/libkvm/kvm_alpha.c cvs rdiff -u -r1.3 -r1.4 src/lib/libkvm/kvm_i386pae.c cvs rdiff -u -r1.2 -r1.3 src/lib/libkvm/kvm_or1k.c src/lib/libkvm/kvm_riscv.c cvs rdiff -u -r1.14 -r1.15 src/lib/libkvm/kvm_powerpc.c cvs rdiff -u -r1.7 -r1.8 src/lib/libkvm/kvm_powerpc64.c cvs rdiff -u -r1.18 -r1.19 src/lib/libkvm/kvm_sparc64.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: rillig Date: Sat Apr 1 09:08:11 UTC 2023 Modified Files: src/lib/libkvm: Makefile Log Message: libkvm: suppress lint warnings about extern declarations for now This should be properly fixed by someone who is familiar with libkvm, as it affects as well. To generate a diff of this commit: cvs rdiff -u -r1.51 -r1.52 src/lib/libkvm/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/Makefile diff -u src/lib/libkvm/Makefile:1.51 src/lib/libkvm/Makefile:1.52 --- src/lib/libkvm/Makefile:1.51 Sun Jan 24 16:07:48 2016 +++ src/lib/libkvm/Makefile Sat Apr 1 09:08:11 2023 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.51 2016/01/24 16:07:48 christos Exp $ +# $NetBSD: Makefile,v 1.52 2023/04/01 09:08:11 rillig Exp $ # from: @(#)Makefile 8.1 (Berkeley) 6/4/93 WARNS= 3 @@ -34,6 +34,8 @@ SRCS+= kvm_${MACHINE_CPU}.c .if ${MACHINE_ARCH} == "i386" LINTFLAGS+=-w +LINTFLAGS+= -X 351 # 'extern' declaration outside header +LINTFLAGS+= -X 352 # 'extern' declaration in function body SRCS+= kvm_i386pae.c # Hook PAE support in the i386 build .endif
CVS commit: src/lib/libkvm
Module Name:src Committed By: rillig Date: Sat Apr 1 09:08:11 UTC 2023 Modified Files: src/lib/libkvm: Makefile Log Message: libkvm: suppress lint warnings about extern declarations for now This should be properly fixed by someone who is familiar with libkvm, as it affects as well. To generate a diff of this commit: cvs rdiff -u -r1.51 -r1.52 src/lib/libkvm/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: christos Date: Mon Jan 10 20:04:01 UTC 2022 Modified Files: src/lib/libkvm: kvm_proc.c Log Message: read the ps arguments from the correct place. To generate a diff of this commit: cvs rdiff -u -r1.96 -r1.97 src/lib/libkvm/kvm_proc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm_proc.c diff -u src/lib/libkvm/kvm_proc.c:1.96 src/lib/libkvm/kvm_proc.c:1.97 --- src/lib/libkvm/kvm_proc.c:1.96 Mon Jan 10 14:51:30 2022 +++ src/lib/libkvm/kvm_proc.c Mon Jan 10 15:04:01 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_proc.c,v 1.96 2022/01/10 19:51:30 christos Exp $ */ +/* $NetBSD: kvm_proc.c,v 1.97 2022/01/10 20:04:01 christos Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #if 0 static char sccsid[] = "@(#)kvm_proc.c 8.3 (Berkeley) 9/23/93"; #else -__RCSID("$NetBSD: kvm_proc.c,v 1.96 2022/01/10 19:51:30 christos Exp $"); +__RCSID("$NetBSD: kvm_proc.c,v 1.97 2022/01/10 20:04:01 christos Exp $"); #endif #endif /* LIBC_SCCS and not lint */ @@ -118,6 +118,7 @@ __RCSID("$NetBSD: kvm_proc.c,v 1.96 2022 struct miniproc { struct vmspace *p_vmspace; char p_stat; + vaddr_t p_psstrp; struct proc *p_paddr; pid_t p_pid; }; @@ -131,6 +132,7 @@ struct miniproc { (p)->p_pid = (kp)->p_pid; \ (p)->p_paddr = NULL; \ (p)->p_vmspace = (kp)->p_vmspace; \ + (p)->p_psstrp = (kp)->p_psstrp; \ } while (/*CONSTCOND*/0); #define KPTOMINI(kp, p) \ @@ -1057,7 +1059,6 @@ proc_verify(kvm_t *kd, u_long kernp, con (kernproc.p_stat != SZOMB || p->p_stat == SZOMB)); } -extern struct ps_strings *__ps_strings; static char ** kvm_doargv(kvm_t *kd, const struct miniproc *p, int nchr, void (*info)(struct ps_strings *, u_long *, int *)) @@ -1072,8 +1073,7 @@ kvm_doargv(kvm_t *kd, const struct minip */ if (p->p_stat == SZOMB) return (NULL); - /* XXX: this is broken for ASLR: we need to read p->p_psstr instead */ - cnt = (int)kvm_ureadm(kd, p, (u_long)(intptr_t)__ps_strings, + cnt = (int)kvm_ureadm(kd, p, p->p_psstrp, (void *), sizeof(arginfo)); if (cnt != sizeof(arginfo)) return (NULL);
CVS commit: src/lib/libkvm
Module Name:src Committed By: christos Date: Mon Jan 10 20:04:01 UTC 2022 Modified Files: src/lib/libkvm: kvm_proc.c Log Message: read the ps arguments from the correct place. To generate a diff of this commit: cvs rdiff -u -r1.96 -r1.97 src/lib/libkvm/kvm_proc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: christos Date: Mon Jan 10 19:51:30 UTC 2022 Modified Files: src/lib/libkvm: kvm.c kvm_aarch64.c kvm_alpha.c kvm_arm.c kvm_hppa.c kvm_i386.c kvm_m68k.c kvm_mips.c kvm_or1k.c kvm_powerpc.c kvm_powerpc64.c kvm_private.h kvm_proc.c kvm_riscv.c kvm_sh3.c kvm_sparc.c kvm_sparc64.c kvm_vax.c kvm_x86_64.c Log Message: Get rid of usrstack/USRSTACK. Document that the old version of getargv is broken because of ASLR. To generate a diff of this commit: cvs rdiff -u -r1.109 -r1.110 src/lib/libkvm/kvm.c cvs rdiff -u -r1.10 -r1.11 src/lib/libkvm/kvm_aarch64.c cvs rdiff -u -r1.27 -r1.28 src/lib/libkvm/kvm_alpha.c cvs rdiff -u -r1.6 -r1.7 src/lib/libkvm/kvm_arm.c \ src/lib/libkvm/kvm_powerpc64.c cvs rdiff -u -r1.7 -r1.8 src/lib/libkvm/kvm_hppa.c cvs rdiff -u -r1.31 -r1.32 src/lib/libkvm/kvm_i386.c cvs rdiff -u -r1.19 -r1.20 src/lib/libkvm/kvm_m68k.c cvs rdiff -u -r1.22 -r1.23 src/lib/libkvm/kvm_mips.c cvs rdiff -u -r1.1 -r1.2 src/lib/libkvm/kvm_or1k.c src/lib/libkvm/kvm_riscv.c cvs rdiff -u -r1.13 -r1.14 src/lib/libkvm/kvm_powerpc.c cvs rdiff -u -r1.21 -r1.22 src/lib/libkvm/kvm_private.h cvs rdiff -u -r1.95 -r1.96 src/lib/libkvm/kvm_proc.c cvs rdiff -u -r1.9 -r1.10 src/lib/libkvm/kvm_sh3.c cvs rdiff -u -r1.35 -r1.36 src/lib/libkvm/kvm_sparc.c cvs rdiff -u -r1.17 -r1.18 src/lib/libkvm/kvm_sparc64.c cvs rdiff -u -r1.20 -r1.21 src/lib/libkvm/kvm_vax.c cvs rdiff -u -r1.12 -r1.13 src/lib/libkvm/kvm_x86_64.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm.c diff -u src/lib/libkvm/kvm.c:1.109 src/lib/libkvm/kvm.c:1.110 --- src/lib/libkvm/kvm.c:1.109 Sat May 2 10:31:13 2020 +++ src/lib/libkvm/kvm.c Mon Jan 10 14:51:30 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm.c,v 1.109 2020/05/02 14:31:13 christos Exp $ */ +/* $NetBSD: kvm.c,v 1.110 2022/01/10 19:51:30 christos Exp $ */ /*- * Copyright (c) 1989, 1992, 1993 @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = "@(#)kvm.c 8.2 (Berkeley) 2/13/94"; #else -__RCSID("$NetBSD: kvm.c,v 1.109 2020/05/02 14:31:13 christos Exp $"); +__RCSID("$NetBSD: kvm.c,v 1.110 2022/01/10 19:51:30 christos Exp $"); #endif #endif /* LIBC_SCCS and not lint */ @@ -289,7 +289,7 @@ _kvm_open(kvm_t *kd, const char *uf, con /* * Call the MD open hook. This sets: - * usrstack, min_uva, max_uva + * min_uva, max_uva */ if (_kvm_mdopen(kd)) { _kvm_err(kd, kd->program, "md init failed"); Index: src/lib/libkvm/kvm_aarch64.c diff -u src/lib/libkvm/kvm_aarch64.c:1.10 src/lib/libkvm/kvm_aarch64.c:1.11 --- src/lib/libkvm/kvm_aarch64.c:1.10 Tue Nov 10 14:14:11 2020 +++ src/lib/libkvm/kvm_aarch64.c Mon Jan 10 14:51:30 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_aarch64.c,v 1.10 2020/11/10 19:14:11 skrll Exp $ */ +/* $NetBSD: kvm_aarch64.c,v 1.11 2022/01/10 19:51:30 christos Exp $ */ /*- * Copyright (c) 2014, 2018 The NetBSD Foundation, Inc. @@ -49,7 +49,7 @@ #include "kvm_private.h" -__RCSID("$NetBSD: kvm_aarch64.c,v 1.10 2020/11/10 19:14:11 skrll Exp $"); +__RCSID("$NetBSD: kvm_aarch64.c,v 1.11 2022/01/10 19:51:30 christos Exp $"); /*ARGSUSED*/ void @@ -197,7 +197,6 @@ int _kvm_mdopen(kvm_t *kd) { - kd->usrstack = USRSTACK; kd->min_uva = VM_MIN_ADDRESS; kd->max_uva = VM_MAXUSER_ADDRESS; Index: src/lib/libkvm/kvm_alpha.c diff -u src/lib/libkvm/kvm_alpha.c:1.27 src/lib/libkvm/kvm_alpha.c:1.28 --- src/lib/libkvm/kvm_alpha.c:1.27 Wed Feb 19 15:21:22 2014 +++ src/lib/libkvm/kvm_alpha.c Mon Jan 10 14:51:30 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_alpha.c,v 1.27 2014/02/19 20:21:22 dsl Exp $ */ +/* $NetBSD: kvm_alpha.c,v 1.28 2022/01/10 19:51:30 christos Exp $ */ /* * Copyright (c) 1994, 1995 Carnegie-Mellon University. @@ -50,7 +50,7 @@ #include "kvm_private.h" -__RCSID("$NetBSD: kvm_alpha.c,v 1.27 2014/02/19 20:21:22 dsl Exp $"); +__RCSID("$NetBSD: kvm_alpha.c,v 1.28 2022/01/10 19:51:30 christos Exp $"); /*ARGSUSED*/ void @@ -186,7 +186,6 @@ int _kvm_mdopen(kvm_t *kd) { - kd->usrstack = USRSTACK; kd->min_uva = VM_MIN_ADDRESS; kd->max_uva = VM_MAXUSER_ADDRESS; Index: src/lib/libkvm/kvm_arm.c diff -u src/lib/libkvm/kvm_arm.c:1.6 src/lib/libkvm/kvm_arm.c:1.7 --- src/lib/libkvm/kvm_arm.c:1.6 Mon Sep 20 19:23:16 2010 +++ src/lib/libkvm/kvm_arm.c Mon Jan 10 14:51:30 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_arm.c,v 1.6 2010/09/20 23:23:16 jym Exp $ */ +/* $NetBSD: kvm_arm.c,v 1.7 2022/01/10 19:51:30 christos Exp $ */ /*- * Copyright (C) 1996 Wolfgang Solfrank. @@ -39,7 +39,7 @@ #include #if defined(LIBC_SCCS) && !defined(lint) -__RCSID("$NetBSD: kvm_arm.c,v 1.6 2010/09/20 23:23:16 jym Exp $"); +__RCSID("$NetBSD: kvm_arm.c,v 1.7 2022/01/10 19:51:30 christos Exp $"); #endif/* LIBC_SCCS and not lint */ #include @@ -194,13 +194,11 @@ _kvm_mdopen(kvm_t * kd) extern struct ps_strings *__ps_strings; #if 0/* XXX - These vary across arm machines... */ -
CVS commit: src/lib/libkvm
Module Name:src Committed By: christos Date: Mon Jan 10 19:51:30 UTC 2022 Modified Files: src/lib/libkvm: kvm.c kvm_aarch64.c kvm_alpha.c kvm_arm.c kvm_hppa.c kvm_i386.c kvm_m68k.c kvm_mips.c kvm_or1k.c kvm_powerpc.c kvm_powerpc64.c kvm_private.h kvm_proc.c kvm_riscv.c kvm_sh3.c kvm_sparc.c kvm_sparc64.c kvm_vax.c kvm_x86_64.c Log Message: Get rid of usrstack/USRSTACK. Document that the old version of getargv is broken because of ASLR. To generate a diff of this commit: cvs rdiff -u -r1.109 -r1.110 src/lib/libkvm/kvm.c cvs rdiff -u -r1.10 -r1.11 src/lib/libkvm/kvm_aarch64.c cvs rdiff -u -r1.27 -r1.28 src/lib/libkvm/kvm_alpha.c cvs rdiff -u -r1.6 -r1.7 src/lib/libkvm/kvm_arm.c \ src/lib/libkvm/kvm_powerpc64.c cvs rdiff -u -r1.7 -r1.8 src/lib/libkvm/kvm_hppa.c cvs rdiff -u -r1.31 -r1.32 src/lib/libkvm/kvm_i386.c cvs rdiff -u -r1.19 -r1.20 src/lib/libkvm/kvm_m68k.c cvs rdiff -u -r1.22 -r1.23 src/lib/libkvm/kvm_mips.c cvs rdiff -u -r1.1 -r1.2 src/lib/libkvm/kvm_or1k.c src/lib/libkvm/kvm_riscv.c cvs rdiff -u -r1.13 -r1.14 src/lib/libkvm/kvm_powerpc.c cvs rdiff -u -r1.21 -r1.22 src/lib/libkvm/kvm_private.h cvs rdiff -u -r1.95 -r1.96 src/lib/libkvm/kvm_proc.c cvs rdiff -u -r1.9 -r1.10 src/lib/libkvm/kvm_sh3.c cvs rdiff -u -r1.35 -r1.36 src/lib/libkvm/kvm_sparc.c cvs rdiff -u -r1.17 -r1.18 src/lib/libkvm/kvm_sparc64.c cvs rdiff -u -r1.20 -r1.21 src/lib/libkvm/kvm_vax.c cvs rdiff -u -r1.12 -r1.13 src/lib/libkvm/kvm_x86_64.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: christos Date: Mon Jul 19 10:30:36 UTC 2021 Modified Files: src/lib/libkvm: kvm_proc.c Log Message: Match the declaration in To generate a diff of this commit: cvs rdiff -u -r1.94 -r1.95 src/lib/libkvm/kvm_proc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: christos Date: Mon Jul 19 10:30:36 UTC 2021 Modified Files: src/lib/libkvm: kvm_proc.c Log Message: Match the declaration in To generate a diff of this commit: cvs rdiff -u -r1.94 -r1.95 src/lib/libkvm/kvm_proc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm_proc.c diff -u src/lib/libkvm/kvm_proc.c:1.94 src/lib/libkvm/kvm_proc.c:1.95 --- src/lib/libkvm/kvm_proc.c:1.94 Wed Dec 11 15:19:27 2019 +++ src/lib/libkvm/kvm_proc.c Mon Jul 19 06:30:36 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_proc.c,v 1.94 2019/12/11 20:19:27 ad Exp $ */ +/* $NetBSD: kvm_proc.c,v 1.95 2021/07/19 10:30:36 christos Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #if 0 static char sccsid[] = "@(#)kvm_proc.c 8.3 (Berkeley) 9/23/93"; #else -__RCSID("$NetBSD: kvm_proc.c,v 1.94 2019/12/11 20:19:27 ad Exp $"); +__RCSID("$NetBSD: kvm_proc.c,v 1.95 2021/07/19 10:30:36 christos Exp $"); #endif #endif /* LIBC_SCCS and not lint */ @@ -159,7 +159,9 @@ struct miniproc { */ struct kvm_kauth_cred { u_int cr_refcnt; /* reference count */ - uint8_t cr_pad[CACHE_LINE_SIZE - sizeof(u_int)]; +#if COHERENCY_UNIT > 4 + uint8_t cr_pad[COHERENCY_UNIT - 4]; +#endif uid_t cr_uid; /* user id */ uid_t cr_euid; /* effective user id */ uid_t cr_svuid; /* saved effective user id */
CVS commit: src/lib/libkvm
Module Name:src Committed By: skrll Date: Tue Nov 10 19:14:11 UTC 2020 Modified Files: src/lib/libkvm: kvm_aarch64.c Log Message: Catch up with aa64 is not mips change To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/lib/libkvm/kvm_aarch64.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: skrll Date: Tue Nov 10 19:14:11 UTC 2020 Modified Files: src/lib/libkvm: kvm_aarch64.c Log Message: Catch up with aa64 is not mips change To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/lib/libkvm/kvm_aarch64.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm_aarch64.c diff -u src/lib/libkvm/kvm_aarch64.c:1.9 src/lib/libkvm/kvm_aarch64.c:1.10 --- src/lib/libkvm/kvm_aarch64.c:1.9 Thu Sep 12 10:18:50 2019 +++ src/lib/libkvm/kvm_aarch64.c Tue Nov 10 19:14:11 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_aarch64.c,v 1.9 2019/09/12 10:18:50 mlelstv Exp $ */ +/* $NetBSD: kvm_aarch64.c,v 1.10 2020/11/10 19:14:11 skrll Exp $ */ /*- * Copyright (c) 2014, 2018 The NetBSD Foundation, Inc. @@ -49,7 +49,7 @@ #include "kvm_private.h" -__RCSID("$NetBSD: kvm_aarch64.c,v 1.9 2019/09/12 10:18:50 mlelstv Exp $"); +__RCSID("$NetBSD: kvm_aarch64.c,v 1.10 2020/11/10 19:14:11 skrll Exp $"); /*ARGSUSED*/ void @@ -73,7 +73,7 @@ _kvm_kvatop(kvm_t *kd, vaddr_t va, paddr return(0); } - if ((va & AARCH64_KSEG_MASK) != AARCH64_KSEG_START) { + if ((va & AARCH64_DIRECTMAP_MASK) != AARCH64_DIRECTMAP_START) { /* * Bogus address (not in KV space): punt. */
CVS commit: src/lib/libkvm
Module Name:src Committed By: christos Date: Sat May 2 14:31:13 UTC 2020 Modified Files: src/lib/libkvm: kvm.c Log Message: Cast off_t to size_t to appease lint: warning: conversion from 'long long' to 'int' may lose accuracy To generate a diff of this commit: cvs rdiff -u -r1.108 -r1.109 src/lib/libkvm/kvm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: christos Date: Sat May 2 14:31:13 UTC 2020 Modified Files: src/lib/libkvm: kvm.c Log Message: Cast off_t to size_t to appease lint: warning: conversion from 'long long' to 'int' may lose accuracy To generate a diff of this commit: cvs rdiff -u -r1.108 -r1.109 src/lib/libkvm/kvm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm.c diff -u src/lib/libkvm/kvm.c:1.108 src/lib/libkvm/kvm.c:1.109 --- src/lib/libkvm/kvm.c:1.108 Tue Apr 28 10:27:41 2020 +++ src/lib/libkvm/kvm.c Sat May 2 10:31:13 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm.c,v 1.108 2020/04/28 14:27:41 christos Exp $ */ +/* $NetBSD: kvm.c,v 1.109 2020/05/02 14:31:13 christos Exp $ */ /*- * Copyright (c) 1989, 1992, 1993 @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = "@(#)kvm.c 8.2 (Berkeley) 2/13/94"; #else -__RCSID("$NetBSD: kvm.c,v 1.108 2020/04/28 14:27:41 christos Exp $"); +__RCSID("$NetBSD: kvm.c,v 1.109 2020/05/02 14:31:13 christos Exp $"); #endif #endif /* LIBC_SCCS and not lint */ @@ -182,7 +182,7 @@ _kvm_pread(kvm_t *kd, int fd, void *buf, errno = EINVAL; return -1; } - memcpy(buf, (char *)kd->dump_mem + off, size); + memcpy(buf, (char *)kd->dump_mem + (size_t)off, size); return size; } @@ -224,7 +224,7 @@ _kvm_pwrite(kvm_t *kd, const void *buf, errno = EINVAL; return -1; } - memcpy(mem + off, buf, size); + memcpy(mem + (size_t)off, buf, size); return size; }
CVS commit: src/lib/libkvm
Module Name:src Committed By: christos Date: Tue Apr 28 14:27:41 UTC 2020 Modified Files: src/lib/libkvm: kvm.c Log Message: Don't treat failure to map the file as fatal. To generate a diff of this commit: cvs rdiff -u -r1.107 -r1.108 src/lib/libkvm/kvm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm.c diff -u src/lib/libkvm/kvm.c:1.107 src/lib/libkvm/kvm.c:1.108 --- src/lib/libkvm/kvm.c:1.107 Mon Apr 27 20:19:23 2020 +++ src/lib/libkvm/kvm.c Tue Apr 28 10:27:41 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm.c,v 1.107 2020/04/28 00:19:23 christos Exp $ */ +/* $NetBSD: kvm.c,v 1.108 2020/04/28 14:27:41 christos Exp $ */ /*- * Copyright (c) 1989, 1992, 1993 @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = "@(#)kvm.c 8.2 (Berkeley) 2/13/94"; #else -__RCSID("$NetBSD: kvm.c,v 1.107 2020/04/28 00:19:23 christos Exp $"); +__RCSID("$NetBSD: kvm.c,v 1.108 2020/04/28 14:27:41 christos Exp $"); #endif #endif /* LIBC_SCCS and not lint */ @@ -399,8 +399,6 @@ _kvm_open(kvm_t *kd, const char *uf, con kd->dump_size = (size_t)st.st_size; kd->dump_mem = mmap(NULL, kd->dump_size, PROT_READ|PROT_WRITE, MAP_FILE|MAP_PRIVATE, kd->pmfd, 0); - if (kd->dump_mem == MAP_FAILED) - goto failed; } return (kd); failed:
CVS commit: src/lib/libkvm
Module Name:src Committed By: christos Date: Tue Apr 28 14:27:41 UTC 2020 Modified Files: src/lib/libkvm: kvm.c Log Message: Don't treat failure to map the file as fatal. To generate a diff of this commit: cvs rdiff -u -r1.107 -r1.108 src/lib/libkvm/kvm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: christos Date: Tue Apr 28 00:19:23 UTC 2020 Modified Files: src/lib/libkvm: kvm.c Log Message: make kvm_pread use the mapped buffer if it is available. To generate a diff of this commit: cvs rdiff -u -r1.106 -r1.107 src/lib/libkvm/kvm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm.c diff -u src/lib/libkvm/kvm.c:1.106 src/lib/libkvm/kvm.c:1.107 --- src/lib/libkvm/kvm.c:1.106 Mon Apr 27 20:12:01 2020 +++ src/lib/libkvm/kvm.c Mon Apr 27 20:19:23 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm.c,v 1.106 2020/04/28 00:12:01 christos Exp $ */ +/* $NetBSD: kvm.c,v 1.107 2020/04/28 00:19:23 christos Exp $ */ /*- * Copyright (c) 1989, 1992, 1993 @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = "@(#)kvm.c 8.2 (Berkeley) 2/13/94"; #else -__RCSID("$NetBSD: kvm.c,v 1.106 2020/04/28 00:12:01 christos Exp $"); +__RCSID("$NetBSD: kvm.c,v 1.107 2020/04/28 00:19:23 christos Exp $"); #endif #endif /* LIBC_SCCS and not lint */ @@ -177,6 +177,15 @@ _kvm_pread(kvm_t *kd, int fd, void *buf, ssize_t rv; off_t doff; + if (kd->dump_mem != MAP_FAILED) { + if (size + off > kd->dump_size) { + errno = EINVAL; + return -1; + } + memcpy(buf, (char *)kd->dump_mem + off, size); + return size; + } + /* If aligned nothing to do. */ if (((off % kd->fdalign) | (size % kd->fdalign)) == 0) { return pread(fd, buf, size, off);
CVS commit: src/lib/libkvm
Module Name:src Committed By: christos Date: Tue Apr 28 00:19:23 UTC 2020 Modified Files: src/lib/libkvm: kvm.c Log Message: make kvm_pread use the mapped buffer if it is available. To generate a diff of this commit: cvs rdiff -u -r1.106 -r1.107 src/lib/libkvm/kvm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: christos Date: Tue Apr 28 00:12:01 UTC 2020 Modified Files: src/lib/libkvm: kvm.c kvm_private.h Log Message: Implement kvm_write() for dump files. We map the file privately so that changes don't get propagated back, and then write to the private buffer. This is not useful yes, but it is simple enough to make pread use the buffer if it is available. To generate a diff of this commit: cvs rdiff -u -r1.105 -r1.106 src/lib/libkvm/kvm.c cvs rdiff -u -r1.20 -r1.21 src/lib/libkvm/kvm_private.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: christos Date: Tue Apr 28 00:12:01 UTC 2020 Modified Files: src/lib/libkvm: kvm.c kvm_private.h Log Message: Implement kvm_write() for dump files. We map the file privately so that changes don't get propagated back, and then write to the private buffer. This is not useful yes, but it is simple enough to make pread use the buffer if it is available. To generate a diff of this commit: cvs rdiff -u -r1.105 -r1.106 src/lib/libkvm/kvm.c cvs rdiff -u -r1.20 -r1.21 src/lib/libkvm/kvm_private.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm.c diff -u src/lib/libkvm/kvm.c:1.105 src/lib/libkvm/kvm.c:1.106 --- src/lib/libkvm/kvm.c:1.105 Sat Mar 7 19:06:42 2020 +++ src/lib/libkvm/kvm.c Mon Apr 27 20:12:01 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm.c,v 1.105 2020/03/08 00:06:42 chs Exp $ */ +/* $NetBSD: kvm.c,v 1.106 2020/04/28 00:12:01 christos Exp $ */ /*- * Copyright (c) 1989, 1992, 1993 @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = "@(#)kvm.c 8.2 (Berkeley) 2/13/94"; #else -__RCSID("$NetBSD: kvm.c,v 1.105 2020/03/08 00:06:42 chs Exp $"); +__RCSID("$NetBSD: kvm.c,v 1.106 2020/04/28 00:12:01 christos Exp $"); #endif #endif /* LIBC_SCCS and not lint */ @@ -48,6 +48,7 @@ __RCSID("$NetBSD: kvm.c,v 1.105 2020/03/ #include #include #include +#include #include #include @@ -205,6 +206,19 @@ _kvm_pread(kvm_t *kd, int fd, void *buf, return size; } +static ssize_t +_kvm_pwrite(kvm_t *kd, const void *buf, size_t size, off_t off) +{ + char *mem = kd->dump_mem; + + if (size + off > kd->dump_size) { + errno = EINVAL; + return -1; + } + memcpy(mem + off, buf, size); + return size; +} + /* * Wrapper around the pread(2) system call; calls _kvm_syserr() for us * in the event of emergency. @@ -256,6 +270,8 @@ _kvm_open(kvm_t *kd, const char *uf, con kd->iobuf = NULL; kd->iobufsz = 0; kd->errbuf[0] = '\0'; + kd->dump_mem = MAP_FAILED; + kd->dump_size = 0; if (flag & KVM_NO_FILES) { kd->alive = KVM_ALIVE_SYSCTL; @@ -371,6 +387,11 @@ _kvm_open(kvm_t *kd, const char *uf, con if (_kvm_initvtop(kd) < 0) goto failed; } + kd->dump_size = (size_t)st.st_size; + kd->dump_mem = mmap(NULL, kd->dump_size, PROT_READ|PROT_WRITE, + MAP_FILE|MAP_PRIVATE, kd->pmfd, 0); + if (kd->dump_mem == MAP_FAILED) + goto failed; } return (kd); failed: @@ -758,6 +779,8 @@ kvm_close(kvm_t *kd) free(kd->argv); if (kd->iobuf != 0) free(kd->iobuf); + if (kd->dump_mem != MAP_FAILED) + munmap(kd->dump_mem, kd->dump_size); free(kd); return (error); @@ -891,6 +914,7 @@ ssize_t kvm_write(kvm_t *kd, u_long kva, const void *buf, size_t len) { int cc; + const void *cp; if (ISKMEM(kd)) { /* @@ -909,9 +933,43 @@ kvm_write(kvm_t *kd, u_long kva, const v "can't use kvm_write"); return (-1); } else { - _kvm_err(kd, kd->program, - "kvm_write not implemented for dead kernels"); - return (-1); + if (kd->dump_mem == MAP_FAILED) { + _kvm_err(kd, kd->program, + "kvm_write not implemented for dead kernels"); + return (-1); + } + cp = buf; + while (len > 0) { + paddr_t pa; + off_t foff; + + cc = _kvm_kvatop(kd, (vaddr_t)kva, ); + if (cc == 0) { +_kvm_err(kd, kd->program, "_kvm_kvatop(%lx)", kva); +return (-1); + } + if (cc > len) +cc = len; + foff = _kvm_pa2off(kd, pa); + errno = 0; + cc = _kvm_pwrite(kd, cp, (size_t)cc, foff); + if (cc < 0) { +_kvm_syserr(kd, kd->program, "kvm_pwrite"); +break; + } + /* + * If kvm_kvatop returns a bogus value or our core + * file is truncated, we might wind up seeking beyond + * the end of the core file in which case the read will + * return 0 (EOF). + */ + if (cc == 0) +break; + cp = (const char *)cp + cc; + kva += cc; + len -= cc; + } + return ((const char *)cp - (const char *)buf); } /* NOTREACHED */ } Index: src/lib/libkvm/kvm_private.h diff -u src/lib/libkvm/kvm_private.h:1.20 src/lib/libkvm/kvm_private.h:1.21 --- src/lib/libkvm/kvm_private.h:1.20 Mon Sep 12 17:11:32 2011 +++ src/lib/libkvm/kvm_private.h Mon Apr 27 20:12:01 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_private.h,v 1.20 2011/09/12 21:11:32 christos Exp $ */ +/* $NetBSD: kvm_private.h,v 1.21 2020/04/28 00:12:01 christos Exp $ */ /*- * Copyright (c) 1992, 1993 @@ -72,6 +72,8 @@ struct __kvm { size_t cpu_dsize; void *cpu_data; off_t dump_off; /* Where the actual dump starts */ + void *dump_mem; + size_t dump_size; /* * Kernel virtual address translation state. This only gets filled
CVS commit: src/lib/libkvm
Module Name:src Committed By: chs Date: Sun Mar 8 00:14:18 UTC 2020 Modified Files: src/lib/libkvm: kvm_x86_64.c Log Message: use a binary search in _kvm_pa2off(). this helps a lot for sparse dumps, which can have millions of memory segments. To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/lib/libkvm/kvm_x86_64.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm_x86_64.c diff -u src/lib/libkvm/kvm_x86_64.c:1.10 src/lib/libkvm/kvm_x86_64.c:1.11 --- src/lib/libkvm/kvm_x86_64.c:1.10 Wed Feb 19 20:21:22 2014 +++ src/lib/libkvm/kvm_x86_64.c Sun Mar 8 00:14:18 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_x86_64.c,v 1.10 2014/02/19 20:21:22 dsl Exp $ */ +/* $NetBSD: kvm_x86_64.c,v 1.11 2020/03/08 00:14:18 chs Exp $ */ /*- * Copyright (c) 1989, 1992, 1993 @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = "@(#)kvm_hp300.c 8.1 (Berkeley) 6/4/93"; #else -__RCSID("$NetBSD: kvm_x86_64.c,v 1.10 2014/02/19 20:21:22 dsl Exp $"); +__RCSID("$NetBSD: kvm_x86_64.c,v 1.11 2020/03/08 00:14:18 chs Exp $"); #endif #endif /* LIBC_SCCS and not lint */ @@ -186,6 +186,36 @@ _kvm_kvatop(kvm_t *kd, vaddr_t va, paddr return (0); } +struct p2o { + paddr_t pa; + psize_t sz; + off_t off; +}; + +static int +cmp_p2o(const void *a, const void *b) +{ + const struct p2o *p1 = a; + const struct p2o *p2 = b; + + /* If one range contains the start of the other, it's a match. */ + if (p1->pa >= p2->pa && p1->pa < p2->pa + p2->sz) { + return 0; + } + if (p2->pa >= p1->pa && p2->pa < p1->pa + p1->sz) { + return 0; + } + + /* Otherwise sort by pa. */ + if (p1->pa < p2->pa) + return -1; + else if (p1->pa > p2->pa) + return 1; + else + return 0; +} + + /* * Translate a physical address to a file-offset in the crash dump. */ @@ -197,19 +227,36 @@ _kvm_pa2off(kvm_t *kd, paddr_t pa) off_t off; int i; + static struct p2o *map; + struct p2o key, *val; + cpu_kh = kd->cpu_data; ramsegs = (void *)((char *)(void *)cpu_kh + ALIGN(sizeof *cpu_kh)); - off = 0; - for (i = 0; i < cpu_kh->nmemsegs; i++) { - if (pa >= ramsegs[i].start && - (pa - ramsegs[i].start) < ramsegs[i].size) { - off += (pa - ramsegs[i].start); - break; + if (map == NULL) { + map = calloc(sizeof *map, cpu_kh->nmemsegs); + off = 0; + for (i = 0; i < cpu_kh->nmemsegs; i++) { + map[i].pa = ramsegs[i].start; + map[i].sz = ramsegs[i].size; + map[i].off = off; + off += ramsegs[i].size; } - off += ramsegs[i].size; +#if 0 + /* The array appears to be sorted already */ + qsort(map, cpu_kh->nmemsegs, sizeof(*map), cmp_p2o); +#endif } + key.pa = pa; + key.sz = 1; + key.off = -1; + val = bsearch(, map, cpu_kh->nmemsegs, sizeof (key), cmp_p2o); + if (val) + off = val->off + pa - val->pa; + else + off = 0; + return (kd->dump_off + off); }
CVS commit: src/lib/libkvm
Module Name:src Committed By: chs Date: Sun Mar 8 00:14:18 UTC 2020 Modified Files: src/lib/libkvm: kvm_x86_64.c Log Message: use a binary search in _kvm_pa2off(). this helps a lot for sparse dumps, which can have millions of memory segments. To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/lib/libkvm/kvm_x86_64.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: chs Date: Sun Mar 8 00:06:42 UTC 2020 Modified Files: src/lib/libkvm: kvm.c Log Message: only do bounce buffering for character devices. To generate a diff of this commit: cvs rdiff -u -r1.104 -r1.105 src/lib/libkvm/kvm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm.c diff -u src/lib/libkvm/kvm.c:1.104 src/lib/libkvm/kvm.c:1.105 --- src/lib/libkvm/kvm.c:1.104 Mon Nov 5 00:43:30 2018 +++ src/lib/libkvm/kvm.c Sun Mar 8 00:06:42 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm.c,v 1.104 2018/11/05 00:43:30 mrg Exp $ */ +/* $NetBSD: kvm.c,v 1.105 2020/03/08 00:06:42 chs Exp $ */ /*- * Copyright (c) 1989, 1992, 1993 @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = "@(#)kvm.c 8.2 (Berkeley) 2/13/94"; #else -__RCSID("$NetBSD: kvm.c,v 1.104 2018/11/05 00:43:30 mrg Exp $"); +__RCSID("$NetBSD: kvm.c,v 1.105 2020/03/08 00:06:42 chs Exp $"); #endif #endif /* LIBC_SCCS and not lint */ @@ -352,7 +352,12 @@ _kvm_open(kvm_t *kd, const char *uf, con /* swap is not configured? not fatal */ } } else { - kd->fdalign = DEV_BSIZE; /* XXX */ + if (S_ISCHR(st.st_mode)) { + kd->fdalign = DEV_BSIZE; + } else { + kd->fdalign = 1; + } + /* * This is a crash dump. * Initialize the virtual address translation machinery.
CVS commit: src/lib/libkvm
Module Name:src Committed By: chs Date: Sun Mar 8 00:06:42 UTC 2020 Modified Files: src/lib/libkvm: kvm.c Log Message: only do bounce buffering for character devices. To generate a diff of this commit: cvs rdiff -u -r1.104 -r1.105 src/lib/libkvm/kvm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: ad Date: Wed Dec 11 20:19:27 UTC 2019 Modified Files: src/lib/libkvm: kvm_proc.c Log Message: Redo previous more conventionally. Requested by kre@. To generate a diff of this commit: cvs rdiff -u -r1.93 -r1.94 src/lib/libkvm/kvm_proc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm_proc.c diff -u src/lib/libkvm/kvm_proc.c:1.93 src/lib/libkvm/kvm_proc.c:1.94 --- src/lib/libkvm/kvm_proc.c:1.93 Tue Dec 10 18:13:07 2019 +++ src/lib/libkvm/kvm_proc.c Wed Dec 11 20:19:27 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_proc.c,v 1.93 2019/12/10 18:13:07 ad Exp $ */ +/* $NetBSD: kvm_proc.c,v 1.94 2019/12/11 20:19:27 ad Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #if 0 static char sccsid[] = "@(#)kvm_proc.c 8.3 (Berkeley) 9/23/93"; #else -__RCSID("$NetBSD: kvm_proc.c,v 1.93 2019/12/10 18:13:07 ad Exp $"); +__RCSID("$NetBSD: kvm_proc.c,v 1.94 2019/12/11 20:19:27 ad Exp $"); #endif #endif /* LIBC_SCCS and not lint */ @@ -260,7 +260,7 @@ _kvm_ureadm(kvm_t *kd, const struct mini return (NULL); if (_kvm_pread(kd, kd->pmfd, kd->swapspc, (size_t)kd->nbpg, - (off_t)pg.phys_addr & -kd->nbpg) != kd->nbpg) + (off_t)pg.phys_addr & ~(kd->nbpg - 1)) != kd->nbpg) return (NULL); } else { if (kd->swfd < 0 ||
CVS commit: src/lib/libkvm
Module Name:src Committed By: ad Date: Wed Dec 11 20:19:27 UTC 2019 Modified Files: src/lib/libkvm: kvm_proc.c Log Message: Redo previous more conventionally. Requested by kre@. To generate a diff of this commit: cvs rdiff -u -r1.93 -r1.94 src/lib/libkvm/kvm_proc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: ad Date: Tue Dec 10 18:13:07 UTC 2019 Modified Files: src/lib/libkvm: kvm_proc.c Log Message: Mask out always zero bits off pg->phys_addr. To generate a diff of this commit: cvs rdiff -u -r1.92 -r1.93 src/lib/libkvm/kvm_proc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: ad Date: Tue Dec 10 18:13:07 UTC 2019 Modified Files: src/lib/libkvm: kvm_proc.c Log Message: Mask out always zero bits off pg->phys_addr. To generate a diff of this commit: cvs rdiff -u -r1.92 -r1.93 src/lib/libkvm/kvm_proc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm_proc.c diff -u src/lib/libkvm/kvm_proc.c:1.92 src/lib/libkvm/kvm_proc.c:1.93 --- src/lib/libkvm/kvm_proc.c:1.92 Mon Apr 4 22:14:38 2016 +++ src/lib/libkvm/kvm_proc.c Tue Dec 10 18:13:07 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_proc.c,v 1.92 2016/04/04 22:14:38 christos Exp $ */ +/* $NetBSD: kvm_proc.c,v 1.93 2019/12/10 18:13:07 ad Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #if 0 static char sccsid[] = "@(#)kvm_proc.c 8.3 (Berkeley) 9/23/93"; #else -__RCSID("$NetBSD: kvm_proc.c,v 1.92 2016/04/04 22:14:38 christos Exp $"); +__RCSID("$NetBSD: kvm_proc.c,v 1.93 2019/12/10 18:13:07 ad Exp $"); #endif #endif /* LIBC_SCCS and not lint */ @@ -260,7 +260,7 @@ _kvm_ureadm(kvm_t *kd, const struct mini return (NULL); if (_kvm_pread(kd, kd->pmfd, kd->swapspc, (size_t)kd->nbpg, - (off_t)pg.phys_addr) != kd->nbpg) + (off_t)pg.phys_addr & -kd->nbpg) != kd->nbpg) return (NULL); } else { if (kd->swfd < 0 ||
CVS commit: src/lib/libkvm
Module Name:src Committed By: mlelstv Date: Thu Sep 12 10:18:50 UTC 2019 Modified Files: src/lib/libkvm: kvm_aarch64.c Log Message: Need register defines that were moved to armreg.h To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/lib/libkvm/kvm_aarch64.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm_aarch64.c diff -u src/lib/libkvm/kvm_aarch64.c:1.8 src/lib/libkvm/kvm_aarch64.c:1.9 --- src/lib/libkvm/kvm_aarch64.c:1.8 Wed Dec 19 11:02:21 2018 +++ src/lib/libkvm/kvm_aarch64.c Thu Sep 12 10:18:50 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_aarch64.c,v 1.8 2018/12/19 11:02:21 mrg Exp $ */ +/* $NetBSD: kvm_aarch64.c,v 1.9 2019/09/12 10:18:50 mlelstv Exp $ */ /*- * Copyright (c) 2014, 2018 The NetBSD Foundation, Inc. @@ -39,6 +39,7 @@ #include #include +#include #include #include @@ -48,7 +49,7 @@ #include "kvm_private.h" -__RCSID("$NetBSD: kvm_aarch64.c,v 1.8 2018/12/19 11:02:21 mrg Exp $"); +__RCSID("$NetBSD: kvm_aarch64.c,v 1.9 2019/09/12 10:18:50 mlelstv Exp $"); /*ARGSUSED*/ void
CVS commit: src/lib/libkvm
Module Name:src Committed By: mlelstv Date: Thu Sep 12 10:18:50 UTC 2019 Modified Files: src/lib/libkvm: kvm_aarch64.c Log Message: Need register defines that were moved to armreg.h To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/lib/libkvm/kvm_aarch64.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: mrg Date: Wed Dec 19 11:02:21 UTC 2018 Modified Files: src/lib/libkvm: kvm_aarch64.c Log Message: be consistent about uint64_t and bit masks. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/lib/libkvm/kvm_aarch64.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: mrg Date: Wed Dec 19 11:02:21 UTC 2018 Modified Files: src/lib/libkvm: kvm_aarch64.c Log Message: be consistent about uint64_t and bit masks. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/lib/libkvm/kvm_aarch64.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm_aarch64.c diff -u src/lib/libkvm/kvm_aarch64.c:1.7 src/lib/libkvm/kvm_aarch64.c:1.8 --- src/lib/libkvm/kvm_aarch64.c:1.7 Wed Dec 19 11:00:09 2018 +++ src/lib/libkvm/kvm_aarch64.c Wed Dec 19 11:02:21 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_aarch64.c,v 1.7 2018/12/19 11:00:09 mrg Exp $ */ +/* $NetBSD: kvm_aarch64.c,v 1.8 2018/12/19 11:02:21 mrg Exp $ */ /*- * Copyright (c) 2014, 2018 The NetBSD Foundation, Inc. @@ -48,7 +48,7 @@ #include "kvm_private.h" -__RCSID("$NetBSD: kvm_aarch64.c,v 1.7 2018/12/19 11:00:09 mrg Exp $"); +__RCSID("$NetBSD: kvm_aarch64.c,v 1.8 2018/12/19 11:02:21 mrg Exp $"); /*ARGSUSED*/ void @@ -146,7 +146,7 @@ lose: if ((pte & LX_TYPE) == LX_TYPE_BLK) { const size_t blk_size = 1 << addr_shift; - const paddr_t blk_mask = __BITS(addr_shift - 1, 0); + const uint64_t blk_mask = __BITS(addr_shift - 1, 0); *pa = (pte & page_addr & ~blk_mask) | (va & blk_mask); return blk_size - (va & blk_mask);
CVS commit: src/lib/libkvm
Module Name:src Committed By: mrg Date: Wed Dec 19 11:00:09 UTC 2018 Modified Files: src/lib/libkvm: kvm_aarch64.c Log Message: use uint64_t for idx_mask. fixes lookups for some PAs. from skrll. bump copyright. we updated this a lot of this in 2018. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/lib/libkvm/kvm_aarch64.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm_aarch64.c diff -u src/lib/libkvm/kvm_aarch64.c:1.6 src/lib/libkvm/kvm_aarch64.c:1.7 --- src/lib/libkvm/kvm_aarch64.c:1.6 Tue Dec 18 16:25:47 2018 +++ src/lib/libkvm/kvm_aarch64.c Wed Dec 19 11:00:09 2018 @@ -1,7 +1,7 @@ -/* $NetBSD: kvm_aarch64.c,v 1.6 2018/12/18 16:25:47 skrll Exp $ */ +/* $NetBSD: kvm_aarch64.c,v 1.7 2018/12/19 11:00:09 mrg Exp $ */ /*- - * Copyright (c) 2014 The NetBSD Foundation, Inc. + * Copyright (c) 2014, 2018 The NetBSD Foundation, Inc. * All rights reserved. * * This code is derived from software contributed to The NetBSD Foundation @@ -48,7 +48,7 @@ #include "kvm_private.h" -__RCSID("$NetBSD: kvm_aarch64.c,v 1.6 2018/12/18 16:25:47 skrll Exp $"); +__RCSID("$NetBSD: kvm_aarch64.c,v 1.7 2018/12/19 11:00:09 mrg Exp $"); /*ARGSUSED*/ void @@ -127,7 +127,8 @@ lose: pt_entry_t pte; /* now index into the pte table */ - const u_int idx_mask = __BITS(addr_shift + pte_shift - 1, addr_shift); + const uint64_t idx_mask = __BITS(addr_shift + pte_shift - 1, + addr_shift); pte_addr += 8 * __SHIFTOUT(va, idx_mask); /* Find and read the PTE. */
CVS commit: src/lib/libkvm
Module Name:src Committed By: mrg Date: Wed Dec 19 11:00:09 UTC 2018 Modified Files: src/lib/libkvm: kvm_aarch64.c Log Message: use uint64_t for idx_mask. fixes lookups for some PAs. from skrll. bump copyright. we updated this a lot of this in 2018. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/lib/libkvm/kvm_aarch64.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: skrll Date: Tue Dec 18 16:25:47 UTC 2018 Modified Files: src/lib/libkvm: kvm_aarch64.c Log Message: Fix _kvm_kvatop so that it now works. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/lib/libkvm/kvm_aarch64.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: skrll Date: Tue Dec 18 16:25:47 UTC 2018 Modified Files: src/lib/libkvm: kvm_aarch64.c Log Message: Fix _kvm_kvatop so that it now works. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/lib/libkvm/kvm_aarch64.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm_aarch64.c diff -u src/lib/libkvm/kvm_aarch64.c:1.5 src/lib/libkvm/kvm_aarch64.c:1.6 --- src/lib/libkvm/kvm_aarch64.c:1.5 Fri Nov 9 04:06:40 2018 +++ src/lib/libkvm/kvm_aarch64.c Tue Dec 18 16:25:47 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_aarch64.c,v 1.5 2018/11/09 04:06:40 mrg Exp $ */ +/* $NetBSD: kvm_aarch64.c,v 1.6 2018/12/18 16:25:47 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -48,7 +48,7 @@ #include "kvm_private.h" -__RCSID("$NetBSD: kvm_aarch64.c,v 1.5 2018/11/09 04:06:40 mrg Exp $"); +__RCSID("$NetBSD: kvm_aarch64.c,v 1.6 2018/12/18 16:25:47 skrll Exp $"); /*ARGSUSED*/ void @@ -83,27 +83,24 @@ lose: } const cpu_kcore_hdr_t * const cpu_kh = kd->cpu_data; - const uint64_t tg1 = cpu_kh->kh_tcr1 & TCR_TG1; + const uint64_t tg1 = cpu_kh->kh_tcr1 & TCR_TG1; const u_int t1siz = __SHIFTOUT(cpu_kh->kh_tcr1, TCR_T1SZ); + const u_int inputsz = 64 - t1siz; /* * Real kernel virtual address: do the translation. */ - u_int va_bits; u_int page_shift; switch (tg1) { case TCR_TG1_4KB: - va_bits = t1siz + 36; page_shift = 12; break; case TCR_TG1_16KB: - va_bits = 48; page_shift = 14; break; case TCR_TG1_64KB: - va_bits = t1siz + 38; page_shift = 16; break; default: @@ -111,28 +108,27 @@ lose: } const size_t page_size = 1 << page_shift; - const uint64_t page_mask = (page_size - 1); - const uint64_t page_addr = __BITS(47, 0) & ~page_mask; - const uint64_t pte_mask = page_mask >> 3; + const uint64_t page_mask = __BITS(page_shift - 1, 0); + const uint64_t page_addr = __BITS(47, page_shift); const u_int pte_shift = page_shift - 3; - /* how many level of page tables do we have? */ - u_int level = (48 + page_shift - 1) / page_shift; + /* how many levels of page tables do we have? */ + u_int levels = howmany(inputsz - page_shift, pte_shift); /* restrict va to the valid VA bits */ - va &= (1LL << va_bits) - 1; + va &= __BITS(inputsz - 1, 0); - u_int addr_shift = page_shift + (level - 1) * pte_shift; + u_int addr_shift = page_shift + (levels - 1) * pte_shift; /* clear out the unused low bits of the table address */ - paddr_t pte_addr = (cpu_kh->kh_ttbr1 & TTBR_BADDR); - pte_addr &= ~((8L << (va_bits - addr_shift)) - 1); + paddr_t pte_addr = cpu_kh->kh_ttbr1 & TTBR_BADDR; for (;;) { pt_entry_t pte; /* now index into the pte table */ - pte_addr += 8 * ((va >> addr_shift) & pte_mask); + const u_int idx_mask = __BITS(addr_shift + pte_shift - 1, addr_shift); + pte_addr += 8 * __SHIFTOUT(va, idx_mask); /* Find and read the PTE. */ if (_kvm_pread(kd, kd->pmfd, , sizeof(pte), @@ -148,15 +144,15 @@ lose: } if ((pte & LX_TYPE) == LX_TYPE_BLK) { - const paddr_t blk_mask = ((1L << addr_shift) - 1); + const size_t blk_size = 1 << addr_shift; + const paddr_t blk_mask = __BITS(addr_shift - 1, 0); *pa = (pte & page_addr & ~blk_mask) | (va & blk_mask); - return 0; + return blk_size - (va & blk_mask); } - - if (level == page_shift) { + if (--levels == 0) { *pa = (pte & page_addr) | (va & page_mask); - return 0; + return page_size - (va & page_mask); } /*
CVS commit: src/lib/libkvm
Module Name:src Committed By: sevan Date: Tue Dec 11 23:02:19 UTC 2018 Modified Files: src/lib/libkvm: kvm_getloadavg.3 Log Message: Reword post mortem description. It tries to get the tree averages if it can. To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 src/lib/libkvm/kvm_getloadavg.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm_getloadavg.3 diff -u src/lib/libkvm/kvm_getloadavg.3:1.12 src/lib/libkvm/kvm_getloadavg.3:1.13 --- src/lib/libkvm/kvm_getloadavg.3:1.12 Tue Dec 11 02:29:11 2018 +++ src/lib/libkvm/kvm_getloadavg.3 Tue Dec 11 23:02:19 2018 @@ -1,4 +1,4 @@ -.\" $NetBSD: kvm_getloadavg.3,v 1.12 2018/12/11 02:29:11 sevan Exp $ +.\" $NetBSD: kvm_getloadavg.3,v 1.13 2018/12/11 23:02:19 sevan Exp $ .\" .\" Copyright (c) 1992, 1993 .\" The Regents of the University of California. All rights reserved. @@ -58,8 +58,8 @@ On a live system, the load average is ob .Xr getloadavg 3 . If performing post mortem on a kernel core file, .Nm -obtains the system load average at the time of death from the core file -directly. +is able to extract the system load averages at the time of death from the core +file directly. .Sh RETURN VALUES If the load average was unobtainable, \-1 is returned; otherwise, the number of samples actually retrieved is returned.
CVS commit: src/lib/libkvm
Module Name:src Committed By: sevan Date: Tue Dec 11 23:02:19 UTC 2018 Modified Files: src/lib/libkvm: kvm_getloadavg.3 Log Message: Reword post mortem description. It tries to get the tree averages if it can. To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 src/lib/libkvm/kvm_getloadavg.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: sevan Date: Tue Dec 11 02:29:11 UTC 2018 Modified Files: src/lib/libkvm: kvm_getloadavg.3 Log Message: Clarify the difference to getloadavg(3). To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/lib/libkvm/kvm_getloadavg.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: sevan Date: Tue Dec 11 02:29:11 UTC 2018 Modified Files: src/lib/libkvm: kvm_getloadavg.3 Log Message: Clarify the difference to getloadavg(3). To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/lib/libkvm/kvm_getloadavg.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm_getloadavg.3 diff -u src/lib/libkvm/kvm_getloadavg.3:1.11 src/lib/libkvm/kvm_getloadavg.3:1.12 --- src/lib/libkvm/kvm_getloadavg.3:1.11 Tue Mar 10 23:49:07 2009 +++ src/lib/libkvm/kvm_getloadavg.3 Tue Dec 11 02:29:11 2018 @@ -1,4 +1,4 @@ -.\" $NetBSD: kvm_getloadavg.3,v 1.11 2009/03/10 23:49:07 joerg Exp $ +.\" $NetBSD: kvm_getloadavg.3,v 1.12 2018/12/11 02:29:11 sevan Exp $ .\" .\" Copyright (c) 1992, 1993 .\" The Regents of the University of California. All rights reserved. @@ -29,12 +29,12 @@ .\" .\" @(#)kvm_getloadavg.3 8.1 (Berkeley) 6/4/93 .\" -.Dd August 18, 2002 +.Dd December 11, 2018 .Dt KVM_GETLOADAVG 3 .Os .Sh NAME .Nm kvm_getloadavg -.Nd get system load averages +.Nd get system load averages, from live or dead kernels .Sh LIBRARY .Lb libkvm .Sh SYNOPSIS @@ -46,15 +46,20 @@ The .Fn kvm_getloadavg function returns the number of processes in the system run queue -of the kernel indicated by -.Fa kd , -averaged over various periods of time. +of the kernel or core file, indicated by +.Fa kd . Up to .Fa nelem samples are retrieved and assigned to successive elements of .Fa loadavg Ns Bq . The system imposes a maximum of 3 samples, representing averages over the last 1, 5, and 15 minutes, respectively. +On a live system, the load average is obtained by calling +.Xr getloadavg 3 . +If performing post mortem on a kernel core file, +.Nm +obtains the system load average at the time of death from the core file +directly. .Sh RETURN VALUES If the load average was unobtainable, \-1 is returned; otherwise, the number of samples actually retrieved is returned.
CVS commit: src/lib/libkvm
Module Name:src Committed By: mrg Date: Fri Nov 9 04:06:40 UTC 2018 Modified Files: src/lib/libkvm: kvm_aarch64.c Log Message: tg1 is a 64 bit value, store it in a 64 bit variable. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/lib/libkvm/kvm_aarch64.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm_aarch64.c diff -u src/lib/libkvm/kvm_aarch64.c:1.4 src/lib/libkvm/kvm_aarch64.c:1.5 --- src/lib/libkvm/kvm_aarch64.c:1.4 Thu Nov 1 05:37:11 2018 +++ src/lib/libkvm/kvm_aarch64.c Fri Nov 9 04:06:40 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_aarch64.c,v 1.4 2018/11/01 05:37:11 mrg Exp $ */ +/* $NetBSD: kvm_aarch64.c,v 1.5 2018/11/09 04:06:40 mrg Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -48,7 +48,7 @@ #include "kvm_private.h" -__RCSID("$NetBSD: kvm_aarch64.c,v 1.4 2018/11/01 05:37:11 mrg Exp $"); +__RCSID("$NetBSD: kvm_aarch64.c,v 1.5 2018/11/09 04:06:40 mrg Exp $"); /*ARGSUSED*/ void @@ -83,7 +83,7 @@ lose: } const cpu_kcore_hdr_t * const cpu_kh = kd->cpu_data; - const u_int tg1 = cpu_kh->kh_tcr1 & TCR_TG1; + const uint64_t tg1 = cpu_kh->kh_tcr1 & TCR_TG1; const u_int t1siz = __SHIFTOUT(cpu_kh->kh_tcr1, TCR_T1SZ); /*
CVS commit: src/lib/libkvm
Module Name:src Committed By: mrg Date: Fri Nov 9 04:06:40 UTC 2018 Modified Files: src/lib/libkvm: kvm_aarch64.c Log Message: tg1 is a 64 bit value, store it in a 64 bit variable. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/lib/libkvm/kvm_aarch64.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: mrg Date: Mon Nov 5 00:43:30 UTC 2018 Modified Files: src/lib/libkvm: kvm.c Log Message: initialise the kvm errbuf so that if an error occurs, but the internal _kvm_*err() functions aren't called, stack garbage is not reported as an error string. call _kvm_err() if _kvm_kvatop() fails. now the above is not triggered anymore :-) To generate a diff of this commit: cvs rdiff -u -r1.103 -r1.104 src/lib/libkvm/kvm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm.c diff -u src/lib/libkvm/kvm.c:1.103 src/lib/libkvm/kvm.c:1.104 --- src/lib/libkvm/kvm.c:1.103 Wed Feb 7 14:03:18 2018 +++ src/lib/libkvm/kvm.c Mon Nov 5 00:43:30 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm.c,v 1.103 2018/02/07 14:03:18 maxv Exp $ */ +/* $NetBSD: kvm.c,v 1.104 2018/11/05 00:43:30 mrg Exp $ */ /*- * Copyright (c) 1989, 1992, 1993 @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = "@(#)kvm.c 8.2 (Berkeley) 2/13/94"; #else -__RCSID("$NetBSD: kvm.c,v 1.103 2018/02/07 14:03:18 maxv Exp $"); +__RCSID("$NetBSD: kvm.c,v 1.104 2018/11/05 00:43:30 mrg Exp $"); #endif #endif /* LIBC_SCCS and not lint */ @@ -255,6 +255,7 @@ _kvm_open(kvm_t *kd, const char *uf, con kd->fdalign = 1; kd->iobuf = NULL; kd->iobufsz = 0; + kd->errbuf[0] = '\0'; if (flag & KVM_NO_FILES) { kd->alive = KVM_ALIVE_SYSCTL; @@ -851,8 +852,10 @@ kvm_read(kvm_t *kd, u_long kva, void *bu off_t foff; cc = _kvm_kvatop(kd, (vaddr_t)kva, ); - if (cc == 0) + if (cc == 0) { +_kvm_err(kd, kd->program, "_kvm_kvatop(%lx)", kva); return (-1); + } if (cc > len) cc = len; foff = _kvm_pa2off(kd, pa);
CVS commit: src/lib/libkvm
Module Name:src Committed By: mrg Date: Mon Nov 5 00:43:30 UTC 2018 Modified Files: src/lib/libkvm: kvm.c Log Message: initialise the kvm errbuf so that if an error occurs, but the internal _kvm_*err() functions aren't called, stack garbage is not reported as an error string. call _kvm_err() if _kvm_kvatop() fails. now the above is not triggered anymore :-) To generate a diff of this commit: cvs rdiff -u -r1.103 -r1.104 src/lib/libkvm/kvm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: mrg Date: Thu Nov 1 05:37:12 UTC 2018 Modified Files: src/lib/libkvm: kvm_aarch64.c Log Message: compare matching TG1 bits. aarch64 crash dump kvtop now less broken, but still not stable. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/lib/libkvm/kvm_aarch64.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm_aarch64.c diff -u src/lib/libkvm/kvm_aarch64.c:1.3 src/lib/libkvm/kvm_aarch64.c:1.4 --- src/lib/libkvm/kvm_aarch64.c:1.3 Sun Apr 1 04:35:02 2018 +++ src/lib/libkvm/kvm_aarch64.c Thu Nov 1 05:37:11 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_aarch64.c,v 1.3 2018/04/01 04:35:02 ryo Exp $ */ +/* $NetBSD: kvm_aarch64.c,v 1.4 2018/11/01 05:37:11 mrg Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -48,7 +48,7 @@ #include "kvm_private.h" -__RCSID("$NetBSD: kvm_aarch64.c,v 1.3 2018/04/01 04:35:02 ryo Exp $"); +__RCSID("$NetBSD: kvm_aarch64.c,v 1.4 2018/11/01 05:37:11 mrg Exp $"); /*ARGSUSED*/ void @@ -83,7 +83,7 @@ lose: } const cpu_kcore_hdr_t * const cpu_kh = kd->cpu_data; - const u_int tg1 =__SHIFTOUT(cpu_kh->kh_tcr1, TCR_TG1); + const u_int tg1 = cpu_kh->kh_tcr1 & TCR_TG1; const u_int t1siz = __SHIFTOUT(cpu_kh->kh_tcr1, TCR_T1SZ); /*
CVS commit: src/lib/libkvm
Module Name:src Committed By: mrg Date: Thu Nov 1 05:37:12 UTC 2018 Modified Files: src/lib/libkvm: kvm_aarch64.c Log Message: compare matching TG1 bits. aarch64 crash dump kvtop now less broken, but still not stable. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/lib/libkvm/kvm_aarch64.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
re: CVS commit: src/lib/libkvm
matthew green writes: > "Maxime Villard" writes: > > Module Name:src > > Committed By: maxv > > Date: Wed Feb 7 14:03:18 UTC 2018 > > > > Modified Files: > > src/lib/libkvm: kvm.c > > > > Log Message: > > Keep /dev/ksyms open in _kvm_open(). This way /dev/ksyms can be put into > > $g_kmem without breaking the tools that need kmem+ksyms. > > > > Discussed on tech-kern@ three weeks ago. The original issue was reported > > by maya@, the patch was written by Tom Ivar Helbekkmo, ok christos@. > > hmmm, it just occurs to me that this is not safe against me > re-opening /proc/mypid/N to get another fd on /dev/ksyms as > a normal user. > > i wonder if this pattern exists elsewhere... ah, it shouldn't be a problem -- the user/group/mode are taken from the original file, so whatever /dev/ksyms is. .mrg.
re: CVS commit: src/lib/libkvm
"Maxime Villard" writes: > Module Name: src > Committed By: maxv > Date: Wed Feb 7 14:03:18 UTC 2018 > > Modified Files: > src/lib/libkvm: kvm.c > > Log Message: > Keep /dev/ksyms open in _kvm_open(). This way /dev/ksyms can be put into > $g_kmem without breaking the tools that need kmem+ksyms. > > Discussed on tech-kern@ three weeks ago. The original issue was reported > by maya@, the patch was written by Tom Ivar Helbekkmo, ok christos@. hmmm, it just occurs to me that this is not safe against me re-opening /proc/mypid/N to get another fd on /dev/ksyms as a normal user. i wonder if this pattern exists elsewhere... .mrg.
CVS commit: src/lib/libkvm
Module Name:src Committed By: maxv Date: Wed Feb 7 14:03:18 UTC 2018 Modified Files: src/lib/libkvm: kvm.c Log Message: Keep /dev/ksyms open in _kvm_open(). This way /dev/ksyms can be put into $g_kmem without breaking the tools that need kmem+ksyms. Discussed on tech-kern@ three weeks ago. The original issue was reported by maya@, the patch was written by Tom Ivar Helbekkmo, ok christos@. To generate a diff of this commit: cvs rdiff -u -r1.102 -r1.103 src/lib/libkvm/kvm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: maxv Date: Wed Feb 7 14:03:18 UTC 2018 Modified Files: src/lib/libkvm: kvm.c Log Message: Keep /dev/ksyms open in _kvm_open(). This way /dev/ksyms can be put into $g_kmem without breaking the tools that need kmem+ksyms. Discussed on tech-kern@ three weeks ago. The original issue was reported by maya@, the patch was written by Tom Ivar Helbekkmo, ok christos@. To generate a diff of this commit: cvs rdiff -u -r1.102 -r1.103 src/lib/libkvm/kvm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm.c diff -u src/lib/libkvm/kvm.c:1.102 src/lib/libkvm/kvm.c:1.103 --- src/lib/libkvm/kvm.c:1.102 Tue Mar 29 06:51:40 2016 +++ src/lib/libkvm/kvm.c Wed Feb 7 14:03:18 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm.c,v 1.102 2016/03/29 06:51:40 mrg Exp $ */ +/* $NetBSD: kvm.c,v 1.103 2018/02/07 14:03:18 maxv Exp $ */ /*- * Copyright (c) 1989, 1992, 1993 @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = "@(#)kvm.c 8.2 (Berkeley) 2/13/94"; #else -__RCSID("$NetBSD: kvm.c,v 1.102 2016/03/29 06:51:40 mrg Exp $"); +__RCSID("$NetBSD: kvm.c,v 1.103 2018/02/07 14:03:18 maxv Exp $"); #endif #endif /* LIBC_SCCS and not lint */ @@ -322,15 +322,6 @@ _kvm_open(kvm_t *kd, const char *uf, con strlcpy(kd->kernelname, uf, sizeof(kd->kernelname)); } else { strlcpy(kd->kernelname, _PATH_KSYMS, sizeof(kd->kernelname)); - /* - * We're here because /dev/ksyms was opened - * successfully. However, we don't want to keep it - * open, so we close it now. Later, we will open - * it again, since it will be the only case where - * kd->nlfd is negative. - */ - close(kd->nlfd); - kd->nlfd = -1; } if ((kd->pmfd = open(mf, flag | O_CLOEXEC, 0)) < 0) { @@ -769,33 +760,16 @@ kvm_close(kvm_t *kd) int kvm_nlist(kvm_t *kd, struct nlist *nl) { - int rv, nlfd; - - /* - * kd->nlfd might be negative when we get here, and in that - * case that means that we're using /dev/ksyms. - * So open it again, just for the time we retrieve the list. - */ - if (kd->nlfd < 0) { - nlfd = open(_PATH_KSYMS, O_RDONLY | O_CLOEXEC, 0); - if (nlfd < 0) { - _kvm_err(kd, 0, "failed to open %s", _PATH_KSYMS); - return (nlfd); - } - } else - nlfd = kd->nlfd; + int rv; /* * Call the nlist(3) routines to retrieve the given namelist. */ - rv = __fdnlist(nlfd, nl); + rv = __fdnlist(kd->nlfd, nl); if (rv == -1) _kvm_err(kd, 0, "bad namelist"); - if (kd->nlfd < 0) - close(nlfd); - return (rv); }
CVS commit: src/lib/libkvm
Module Name:src Committed By: kamil Date: Tue Jan 9 21:17:46 UTC 2018 Modified Files: src/lib/libkvm: kvm_getprocs.3 Log Message: Correct the signature of kvm_getproc2(3) in the man-page. The elemsize argument is of type "size_t", not "int". Sponsored by To generate a diff of this commit: cvs rdiff -u -r1.16 -r1.17 src/lib/libkvm/kvm_getprocs.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm_getprocs.3 diff -u src/lib/libkvm/kvm_getprocs.3:1.16 src/lib/libkvm/kvm_getprocs.3:1.17 --- src/lib/libkvm/kvm_getprocs.3:1.16 Sun Oct 22 14:25:33 2017 +++ src/lib/libkvm/kvm_getprocs.3 Tue Jan 9 21:17:45 2018 @@ -1,4 +1,4 @@ -.\" $NetBSD: kvm_getprocs.3,v 1.16 2017/10/22 14:25:33 abhinav Exp $ +.\" $NetBSD: kvm_getprocs.3,v 1.17 2018/01/09 21:17:45 kamil Exp $ .\" .\" Copyright (c) 1992, 1993 .\" The Regents of the University of California. All rights reserved. @@ -33,7 +33,7 @@ .\" .\" @(#)kvm_getprocs.3 8.1 (Berkeley) 6/4/93 .\" -.Dd February 10, 2004 +.Dd January 9, 2018 .Dt KVM_GETPROCS 3 .Os .Sh NAME @@ -58,7 +58,7 @@ .Ft char ** .Fn kvm_getenvv "kvm_t *kd" "const struct kinfo_proc *p" "int nchr" .Ft struct kinfo_proc2 * -.Fn kvm_getproc2 "kvm_t *kd" "int op" "int arg" "int elemsize" "int *cnt" +.Fn kvm_getproc2 "kvm_t *kd" "int op" "int arg" "size_t elemsize" "int *cnt" .Ft char ** .Fn kvm_getargv2 "kvm_t *kd" "const struct kinfo_proc2 *p" "int nchr" .Ft char **
CVS commit: src/lib/libkvm
Module Name:src Committed By: kamil Date: Tue Jan 9 21:17:46 UTC 2018 Modified Files: src/lib/libkvm: kvm_getprocs.3 Log Message: Correct the signature of kvm_getproc2(3) in the man-page. The elemsize argument is of type "size_t", not "int". Sponsored by To generate a diff of this commit: cvs rdiff -u -r1.16 -r1.17 src/lib/libkvm/kvm_getprocs.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: kamil Date: Tue Jan 9 21:13:59 UTC 2018 Modified Files: src/lib/libkvm: kvm_getlwps.3 Log Message: Correct the signature of kvm_getlwps(3) in the man-page. The elemsize argument is of type "size_t", not "int *". Sponsored by To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/lib/libkvm/kvm_getlwps.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm_getlwps.3 diff -u src/lib/libkvm/kvm_getlwps.3:1.7 src/lib/libkvm/kvm_getlwps.3:1.8 --- src/lib/libkvm/kvm_getlwps.3:1.7 Sat Jan 23 00:43:43 2016 +++ src/lib/libkvm/kvm_getlwps.3 Tue Jan 9 21:13:59 2018 @@ -1,4 +1,4 @@ -.\" $NetBSD: kvm_getlwps.3,v 1.7 2016/01/23 00:43:43 dholland Exp $ +.\" $NetBSD: kvm_getlwps.3,v 1.8 2018/01/09 21:13:59 kamil Exp $ .\" .\"Copyright (c) 2002 The NetBSD Foundation, Inc. .\"All rights reserved. @@ -27,7 +27,7 @@ .\"ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\"POSSIBILITY OF SUCH DAMAGE. .\" -.Dd February 10, 2004 +.Dd January 9, 2018 .Dt KVM_GETLWPS 3 .Os .Sh NAME @@ -41,7 +41,7 @@ .In sys/sysctl.h .\" .Fa kvm_t *kd .Ft struct kinfo_lwp * -.Fn kvm_getlwps "kvm_t *kd" "int pid" "unsigned long procaddr" "int *elemsize" "int *cnt" +.Fn kvm_getlwps "kvm_t *kd" "int pid" "unsigned long procaddr" "size_t elemsize" "int *cnt" .Sh DESCRIPTION .Fn kvm_getlwps returns the set of LWPs belonging to the process specified by
CVS commit: src/lib/libkvm
Module Name:src Committed By: kamil Date: Tue Jan 9 21:13:59 UTC 2018 Modified Files: src/lib/libkvm: kvm_getlwps.3 Log Message: Correct the signature of kvm_getlwps(3) in the man-page. The elemsize argument is of type "size_t", not "int *". Sponsored by To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/lib/libkvm/kvm_getlwps.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: abhinav Date: Sun Oct 22 14:25:33 UTC 2017 Modified Files: src/lib/libkvm: kvm_getprocs.3 Log Message: Add rest of the functions from the SYNOPSIS to the NAME section To generate a diff of this commit: cvs rdiff -u -r1.15 -r1.16 src/lib/libkvm/kvm_getprocs.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm_getprocs.3 diff -u src/lib/libkvm/kvm_getprocs.3:1.15 src/lib/libkvm/kvm_getprocs.3:1.16 --- src/lib/libkvm/kvm_getprocs.3:1.15 Tue Mar 10 23:49:07 2009 +++ src/lib/libkvm/kvm_getprocs.3 Sun Oct 22 14:25:33 2017 @@ -1,4 +1,4 @@ -.\" $NetBSD: kvm_getprocs.3,v 1.15 2009/03/10 23:49:07 joerg Exp $ +.\" $NetBSD: kvm_getprocs.3,v 1.16 2017/10/22 14:25:33 abhinav Exp $ .\" .\" Copyright (c) 1992, 1993 .\" The Regents of the University of California. All rights reserved. @@ -39,7 +39,10 @@ .Sh NAME .Nm kvm_getprocs , .Nm kvm_getargv , -.Nm kvm_getenvv +.Nm kvm_getenvv , +.Nm kvm_getproc2 , +.Nm kvm_getargv2 , +.Nm kvm_getenvv2 .Nd access user process state .Sh LIBRARY .Lb libkvm
CVS commit: src/lib/libkvm
Module Name:src Committed By: abhinav Date: Sun Oct 22 14:25:33 UTC 2017 Modified Files: src/lib/libkvm: kvm_getprocs.3 Log Message: Add rest of the functions from the SYNOPSIS to the NAME section To generate a diff of this commit: cvs rdiff -u -r1.15 -r1.16 src/lib/libkvm/kvm_getprocs.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: christos Date: Mon Apr 4 22:14:38 UTC 2016 Modified Files: src/lib/libkvm: kvm_proc.c Log Message: some ports need To generate a diff of this commit: cvs rdiff -u -r1.91 -r1.92 src/lib/libkvm/kvm_proc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm_proc.c diff -u src/lib/libkvm/kvm_proc.c:1.91 src/lib/libkvm/kvm_proc.c:1.92 --- src/lib/libkvm/kvm_proc.c:1.91 Mon Apr 4 17:08:44 2016 +++ src/lib/libkvm/kvm_proc.c Mon Apr 4 18:14:38 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_proc.c,v 1.91 2016/04/04 21:08:44 christos Exp $ */ +/* $NetBSD: kvm_proc.c,v 1.92 2016/04/04 22:14:38 christos Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #if 0 static char sccsid[] = "@(#)kvm_proc.c 8.3 (Berkeley) 9/23/93"; #else -__RCSID("$NetBSD: kvm_proc.c,v 1.91 2016/04/04 21:08:44 christos Exp $"); +__RCSID("$NetBSD: kvm_proc.c,v 1.92 2016/04/04 22:14:38 christos Exp $"); #endif #endif /* LIBC_SCCS and not lint */ @@ -80,6 +80,7 @@ __RCSID("$NetBSD: kvm_proc.c,v 1.91 2016 #include #include +#include #include #include #include
CVS commit: src/lib/libkvm
Module Name:src Committed By: christos Date: Mon Apr 4 22:14:38 UTC 2016 Modified Files: src/lib/libkvm: kvm_proc.c Log Message: some ports need To generate a diff of this commit: cvs rdiff -u -r1.91 -r1.92 src/lib/libkvm/kvm_proc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: christos Date: Mon Apr 4 21:08:44 UTC 2016 Modified Files: src/lib/libkvm: kvm_proc.c Log Message: catch up with p_xstat split. To generate a diff of this commit: cvs rdiff -u -r1.90 -r1.91 src/lib/libkvm/kvm_proc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm_proc.c diff -u src/lib/libkvm/kvm_proc.c:1.90 src/lib/libkvm/kvm_proc.c:1.91 --- src/lib/libkvm/kvm_proc.c:1.90 Wed Feb 19 15:21:22 2014 +++ src/lib/libkvm/kvm_proc.c Mon Apr 4 17:08:44 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_proc.c,v 1.90 2014/02/19 20:21:22 dsl Exp $ */ +/* $NetBSD: kvm_proc.c,v 1.91 2016/04/04 21:08:44 christos Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #if 0 static char sccsid[] = "@(#)kvm_proc.c 8.3 (Berkeley) 9/23/93"; #else -__RCSID("$NetBSD: kvm_proc.c,v 1.90 2014/02/19 20:21:22 dsl Exp $"); +__RCSID("$NetBSD: kvm_proc.c,v 1.91 2016/04/04 21:08:44 christos Exp $"); #endif #endif /* LIBC_SCCS and not lint */ @@ -638,7 +638,7 @@ again: kp2p->p_usrpri = kl[0].l_priority; kp2p->p_nice = kp->kp_proc.p_nice; - kp2p->p_xstat = kp->kp_proc.p_xstat; + kp2p->p_xstat = P_WAITSTATUS(>kp_proc); kp2p->p_acflag = kp->kp_proc.p_acflag; /*CONSTCOND*/
CVS commit: src/lib/libkvm
Module Name:src Committed By: christos Date: Mon Apr 4 21:08:44 UTC 2016 Modified Files: src/lib/libkvm: kvm_proc.c Log Message: catch up with p_xstat split. To generate a diff of this commit: cvs rdiff -u -r1.90 -r1.91 src/lib/libkvm/kvm_proc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: mrg Date: Tue Mar 29 06:51:40 UTC 2016 Modified Files: src/lib/libkvm: kvm.c Log Message: distinguish between partial and failed read, so that "read 0x bytes failed" is not output.. To generate a diff of this commit: cvs rdiff -u -r1.101 -r1.102 src/lib/libkvm/kvm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm.c diff -u src/lib/libkvm/kvm.c:1.101 src/lib/libkvm/kvm.c:1.102 --- src/lib/libkvm/kvm.c:1.101 Wed Feb 19 20:21:22 2014 +++ src/lib/libkvm/kvm.c Tue Mar 29 06:51:40 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm.c,v 1.101 2014/02/19 20:21:22 dsl Exp $ */ +/* $NetBSD: kvm.c,v 1.102 2016/03/29 06:51:40 mrg Exp $ */ /*- * Copyright (c) 1989, 1992, 1993 @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = "@(#)kvm.c 8.2 (Berkeley) 2/13/94"; #else -__RCSID("$NetBSD: kvm.c,v 1.101 2014/02/19 20:21:22 dsl Exp $"); +__RCSID("$NetBSD: kvm.c,v 1.102 2016/03/29 06:51:40 mrg Exp $"); #endif #endif /* LIBC_SCCS and not lint */ @@ -515,9 +515,14 @@ kvm_dump_mkheader(kvm_t *kd, off_t dump_ */ sz = Pread(kd, kd->pmfd, _hdr, sizeof(cpu_hdr), dump_off); if (sz != sizeof(cpu_hdr)) { - _kvm_err(kd, 0, "read %zx bytes at offset %"PRIx64 - " for cpu_hdr instead of requested %zu", - sz, dump_off, sizeof(cpu_hdr)); + if (sz == -1) + _kvm_err(kd, 0, "read %zx bytes at offset %"PRIx64 + " for cpu_hdr failed: %s", sizeof(cpu_hdr), + dump_off, strerror(errno)); + else + _kvm_err(kd, 0, "read %zx bytes at offset %"PRIx64 + " for cpu_hdr instead of requested %zu", + sz, dump_off, sizeof(cpu_hdr)); return (-1); } if ((CORE_GETMAGIC(cpu_hdr) != KCORE_MAGIC)
CVS commit: src/lib/libkvm
Module Name:src Committed By: mrg Date: Tue Mar 29 06:51:40 UTC 2016 Modified Files: src/lib/libkvm: kvm.c Log Message: distinguish between partial and failed read, so that "read 0x bytes failed" is not output.. To generate a diff of this commit: cvs rdiff -u -r1.101 -r1.102 src/lib/libkvm/kvm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: christos Date: Sun Jan 24 16:07:48 UTC 2016 Modified Files: src/lib/libkvm: Makefile Log Message: mips needs _KMEMUSER for label_t in pcb.h To generate a diff of this commit: cvs rdiff -u -r1.50 -r1.51 src/lib/libkvm/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/Makefile diff -u src/lib/libkvm/Makefile:1.50 src/lib/libkvm/Makefile:1.51 --- src/lib/libkvm/Makefile:1.50 Sun Aug 10 19:39:08 2014 +++ src/lib/libkvm/Makefile Sun Jan 24 11:07:48 2016 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.50 2014/08/10 23:39:08 matt Exp $ +# $NetBSD: Makefile,v 1.51 2016/01/24 16:07:48 christos Exp $ # from: @(#)Makefile 8.1 (Berkeley) 6/4/93 WARNS= 3 @@ -70,5 +70,9 @@ CLEANFILES+= machine sparc CPPFLAGS+= -I. .endif # } +.if (${MACHINE_ARCH} == "mips") +CPPFLAGS+= -D_KMEMUSER +.endif + .include
CVS commit: src/lib/libkvm
Module Name:src Committed By: christos Date: Sun Jan 24 16:07:48 UTC 2016 Modified Files: src/lib/libkvm: Makefile Log Message: mips needs _KMEMUSER for label_t in pcb.h To generate a diff of this commit: cvs rdiff -u -r1.50 -r1.51 src/lib/libkvm/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: nakayama Date: Sat Oct 31 02:40:44 UTC 2015 Modified Files: src/lib/libkvm: kvm_sparc.c Log Message: Use PRIxPADDR instead of type casting. To generate a diff of this commit: cvs rdiff -u -r1.34 -r1.35 src/lib/libkvm/kvm_sparc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: nakayama Date: Sat Oct 31 02:40:44 UTC 2015 Modified Files: src/lib/libkvm: kvm_sparc.c Log Message: Use PRIxPADDR instead of type casting. To generate a diff of this commit: cvs rdiff -u -r1.34 -r1.35 src/lib/libkvm/kvm_sparc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm_sparc.c diff -u src/lib/libkvm/kvm_sparc.c:1.34 src/lib/libkvm/kvm_sparc.c:1.35 --- src/lib/libkvm/kvm_sparc.c:1.34 Wed Oct 7 11:56:41 2015 +++ src/lib/libkvm/kvm_sparc.c Sat Oct 31 02:40:44 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_sparc.c,v 1.34 2015/10/07 11:56:41 martin Exp $ */ +/* $NetBSD: kvm_sparc.c,v 1.35 2015/10/31 02:40:44 nakayama Exp $ */ /*- * Copyright (c) 1992, 1993 @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = "@(#)kvm_sparc.c 8.1 (Berkeley) 6/4/93"; #else -__RCSID("$NetBSD: kvm_sparc.c,v 1.34 2015/10/07 11:56:41 martin Exp $"); +__RCSID("$NetBSD: kvm_sparc.c,v 1.35 2015/10/31 02:40:44 nakayama Exp $"); #endif #endif /* LIBC_SCCS and not lint */ @@ -363,7 +363,7 @@ _kvm_pa2off(kvm_t *kd, paddr_t pa) off += mp->size; } if (nmem < 0) { - _kvm_err(kd, 0, "invalid address (%lx)", (unsigned long)pa); + _kvm_err(kd, 0, "invalid address (%#"PRIxPADDR")", pa); return (-1); }
CVS commit: src/lib/libkvm
Module Name:src Committed By: martin Date: Wed Oct 7 11:56:41 UTC 2015 Modified Files: src/lib/libkvm: kvm_sparc.c Log Message: Fix the -m32 compat build for sparc64 after recent sparc/include/types.h changes. XXX I suspect this variant has not been tested in real life. To generate a diff of this commit: cvs rdiff -u -r1.33 -r1.34 src/lib/libkvm/kvm_sparc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm_sparc.c diff -u src/lib/libkvm/kvm_sparc.c:1.33 src/lib/libkvm/kvm_sparc.c:1.34 --- src/lib/libkvm/kvm_sparc.c:1.33 Wed Feb 19 20:21:22 2014 +++ src/lib/libkvm/kvm_sparc.c Wed Oct 7 11:56:41 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_sparc.c,v 1.33 2014/02/19 20:21:22 dsl Exp $ */ +/* $NetBSD: kvm_sparc.c,v 1.34 2015/10/07 11:56:41 martin Exp $ */ /*- * Copyright (c) 1992, 1993 @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = "@(#)kvm_sparc.c 8.1 (Berkeley) 6/4/93"; #else -__RCSID("$NetBSD: kvm_sparc.c,v 1.33 2014/02/19 20:21:22 dsl Exp $"); +__RCSID("$NetBSD: kvm_sparc.c,v 1.34 2015/10/07 11:56:41 martin Exp $"); #endif #endif /* LIBC_SCCS and not lint */ @@ -325,8 +325,8 @@ _kvm_kvatop4u(kvm_t *kd, vaddr_t va, pad * segmap[cpup->nsegmap]; */ segmaps = (int64_t **)((long)kd->cpu_data + cpup->segmapoffset); - ptes = (int64_t *)(int)_kvm_pa2off(kd, - (paddr_t)segmaps[sparc64_va_to_seg(va)]); + ptes = (int64_t *)(intptr_t)_kvm_pa2off(kd, + (paddr_t)(intptr_t)segmaps[sparc64_va_to_seg(va)]); pte = ptes[sparc64_va_to_pte(va)]; if ((pte & SPARC64_TLB_V) != 0) return ((pte & SPARC64_TLB_PA_MASK) | (va & (kd->nbpg - 1))); @@ -363,7 +363,7 @@ _kvm_pa2off(kvm_t *kd, paddr_t pa) off += mp->size; } if (nmem < 0) { - _kvm_err(kd, 0, "invalid address (%lx)", pa); + _kvm_err(kd, 0, "invalid address (%lx)", (unsigned long)pa); return (-1); }
CVS commit: src/lib/libkvm
Module Name:src Committed By: martin Date: Wed Oct 7 11:56:41 UTC 2015 Modified Files: src/lib/libkvm: kvm_sparc.c Log Message: Fix the -m32 compat build for sparc64 after recent sparc/include/types.h changes. XXX I suspect this variant has not been tested in real life. To generate a diff of this commit: cvs rdiff -u -r1.33 -r1.34 src/lib/libkvm/kvm_sparc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: martin Date: Fri Apr 17 13:16:01 UTC 2015 Added Files: src/lib/libkvm: kvm_ia64.c Log Message: Dummy support for ia64 To generate a diff of this commit: cvs rdiff -u -r0 -r1.1 src/lib/libkvm/kvm_ia64.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: martin Date: Fri Apr 17 13:16:01 UTC 2015 Added Files: src/lib/libkvm: kvm_ia64.c Log Message: Dummy support for ia64 To generate a diff of this commit: cvs rdiff -u -r0 -r1.1 src/lib/libkvm/kvm_ia64.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Added files:
CVS commit: src/lib/libkvm
Module Name:src Committed By: matt Date: Sat Aug 23 02:25:23 UTC 2014 Modified Files: src/lib/libkvm: kvm_powerpc64.c Log Message: #if 0 some code not in use yet To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/lib/libkvm/kvm_powerpc64.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm_powerpc64.c diff -u src/lib/libkvm/kvm_powerpc64.c:1.5 src/lib/libkvm/kvm_powerpc64.c:1.6 --- src/lib/libkvm/kvm_powerpc64.c:1.5 Mon Jan 27 21:00:01 2014 +++ src/lib/libkvm/kvm_powerpc64.c Sat Aug 23 02:25:23 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_powerpc64.c,v 1.5 2014/01/27 21:00:01 matt Exp $ */ +/* $NetBSD: kvm_powerpc64.c,v 1.6 2014/08/23 02:25:23 matt Exp $ */ /* * Copyright (c) 2005 Wasabi Systems, Inc. @@ -90,7 +90,7 @@ #include powerpc/oea/bat.h #include powerpc/oea/pte.h -__RCSID($NetBSD: kvm_powerpc64.c,v 1.5 2014/01/27 21:00:01 matt Exp $); +__RCSID($NetBSD: kvm_powerpc64.c,v 1.6 2014/08/23 02:25:23 matt Exp $); void _kvm_freevtop(kvm_t *kd) @@ -117,17 +117,16 @@ _kvm_initvtop(kvm_t *kd) int _kvm_kvatop(kvm_t *kd, vaddr_t va, paddr_t *pa) { - cpu_kcore_hdr_t *cpu_kh; - uint32_t pvr; if (ISALIVE(kd)) { _kvm_err(kd, 0, vatop called in live kernel!); return 0; } - cpu_kh = kd-cpu_data; - - pvr = (cpu_kh-pvr 16); +#if 0 + cpu_kcore_hdr_t *cpu_kh = kd-cpu_data; + uint32_t pvr = (cpu_kh-pvr 16); +#endif /* No hit -- no translation */
CVS commit: src/lib/libkvm
Module Name:src Committed By: matt Date: Sat Aug 23 02:25:23 UTC 2014 Modified Files: src/lib/libkvm: kvm_powerpc64.c Log Message: #if 0 some code not in use yet To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/lib/libkvm/kvm_powerpc64.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: matt Date: Tue Mar 4 06:38:08 UTC 2014 Modified Files: src/lib/libkvm: kvm_m68k_cmn.c Log Message: #include m68k/m68k.h To generate a diff of this commit: cvs rdiff -u -r1.17 -r1.18 src/lib/libkvm/kvm_m68k_cmn.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm_m68k_cmn.c diff -u src/lib/libkvm/kvm_m68k_cmn.c:1.17 src/lib/libkvm/kvm_m68k_cmn.c:1.18 --- src/lib/libkvm/kvm_m68k_cmn.c:1.17 Tue Sep 13 19:11:09 2011 +++ src/lib/libkvm/kvm_m68k_cmn.c Tue Mar 4 06:38:08 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_m68k_cmn.c,v 1.17 2011/09/13 19:11:09 christos Exp $ */ +/* $NetBSD: kvm_m68k_cmn.c,v 1.18 2014/03/04 06:38:08 matt Exp $ */ /*- * Copyright (c) 1989, 1992, 1993 @@ -74,7 +74,7 @@ #if 0 static char sccsid[] = @(#)kvm_hp300.c 8.1 (Berkeley) 6/4/93; #else -__RCSID($NetBSD: kvm_m68k_cmn.c,v 1.17 2011/09/13 19:11:09 christos Exp $); +__RCSID($NetBSD: kvm_m68k_cmn.c,v 1.18 2014/03/04 06:38:08 matt Exp $); #endif #endif /* LIBC_SCCS and not lint */ @@ -97,6 +97,7 @@ __RCSID($NetBSD: kvm_m68k_cmn.c,v 1.17 #include m68k/cpu.h #include m68k/kcore.h +#include m68k/m68k.h #include kvm_private.h #include kvm_m68k.h
CVS commit: src/lib/libkvm
Module Name:src Committed By: matt Date: Tue Mar 4 06:38:08 UTC 2014 Modified Files: src/lib/libkvm: kvm_m68k_cmn.c Log Message: #include m68k/m68k.h To generate a diff of this commit: cvs rdiff -u -r1.17 -r1.18 src/lib/libkvm/kvm_m68k_cmn.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: dsl Date: Wed Feb 19 20:21:22 UTC 2014 Modified Files: src/lib/libkvm: kvm.c kvm_alpha.c kvm_file.c kvm_hppa.c kvm_i386.c kvm_i386pae.c kvm_mips.c kvm_proc.c kvm_sh3.c kvm_sparc.c kvm_sparc64.c kvm_vax.c kvm_x86_64.c Log Message: Remove the #include sys/user.h from all of libkvm. sys/user.h is a stub that just #includes sys/pcb.h. There are no 'struct pcb' anywhere in here, so I'm extremely doubtful any of the builds will fail. OTOH it might be relying on a header that pcb.h includes. In any case i386 and amd64 build. To generate a diff of this commit: cvs rdiff -u -r1.100 -r1.101 src/lib/libkvm/kvm.c cvs rdiff -u -r1.26 -r1.27 src/lib/libkvm/kvm_alpha.c cvs rdiff -u -r1.28 -r1.29 src/lib/libkvm/kvm_file.c cvs rdiff -u -r1.6 -r1.7 src/lib/libkvm/kvm_hppa.c cvs rdiff -u -r1.29 -r1.30 src/lib/libkvm/kvm_i386.c cvs rdiff -u -r1.1 -r1.2 src/lib/libkvm/kvm_i386pae.c cvs rdiff -u -r1.21 -r1.22 src/lib/libkvm/kvm_mips.c cvs rdiff -u -r1.89 -r1.90 src/lib/libkvm/kvm_proc.c cvs rdiff -u -r1.8 -r1.9 src/lib/libkvm/kvm_sh3.c cvs rdiff -u -r1.32 -r1.33 src/lib/libkvm/kvm_sparc.c cvs rdiff -u -r1.15 -r1.16 src/lib/libkvm/kvm_sparc64.c cvs rdiff -u -r1.19 -r1.20 src/lib/libkvm/kvm_vax.c cvs rdiff -u -r1.9 -r1.10 src/lib/libkvm/kvm_x86_64.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm.c diff -u src/lib/libkvm/kvm.c:1.100 src/lib/libkvm/kvm.c:1.101 --- src/lib/libkvm/kvm.c:1.100 Sun Aug 26 23:09:42 2012 +++ src/lib/libkvm/kvm.c Wed Feb 19 20:21:22 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm.c,v 1.100 2012/08/26 23:09:42 martin Exp $ */ +/* $NetBSD: kvm.c,v 1.101 2014/02/19 20:21:22 dsl Exp $ */ /*- * Copyright (c) 1989, 1992, 1993 @@ -38,12 +38,11 @@ #if 0 static char sccsid[] = @(#)kvm.c 8.2 (Berkeley) 2/13/94; #else -__RCSID($NetBSD: kvm.c,v 1.100 2012/08/26 23:09:42 martin Exp $); +__RCSID($NetBSD: kvm.c,v 1.101 2014/02/19 20:21:22 dsl Exp $); #endif #endif /* LIBC_SCCS and not lint */ #include sys/param.h -#include sys/user.h #include sys/lwp.h #include sys/proc.h #include sys/ioctl.h Index: src/lib/libkvm/kvm_alpha.c diff -u src/lib/libkvm/kvm_alpha.c:1.26 src/lib/libkvm/kvm_alpha.c:1.27 --- src/lib/libkvm/kvm_alpha.c:1.26 Mon Jan 27 21:00:01 2014 +++ src/lib/libkvm/kvm_alpha.c Wed Feb 19 20:21:22 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_alpha.c,v 1.26 2014/01/27 21:00:01 matt Exp $ */ +/* $NetBSD: kvm_alpha.c,v 1.27 2014/02/19 20:21:22 dsl Exp $ */ /* * Copyright (c) 1994, 1995 Carnegie-Mellon University. @@ -30,7 +30,6 @@ #define __KVM_ALPHA_PRIVATE /* see machine/pte.h */ #include sys/param.h -#include sys/user.h #include sys/proc.h #include sys/stat.h #include sys/kcore.h @@ -51,7 +50,7 @@ #include kvm_private.h -__RCSID($NetBSD: kvm_alpha.c,v 1.26 2014/01/27 21:00:01 matt Exp $); +__RCSID($NetBSD: kvm_alpha.c,v 1.27 2014/02/19 20:21:22 dsl Exp $); /*ARGSUSED*/ void Index: src/lib/libkvm/kvm_file.c diff -u src/lib/libkvm/kvm_file.c:1.28 src/lib/libkvm/kvm_file.c:1.29 --- src/lib/libkvm/kvm_file.c:1.28 Sun Sep 26 22:28:05 2010 +++ src/lib/libkvm/kvm_file.c Wed Feb 19 20:21:22 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_file.c,v 1.28 2010/09/26 22:28:05 jym Exp $ */ +/* $NetBSD: kvm_file.c,v 1.29 2014/02/19 20:21:22 dsl Exp $ */ /*- * Copyright (c) 1989, 1992, 1993 @@ -34,7 +34,7 @@ #if 0 static char sccsid[] = @(#)kvm_file.c 8.1 (Berkeley) 6/4/93; #else -__RCSID($NetBSD: kvm_file.c,v 1.28 2010/09/26 22:28:05 jym Exp $); +__RCSID($NetBSD: kvm_file.c,v 1.29 2014/02/19 20:21:22 dsl Exp $); #endif #endif /* LIBC_SCCS and not lint */ @@ -49,7 +49,6 @@ __RCSID($NetBSD: kvm_file.c,v 1.28 2010 #include sys/types.h #undef _KERNEL #include sys/param.h -#include sys/user.h #include sys/lwp.h #include sys/proc.h #include sys/exec.h Index: src/lib/libkvm/kvm_hppa.c diff -u src/lib/libkvm/kvm_hppa.c:1.6 src/lib/libkvm/kvm_hppa.c:1.7 --- src/lib/libkvm/kvm_hppa.c:1.6 Mon Sep 20 23:23:16 2010 +++ src/lib/libkvm/kvm_hppa.c Wed Feb 19 20:21:22 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_hppa.c,v 1.6 2010/09/20 23:23:16 jym Exp $ */ +/* $NetBSD: kvm_hppa.c,v 1.7 2014/02/19 20:21:22 dsl Exp $ */ /*- * Copyright (c) 1989, 1992, 1993 @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = @(#)kvm_hp300.c 8.1 (Berkeley) 6/4/93; #else -__RCSID($NetBSD: kvm_hppa.c,v 1.6 2010/09/20 23:23:16 jym Exp $); +__RCSID($NetBSD: kvm_hppa.c,v 1.7 2014/02/19 20:21:22 dsl Exp $); #endif #endif /* LIBC_SCCS and not lint */ @@ -49,7 +49,6 @@ __RCSID($NetBSD: kvm_hppa.c,v 1.6 2010/ */ #include sys/param.h -#include sys/user.h #include sys/proc.h #include sys/stat.h #include sys/kcore.h Index: src/lib/libkvm/kvm_i386.c diff -u src/lib/libkvm/kvm_i386.c:1.29 src/lib/libkvm/kvm_i386.c:1.30 --- src/lib/libkvm/kvm_i386.c:1.29 Tue Oct 5 23:48:16 2010 +++ src/lib/libkvm/kvm_i386.c Wed Feb 19 20:21:22 2014 @@ -1,4 +1,4 @@
CVS commit: src/lib/libkvm
Module Name:src Committed By: dsl Date: Wed Feb 19 20:21:22 UTC 2014 Modified Files: src/lib/libkvm: kvm.c kvm_alpha.c kvm_file.c kvm_hppa.c kvm_i386.c kvm_i386pae.c kvm_mips.c kvm_proc.c kvm_sh3.c kvm_sparc.c kvm_sparc64.c kvm_vax.c kvm_x86_64.c Log Message: Remove the #include sys/user.h from all of libkvm. sys/user.h is a stub that just #includes sys/pcb.h. There are no 'struct pcb' anywhere in here, so I'm extremely doubtful any of the builds will fail. OTOH it might be relying on a header that pcb.h includes. In any case i386 and amd64 build. To generate a diff of this commit: cvs rdiff -u -r1.100 -r1.101 src/lib/libkvm/kvm.c cvs rdiff -u -r1.26 -r1.27 src/lib/libkvm/kvm_alpha.c cvs rdiff -u -r1.28 -r1.29 src/lib/libkvm/kvm_file.c cvs rdiff -u -r1.6 -r1.7 src/lib/libkvm/kvm_hppa.c cvs rdiff -u -r1.29 -r1.30 src/lib/libkvm/kvm_i386.c cvs rdiff -u -r1.1 -r1.2 src/lib/libkvm/kvm_i386pae.c cvs rdiff -u -r1.21 -r1.22 src/lib/libkvm/kvm_mips.c cvs rdiff -u -r1.89 -r1.90 src/lib/libkvm/kvm_proc.c cvs rdiff -u -r1.8 -r1.9 src/lib/libkvm/kvm_sh3.c cvs rdiff -u -r1.32 -r1.33 src/lib/libkvm/kvm_sparc.c cvs rdiff -u -r1.15 -r1.16 src/lib/libkvm/kvm_sparc64.c cvs rdiff -u -r1.19 -r1.20 src/lib/libkvm/kvm_vax.c cvs rdiff -u -r1.9 -r1.10 src/lib/libkvm/kvm_x86_64.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: matt Date: Mon Jan 27 21:00:01 UTC 2014 Modified Files: src/lib/libkvm: kvm_alpha.c kvm_m68k.c kvm_powerpc.c kvm_powerpc64.c kvm_vax.c Log Message: Add missing __RCSID($NetBSD$); To generate a diff of this commit: cvs rdiff -u -r1.25 -r1.26 src/lib/libkvm/kvm_alpha.c cvs rdiff -u -r1.18 -r1.19 src/lib/libkvm/kvm_m68k.c src/lib/libkvm/kvm_vax.c cvs rdiff -u -r1.12 -r1.13 src/lib/libkvm/kvm_powerpc.c cvs rdiff -u -r1.4 -r1.5 src/lib/libkvm/kvm_powerpc64.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm_alpha.c diff -u src/lib/libkvm/kvm_alpha.c:1.25 src/lib/libkvm/kvm_alpha.c:1.26 --- src/lib/libkvm/kvm_alpha.c:1.25 Mon Sep 20 23:23:16 2010 +++ src/lib/libkvm/kvm_alpha.c Mon Jan 27 21:00:01 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_alpha.c,v 1.25 2010/09/20 23:23:16 jym Exp $ */ +/* $NetBSD: kvm_alpha.c,v 1.26 2014/01/27 21:00:01 matt Exp $ */ /* * Copyright (c) 1994, 1995 Carnegie-Mellon University. @@ -51,6 +51,8 @@ #include kvm_private.h +__RCSID($NetBSD: kvm_alpha.c,v 1.26 2014/01/27 21:00:01 matt Exp $); + /*ARGSUSED*/ void _kvm_freevtop(kvm_t *kd) Index: src/lib/libkvm/kvm_m68k.c diff -u src/lib/libkvm/kvm_m68k.c:1.18 src/lib/libkvm/kvm_m68k.c:1.19 --- src/lib/libkvm/kvm_m68k.c:1.18 Mon Sep 20 23:23:16 2010 +++ src/lib/libkvm/kvm_m68k.c Mon Jan 27 21:00:01 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_m68k.c,v 1.18 2010/09/20 23:23:16 jym Exp $ */ +/* $NetBSD: kvm_m68k.c,v 1.19 2014/01/27 21:00:01 matt Exp $ */ /*- * Copyright (c) 1997 The NetBSD Foundation, Inc. @@ -59,6 +59,8 @@ #include kvm_private.h #include kvm_m68k.h +__RCSID($NetBSD: kvm_m68k.c,v 1.19 2014/01/27 21:00:01 matt Exp $); + struct name_ops { const char *name; struct kvm_ops *ops; Index: src/lib/libkvm/kvm_vax.c diff -u src/lib/libkvm/kvm_vax.c:1.18 src/lib/libkvm/kvm_vax.c:1.19 --- src/lib/libkvm/kvm_vax.c:1.18 Mon Sep 20 23:23:16 2010 +++ src/lib/libkvm/kvm_vax.c Mon Jan 27 21:00:01 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_vax.c,v 1.18 2010/09/20 23:23:16 jym Exp $ */ +/* $NetBSD: kvm_vax.c,v 1.19 2014/01/27 21:00:01 matt Exp $ */ /*- * Copyright (c) 1992, 1993 @@ -60,6 +60,7 @@ #include kvm_private.h +__RCSID($NetBSD: kvm_vax.c,v 1.19 2014/01/27 21:00:01 matt Exp $); struct vmstate { u_long end; Index: src/lib/libkvm/kvm_powerpc.c diff -u src/lib/libkvm/kvm_powerpc.c:1.12 src/lib/libkvm/kvm_powerpc.c:1.13 --- src/lib/libkvm/kvm_powerpc.c:1.12 Mon Sep 20 23:23:16 2010 +++ src/lib/libkvm/kvm_powerpc.c Mon Jan 27 21:00:01 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_powerpc.c,v 1.12 2010/09/20 23:23:16 jym Exp $ */ +/* $NetBSD: kvm_powerpc.c,v 1.13 2014/01/27 21:00:01 matt Exp $ */ /* * Copyright (c) 2005 Wasabi Systems, Inc. @@ -91,6 +91,8 @@ #include powerpc/oea/bat.h #include powerpc/oea/pte.h +__RCSID($NetBSD: kvm_powerpc.c,v 1.13 2014/01/27 21:00:01 matt Exp $); + static int _kvm_match_601bat(kvm_t *, vaddr_t, paddr_t *, int *); static int _kvm_match_bat(kvm_t *, vaddr_t, paddr_t *, int *); static int _kvm_match_sr(kvm_t *, vaddr_t, paddr_t *, int *); Index: src/lib/libkvm/kvm_powerpc64.c diff -u src/lib/libkvm/kvm_powerpc64.c:1.4 src/lib/libkvm/kvm_powerpc64.c:1.5 --- src/lib/libkvm/kvm_powerpc64.c:1.4 Mon Sep 20 23:23:16 2010 +++ src/lib/libkvm/kvm_powerpc64.c Mon Jan 27 21:00:01 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_powerpc64.c,v 1.4 2010/09/20 23:23:16 jym Exp $ */ +/* $NetBSD: kvm_powerpc64.c,v 1.5 2014/01/27 21:00:01 matt Exp $ */ /* * Copyright (c) 2005 Wasabi Systems, Inc. @@ -90,6 +90,8 @@ #include powerpc/oea/bat.h #include powerpc/oea/pte.h +__RCSID($NetBSD: kvm_powerpc64.c,v 1.5 2014/01/27 21:00:01 matt Exp $); + void _kvm_freevtop(kvm_t *kd) {
CVS commit: src/lib/libkvm
Module Name:src Committed By: matt Date: Mon Jan 27 21:00:01 UTC 2014 Modified Files: src/lib/libkvm: kvm_alpha.c kvm_m68k.c kvm_powerpc.c kvm_powerpc64.c kvm_vax.c Log Message: Add missing __RCSID($NetBSD$); To generate a diff of this commit: cvs rdiff -u -r1.25 -r1.26 src/lib/libkvm/kvm_alpha.c cvs rdiff -u -r1.18 -r1.19 src/lib/libkvm/kvm_m68k.c src/lib/libkvm/kvm_vax.c cvs rdiff -u -r1.12 -r1.13 src/lib/libkvm/kvm_powerpc.c cvs rdiff -u -r1.4 -r1.5 src/lib/libkvm/kvm_powerpc64.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: martin Date: Sun Aug 26 23:09:42 UTC 2012 Modified Files: src/lib/libkvm: kvm.c Log Message: Do not fail kvm_dump_mkheader without setting an error message To generate a diff of this commit: cvs rdiff -u -r1.99 -r1.100 src/lib/libkvm/kvm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm.c diff -u src/lib/libkvm/kvm.c:1.99 src/lib/libkvm/kvm.c:1.100 --- src/lib/libkvm/kvm.c:1.99 Sat Oct 15 21:08:53 2011 +++ src/lib/libkvm/kvm.c Sun Aug 26 23:09:42 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm.c,v 1.99 2011/10/15 21:08:53 christos Exp $ */ +/* $NetBSD: kvm.c,v 1.100 2012/08/26 23:09:42 martin Exp $ */ /*- * Copyright (c) 1989, 1992, 1993 @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = @(#)kvm.c 8.2 (Berkeley) 2/13/94; #else -__RCSID($NetBSD: kvm.c,v 1.99 2011/10/15 21:08:53 christos Exp $); +__RCSID($NetBSD: kvm.c,v 1.100 2012/08/26 23:09:42 martin Exp $); #endif #endif /* LIBC_SCCS and not lint */ @@ -515,8 +515,12 @@ kvm_dump_mkheader(kvm_t *kd, off_t dump_ * Validate new format crash dump */ sz = Pread(kd, kd-pmfd, cpu_hdr, sizeof(cpu_hdr), dump_off); - if (sz != sizeof(cpu_hdr)) + if (sz != sizeof(cpu_hdr)) { + _kvm_err(kd, 0, read %zx bytes at offset %PRIx64 + for cpu_hdr instead of requested %zu, + sz, dump_off, sizeof(cpu_hdr)); return (-1); + } if ((CORE_GETMAGIC(cpu_hdr) != KCORE_MAGIC) || (CORE_GETMID(cpu_hdr) != MID_MACHINE)) { _kvm_err(kd, 0, invalid magic in cpu_hdr); @@ -529,27 +533,37 @@ kvm_dump_mkheader(kvm_t *kd, off_t dump_ */ kd-cpu_dsize = cpu_hdr.c_size; kd-cpu_data = _kvm_malloc(kd, kd-cpu_dsize); - if (kd-cpu_data == NULL) + if (kd-cpu_data == NULL) { + _kvm_err(kd, kd-program, no cpu_data); goto fail; + } sz = Pread(kd, kd-pmfd, kd-cpu_data, cpu_hdr.c_size, dump_off + hdr_size); - if (sz != cpu_hdr.c_size) + if (sz != cpu_hdr.c_size) { + _kvm_err(kd, kd-program, size %zu != cpu_hdr.csize %PRIu32, + sz, cpu_hdr.c_size); goto fail; + } hdr_size += kd-cpu_dsize; /* * Leave phys mem pointer at beginning of memory data */ kd-dump_off = dump_off + hdr_size; - if (Lseek(kd, kd-pmfd, kd-dump_off, SEEK_SET) == -1) + if (Lseek(kd, kd-pmfd, kd-dump_off, SEEK_SET) == -1) { + _kvm_err(kd, kd-program, failed to seek to % PRId64, + (int64_t)kd-dump_off); goto fail; + } /* * Create a kcore_hdr. */ kd-kcore_hdr = _kvm_malloc(kd, sizeof(kcore_hdr_t)); - if (kd-kcore_hdr == NULL) + if (kd-kcore_hdr == NULL) { + _kvm_err(kd, kd-program, failed to allocate header); goto fail; + } kd-kcore_hdr-c_hdrsize= ALIGN(sizeof(kcore_hdr_t)); kd-kcore_hdr-c_seghdrsize = ALIGN(sizeof(kcore_seg_t));
CVS commit: src/lib/libkvm
Module Name:src Committed By: martin Date: Sun Aug 26 23:09:42 UTC 2012 Modified Files: src/lib/libkvm: kvm.c Log Message: Do not fail kvm_dump_mkheader without setting an error message To generate a diff of this commit: cvs rdiff -u -r1.99 -r1.100 src/lib/libkvm/kvm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: chs Date: Tue Jan 10 16:01:16 UTC 2012 Modified Files: src/lib/libkvm: kvm_x86_64.c Log Message: fix handling of large pages. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/lib/libkvm/kvm_x86_64.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm_x86_64.c diff -u src/lib/libkvm/kvm_x86_64.c:1.8 src/lib/libkvm/kvm_x86_64.c:1.9 --- src/lib/libkvm/kvm_x86_64.c:1.8 Mon Sep 20 23:23:16 2010 +++ src/lib/libkvm/kvm_x86_64.c Tue Jan 10 16:01:16 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_x86_64.c,v 1.8 2010/09/20 23:23:16 jym Exp $ */ +/* $NetBSD: kvm_x86_64.c,v 1.9 2012/01/10 16:01:16 chs Exp $ */ /*- * Copyright (c) 1989, 1992, 1993 @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = @(#)kvm_hp300.c 8.1 (Berkeley) 6/4/93; #else -__RCSID($NetBSD: kvm_x86_64.c,v 1.8 2010/09/20 23:23:16 jym Exp $); +__RCSID($NetBSD: kvm_x86_64.c,v 1.9 2012/01/10 16:01:16 chs Exp $); #endif #endif /* LIBC_SCCS and not lint */ @@ -105,7 +105,6 @@ _kvm_kvatop(kvm_t *kd, vaddr_t va, paddr } cpu_kh = kd-cpu_data; - page_off = va PGOFSET; /* * Find and read all entries to get to the pa. @@ -138,6 +137,11 @@ _kvm_kvatop(kvm_t *kd, vaddr_t va, paddr _kvm_err(kd, 0, invalid translation (invalid level 3 PDE)); goto lose; } + if (pde PG_PS) { + page_off = va (NBPD_L3 - 1); + *pa = (pde PG_1GFRAME) + page_off; + return (int)(NBPD_L3 - page_off); + } /* * Level 2. @@ -152,7 +156,11 @@ _kvm_kvatop(kvm_t *kd, vaddr_t va, paddr _kvm_err(kd, 0, invalid translation (invalid level 2 PDE)); goto lose; } - + if (pde PG_PS) { + page_off = va (NBPD_L2 - 1); + *pa = (pde PG_2MFRAME) + page_off; + return (int)(NBPD_L2 - page_off); + } /* * Level 1. @@ -170,6 +178,7 @@ _kvm_kvatop(kvm_t *kd, vaddr_t va, paddr _kvm_err(kd, 0, invalid translation (invalid PTE)); goto lose; } + page_off = va PGOFSET; *pa = (pte PG_FRAME) + page_off; return (int)(NBPG - page_off);
CVS commit: src/lib/libkvm
Module Name:src Committed By: chs Date: Tue Jan 10 16:01:16 UTC 2012 Modified Files: src/lib/libkvm: kvm_x86_64.c Log Message: fix handling of large pages. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/lib/libkvm/kvm_x86_64.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: christos Date: Sat Oct 15 21:08:53 UTC 2011 Modified Files: src/lib/libkvm: kvm.c Log Message: kill open_cloexec() To generate a diff of this commit: cvs rdiff -u -r1.98 -r1.99 src/lib/libkvm/kvm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm.c diff -u src/lib/libkvm/kvm.c:1.98 src/lib/libkvm/kvm.c:1.99 --- src/lib/libkvm/kvm.c:1.98 Mon Sep 12 17:11:32 2011 +++ src/lib/libkvm/kvm.c Sat Oct 15 17:08:53 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm.c,v 1.98 2011/09/12 21:11:32 christos Exp $ */ +/* $NetBSD: kvm.c,v 1.99 2011/10/15 21:08:53 christos Exp $ */ /*- * Copyright (c) 1989, 1992, 1993 @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = @(#)kvm.c 8.2 (Berkeley) 2/13/94; #else -__RCSID($NetBSD: kvm.c,v 1.98 2011/09/12 21:11:32 christos Exp $); +__RCSID($NetBSD: kvm.c,v 1.99 2011/10/15 21:08:53 christos Exp $); #endif #endif /* LIBC_SCCS and not lint */ @@ -80,7 +80,6 @@ static kvm_t *_kvm_open(kvm_t *, const c const char *, int, char *); static int clear_gap(kvm_t *, bool (*)(void *, const void *, size_t), void *, size_t); -static int open_cloexec(const char *, int, int); static off_t Lseek(kvm_t *, int, off_t, int); static ssize_t Pread(kvm_t *, int, void *, size_t, off_t); @@ -152,27 +151,6 @@ _kvm_malloc(kvm_t *kd, size_t n) } /* - * Open a file setting the close on exec bit. - */ -static int -open_cloexec(const char *fname, int flags, int mode) -{ - int fd; - - if ((fd = open(fname, flags, mode)) == -1) - return fd; - if (fcntl(fd, F_SETFD, FD_CLOEXEC) == -1) - goto error; - - return fd; -error: - flags = errno; - (void)close(fd); - errno = flags; - return -1; -} - -/* * Wrapper around the lseek(2) system call; calls _kvm_syserr() for us * in the event of emergency. */ @@ -336,9 +314,9 @@ _kvm_open(kvm_t *kd, const char *uf, con * exist, open the current kernel. */ if (ufgiven == 0) - kd-nlfd = open_cloexec(_PATH_KSYMS, O_RDONLY, 0); + kd-nlfd = open(_PATH_KSYMS, O_RDONLY | O_CLOEXEC, 0); if (kd-nlfd 0) { - if ((kd-nlfd = open_cloexec(uf, O_RDONLY, 0)) 0) { + if ((kd-nlfd = open(uf, O_RDONLY | O_CLOEXEC, 0)) 0) { _kvm_syserr(kd, kd-program, %s, uf); goto failed; } @@ -356,7 +334,7 @@ _kvm_open(kvm_t *kd, const char *uf, con kd-nlfd = -1; } - if ((kd-pmfd = open_cloexec(mf, flag, 0)) 0) { + if ((kd-pmfd = open(mf, flag | O_CLOEXEC, 0)) 0) { _kvm_syserr(kd, kd-program, %s, mf); goto failed; } @@ -370,12 +348,12 @@ _kvm_open(kvm_t *kd, const char *uf, con * make it work for either /dev/mem or /dev/kmem -- in either * case you're working with a live kernel.) */ - if ((kd-vmfd = open_cloexec(_PATH_KMEM, flag, 0)) 0) { + if ((kd-vmfd = open(_PATH_KMEM, flag | O_CLOEXEC, 0)) 0) { _kvm_syserr(kd, kd-program, %s, _PATH_KMEM); goto failed; } kd-alive = KVM_ALIVE_FILES; - if ((kd-swfd = open_cloexec(sf, flag, 0)) 0) { + if ((kd-swfd = open(sf, flag | O_CLOEXEC, 0)) 0) { if (errno != ENXIO) { _kvm_syserr(kd, kd-program, %s, sf); goto failed; @@ -781,7 +759,7 @@ kvm_nlist(kvm_t *kd, struct nlist *nl) * So open it again, just for the time we retrieve the list. */ if (kd-nlfd 0) { - nlfd = open_cloexec(_PATH_KSYMS, O_RDONLY, 0); + nlfd = open(_PATH_KSYMS, O_RDONLY | O_CLOEXEC, 0); if (nlfd 0) { _kvm_err(kd, 0, failed to open %s, _PATH_KSYMS); return (nlfd);
CVS commit: src/lib/libkvm
Module Name:src Committed By: christos Date: Sat Oct 15 21:08:53 UTC 2011 Modified Files: src/lib/libkvm: kvm.c Log Message: kill open_cloexec() To generate a diff of this commit: cvs rdiff -u -r1.98 -r1.99 src/lib/libkvm/kvm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: christos Date: Wed Sep 14 12:37:56 UTC 2011 Modified Files: src/lib/libkvm: kvm_sun2.c kvm_sun3.c kvm_sun3x.c Log Message: more sys/param.h additions To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/lib/libkvm/kvm_sun2.c cvs rdiff -u -r1.14 -r1.15 src/lib/libkvm/kvm_sun3.c cvs rdiff -u -r1.11 -r1.12 src/lib/libkvm/kvm_sun3x.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm_sun2.c diff -u src/lib/libkvm/kvm_sun2.c:1.5 src/lib/libkvm/kvm_sun2.c:1.6 --- src/lib/libkvm/kvm_sun2.c:1.5 Mon Sep 20 19:23:16 2010 +++ src/lib/libkvm/kvm_sun2.c Wed Sep 14 08:37:55 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_sun2.c,v 1.5 2010/09/20 23:23:16 jym Exp $ */ +/* $NetBSD: kvm_sun2.c,v 1.6 2011/09/14 12:37:55 christos Exp $ */ /*- * Copyright (c) 1992, 1993 @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = @(#)kvm_sparc.c 8.1 (Berkeley) 6/4/93; #else -__RCSID($NetBSD: kvm_sun2.c,v 1.5 2010/09/20 23:23:16 jym Exp $); +__RCSID($NetBSD: kvm_sun2.c,v 1.6 2011/09/14 12:37:55 christos Exp $); #endif #endif /* LIBC_SCCS and not lint */ @@ -48,7 +48,7 @@ * Note: This file has to build on ALL m68000 machines, * so do NOT include any machine / *.h files here. */ - +#include sys/param.h #include sys/types.h #include sys/kcore.h Index: src/lib/libkvm/kvm_sun3.c diff -u src/lib/libkvm/kvm_sun3.c:1.14 src/lib/libkvm/kvm_sun3.c:1.15 --- src/lib/libkvm/kvm_sun3.c:1.14 Mon Sep 20 19:23:16 2010 +++ src/lib/libkvm/kvm_sun3.c Wed Sep 14 08:37:55 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_sun3.c,v 1.14 2010/09/20 23:23:16 jym Exp $ */ +/* $NetBSD: kvm_sun3.c,v 1.15 2011/09/14 12:37:55 christos Exp $ */ /*- * Copyright (c) 1992, 1993 @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = @(#)kvm_sparc.c 8.1 (Berkeley) 6/4/93; #else -__RCSID($NetBSD: kvm_sun3.c,v 1.14 2010/09/20 23:23:16 jym Exp $); +__RCSID($NetBSD: kvm_sun3.c,v 1.15 2011/09/14 12:37:55 christos Exp $); #endif #endif /* LIBC_SCCS and not lint */ @@ -48,7 +48,7 @@ * Note: This file has to build on ALL m68k machines, * so do NOT include any machine / *.h files here. */ - +#include sys/param.h #include sys/types.h #include sys/kcore.h Index: src/lib/libkvm/kvm_sun3x.c diff -u src/lib/libkvm/kvm_sun3x.c:1.11 src/lib/libkvm/kvm_sun3x.c:1.12 --- src/lib/libkvm/kvm_sun3x.c:1.11 Mon Sep 20 19:23:16 2010 +++ src/lib/libkvm/kvm_sun3x.c Wed Sep 14 08:37:55 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_sun3x.c,v 1.11 2010/09/20 23:23:16 jym Exp $ */ +/* $NetBSD: kvm_sun3x.c,v 1.12 2011/09/14 12:37:55 christos Exp $ */ /*- * Copyright (c) 1997 The NetBSD Foundation, Inc. @@ -34,7 +34,7 @@ #if 0 static char sccsid[] = @(#)kvm_sparc.c 8.1 (Berkeley) 6/4/93; #else -__RCSID($NetBSD: kvm_sun3x.c,v 1.11 2010/09/20 23:23:16 jym Exp $); +__RCSID($NetBSD: kvm_sun3x.c,v 1.12 2011/09/14 12:37:55 christos Exp $); #endif #endif /* LIBC_SCCS and not lint */ @@ -44,7 +44,7 @@ * Note: This file has to build on ALL m68k machines, * so do NOT include any machine / *.h files here. */ - +#include sys/param.h #include sys/types.h #include sys/kcore.h
CVS commit: src/lib/libkvm
Module Name:src Committed By: christos Date: Wed Sep 14 12:37:56 UTC 2011 Modified Files: src/lib/libkvm: kvm_sun2.c kvm_sun3.c kvm_sun3x.c Log Message: more sys/param.h additions To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/lib/libkvm/kvm_sun2.c cvs rdiff -u -r1.14 -r1.15 src/lib/libkvm/kvm_sun3.c cvs rdiff -u -r1.11 -r1.12 src/lib/libkvm/kvm_sun3x.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: wiz Date: Tue Sep 13 08:53:10 UTC 2011 Modified Files: src/lib/libkvm: kvm_getkernelname.3 Log Message: Fix Xr. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/lib/libkvm/kvm_getkernelname.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm_getkernelname.3 diff -u src/lib/libkvm/kvm_getkernelname.3:1.1 src/lib/libkvm/kvm_getkernelname.3:1.2 --- src/lib/libkvm/kvm_getkernelname.3:1.1 Mon Sep 12 21:11:53 2011 +++ src/lib/libkvm/kvm_getkernelname.3 Tue Sep 13 08:53:10 2011 @@ -1,4 +1,4 @@ -.\ $NetBSD: kvm_getkernelname.3,v 1.1 2011/09/12 21:11:53 christos Exp $ +.\ $NetBSD: kvm_getkernelname.3,v 1.2 2011/09/13 08:53:10 wiz Exp $ .\ .\ .\ Copyright (c) 2011 The NetBSD Foundation, Inc. @@ -50,9 +50,9 @@ .Sh DESCRIPTION This function returns a string containing the kernel name used from the kvm descriptor obtained by a previous -.Xr kvm_open +.Xr kvm_open 3 or -.Xr kvm_openfiles +.Xr kvm_openfiles 3 call. .Sh SEE ALSO .Xr kvm 3 ,
CVS commit: src/lib/libkvm
Module Name:src Committed By: wiz Date: Tue Sep 13 08:53:15 UTC 2011 Modified Files: src/lib/libkvm: kvm.3 Log Message: Sort sections. To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 src/lib/libkvm/kvm.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm.3 diff -u src/lib/libkvm/kvm.3:1.12 src/lib/libkvm/kvm.3:1.13 --- src/lib/libkvm/kvm.3:1.12 Mon Sep 12 21:11:32 2011 +++ src/lib/libkvm/kvm.3 Tue Sep 13 08:53:15 2011 @@ -1,4 +1,4 @@ -.\ $NetBSD: kvm.3,v 1.12 2011/09/12 21:11:32 christos Exp $ +.\ $NetBSD: kvm.3,v 1.13 2011/09/13 08:53:15 wiz Exp $ .\ .\ Copyright (c) 1992, 1993 .\ The Regents of the University of California. All rights reserved. @@ -57,6 +57,11 @@ .Pp .Fn kvm_open is first called to obtain a descriptor for all subsequent calls. +.Sh FILES +.Bl -tag -width /dev/mem -compact +.It Pa /dev/mem +interface to physical memory +.El .Sh COMPATIBILITY The kvm interface was first introduced in SunOS. A considerable number of programs have been developed that use this @@ -89,11 +94,6 @@ .Xr kvm_geterr 3 , to return (not print out) the error message corresponding to the most recent error condition on the given descriptor. -.Sh FILES -.Bl -tag -width /dev/mem -compact -.It Pa /dev/mem -interface to physical memory -.El .Sh SEE ALSO .Xr kvm_close 3 , .Xr kvm_getargv 3 ,
CVS commit: src/lib/libkvm
Module Name:src Committed By: christos Date: Tue Sep 13 19:11:09 UTC 2011 Modified Files: src/lib/libkvm: kvm_m68k_cmn.c Log Message: Include sys/param.h for MAXPATHLEN To generate a diff of this commit: cvs rdiff -u -r1.16 -r1.17 src/lib/libkvm/kvm_m68k_cmn.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm_m68k_cmn.c diff -u src/lib/libkvm/kvm_m68k_cmn.c:1.16 src/lib/libkvm/kvm_m68k_cmn.c:1.17 --- src/lib/libkvm/kvm_m68k_cmn.c:1.16 Sun Sep 26 18:28:05 2010 +++ src/lib/libkvm/kvm_m68k_cmn.c Tue Sep 13 15:11:09 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_m68k_cmn.c,v 1.16 2010/09/26 22:28:05 jym Exp $ */ +/* $NetBSD: kvm_m68k_cmn.c,v 1.17 2011/09/13 19:11:09 christos Exp $ */ /*- * Copyright (c) 1989, 1992, 1993 @@ -74,7 +74,7 @@ #if 0 static char sccsid[] = @(#)kvm_hp300.c 8.1 (Berkeley) 6/4/93; #else -__RCSID($NetBSD: kvm_m68k_cmn.c,v 1.16 2010/09/26 22:28:05 jym Exp $); +__RCSID($NetBSD: kvm_m68k_cmn.c,v 1.17 2011/09/13 19:11:09 christos Exp $); #endif #endif /* LIBC_SCCS and not lint */ @@ -85,6 +85,7 @@ * so do NOT include any machine / *.h files here. */ +#include sys/param.h #include sys/types.h #include sys/kcore.h
CVS commit: src/lib/libkvm
Module Name:src Committed By: wiz Date: Tue Sep 13 08:53:10 UTC 2011 Modified Files: src/lib/libkvm: kvm_getkernelname.3 Log Message: Fix Xr. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/lib/libkvm/kvm_getkernelname.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: wiz Date: Tue Sep 13 08:53:15 UTC 2011 Modified Files: src/lib/libkvm: kvm.3 Log Message: Sort sections. To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 src/lib/libkvm/kvm.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: christos Date: Tue Sep 13 19:11:09 UTC 2011 Modified Files: src/lib/libkvm: kvm_m68k_cmn.c Log Message: Include sys/param.h for MAXPATHLEN To generate a diff of this commit: cvs rdiff -u -r1.16 -r1.17 src/lib/libkvm/kvm_m68k_cmn.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: christos Date: Mon Sep 12 21:11:32 UTC 2011 Modified Files: src/lib/libkvm: Makefile kvm.3 kvm.c kvm_open.3 kvm_private.h Log Message: add a function to report the name of the file kvm_open{,.files} is using. To generate a diff of this commit: cvs rdiff -u -r1.47 -r1.48 src/lib/libkvm/Makefile cvs rdiff -u -r1.11 -r1.12 src/lib/libkvm/kvm.3 cvs rdiff -u -r1.97 -r1.98 src/lib/libkvm/kvm.c cvs rdiff -u -r1.17 -r1.18 src/lib/libkvm/kvm_open.3 cvs rdiff -u -r1.19 -r1.20 src/lib/libkvm/kvm_private.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/Makefile diff -u src/lib/libkvm/Makefile:1.47 src/lib/libkvm/Makefile:1.48 --- src/lib/libkvm/Makefile:1.47 Mon Feb 14 13:27:24 2011 +++ src/lib/libkvm/Makefile Mon Sep 12 17:11:31 2011 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.47 2011/02/14 18:27:24 matt Exp $ +# $NetBSD: Makefile,v 1.48 2011/09/12 21:11:31 christos Exp $ # from: @(#)Makefile 8.1 (Berkeley) 6/4/93 USE_FORT?= yes # used primarily by setgid programs @@ -39,6 +39,7 @@ .endif MAN= kvm.3 kvm_dump.3 kvm_geterr.3 kvm_getfiles.3 kvm_getloadavg.3 \ + kvm_getkernelname.3 \ kvm_getprocs.3 kvm_nlist.3 kvm_open.3 kvm_read.3 kvm_getlwps.3 MLINKS+=kvm_getprocs.3 kvm_getargv.3 kvm_getprocs.3 kvm_getenvv.3 Index: src/lib/libkvm/kvm.3 diff -u src/lib/libkvm/kvm.3:1.11 src/lib/libkvm/kvm.3:1.12 --- src/lib/libkvm/kvm.3:1.11 Thu Aug 7 12:44:35 2003 +++ src/lib/libkvm/kvm.3 Mon Sep 12 17:11:32 2011 @@ -1,4 +1,4 @@ -.\ $NetBSD: kvm.3,v 1.11 2003/08/07 16:44:35 agc Exp $ +.\ $NetBSD: kvm.3,v 1.12 2011/09/12 21:11:32 christos Exp $ .\ .\ Copyright (c) 1992, 1993 .\ The Regents of the University of California. All rights reserved. @@ -33,7 +33,7 @@ .\ .\ @(#)kvm.3 8.1 (Berkeley) 6/4/93 .\ -.Dd August 18, 2002 +.Dd September 14, 2011 .Dt KVM 3 .Os .Sh NAME @@ -99,6 +99,7 @@ .Xr kvm_getargv 3 , .Xr kvm_getenvv 3 , .Xr kvm_geterr 3 , +.Xr kvm_getkernelname 3 , .Xr kvm_getloadavg 3 , .Xr kvm_getlwps 3 , .Xr kvm_getprocs 3 , Index: src/lib/libkvm/kvm.c diff -u src/lib/libkvm/kvm.c:1.97 src/lib/libkvm/kvm.c:1.98 --- src/lib/libkvm/kvm.c:1.97 Fri Nov 26 17:01:53 2010 +++ src/lib/libkvm/kvm.c Mon Sep 12 17:11:32 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm.c,v 1.97 2010/11/26 22:01:53 dholland Exp $ */ +/* $NetBSD: kvm.c,v 1.98 2011/09/12 21:11:32 christos Exp $ */ /*- * Copyright (c) 1989, 1992, 1993 @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = @(#)kvm.c 8.2 (Berkeley) 2/13/94; #else -__RCSID($NetBSD: kvm.c,v 1.97 2010/11/26 22:01:53 dholland Exp $); +__RCSID($NetBSD: kvm.c,v 1.98 2011/09/12 21:11:32 christos Exp $); #endif #endif /* LIBC_SCCS and not lint */ @@ -90,6 +90,12 @@ return (kd-errbuf); } +const char * +kvm_getkernelname(kvm_t *kd) +{ + return kd-kernelname; +} + /* * Report an error using printf style arguments. program is kd-program * on hard errors, and 0 on soft errors, so that under sun error emulation, @@ -336,7 +342,9 @@ _kvm_syserr(kd, kd-program, %s, uf); goto failed; } + strlcpy(kd-kernelname, uf, sizeof(kd-kernelname)); } else { + strlcpy(kd-kernelname, _PATH_KSYMS, sizeof(kd-kernelname)); /* * We're here because /dev/ksyms was opened * successfully. However, we don't want to keep it Index: src/lib/libkvm/kvm_open.3 diff -u src/lib/libkvm/kvm_open.3:1.17 src/lib/libkvm/kvm_open.3:1.18 --- src/lib/libkvm/kvm_open.3:1.17 Mon Mar 22 17:55:06 2010 +++ src/lib/libkvm/kvm_open.3 Mon Sep 12 17:11:32 2011 @@ -1,4 +1,4 @@ -.\ $NetBSD: kvm_open.3,v 1.17 2010/03/22 21:55:06 joerg Exp $ +.\ $NetBSD: kvm_open.3,v 1.18 2011/09/12 21:11:32 christos Exp $ .\ .\ Copyright (c) 1992, 1993 .\ The Regents of the University of California. All rights reserved. @@ -33,7 +33,7 @@ .\ .\ @(#)kvm_open.3 8.3 (Berkeley) 4/19/94 .\ -.Dd September 14, 2009 +.Dd September 14, 2011 .Dt KVM_OPEN 3 .Os .Sh NAME @@ -224,6 +224,7 @@ .Xr kvm_getargv 3 , .Xr kvm_getenvv 3 , .Xr kvm_geterr 3 , +.Xr kvm_getkernelname 3 , .Xr kvm_getprocs 3 , .Xr kvm_nlist 3 , .Xr kvm_read 3 , Index: src/lib/libkvm/kvm_private.h diff -u src/lib/libkvm/kvm_private.h:1.19 src/lib/libkvm/kvm_private.h:1.20 --- src/lib/libkvm/kvm_private.h:1.19 Sun Sep 26 18:28:05 2010 +++ src/lib/libkvm/kvm_private.h Mon Sep 12 17:11:32 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_private.h,v 1.19 2010/09/26 22:28:05 jym Exp $ */ +/* $NetBSD: kvm_private.h,v 1.20 2011/09/12 21:11:32 christos Exp $ */ /*- * Copyright (c) 1992, 1993 @@ -90,6 +90,7 @@ size_t fdalign; uint8_t *iobuf; size_t iobufsz; + char kernelname[MAXPATHLEN]; }; /* Levels of aliveness */
CVS commit: src/lib/libkvm
Module Name:src Committed By: christos Date: Mon Sep 12 21:11:54 UTC 2011 Added Files: src/lib/libkvm: kvm_getkernelname.3 Log Message: doc for kvm_getkernelname To generate a diff of this commit: cvs rdiff -u -r0 -r1.1 src/lib/libkvm/kvm_getkernelname.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Added files: Index: src/lib/libkvm/kvm_getkernelname.3 diff -u /dev/null src/lib/libkvm/kvm_getkernelname.3:1.1 --- /dev/null Mon Sep 12 17:11:54 2011 +++ src/lib/libkvm/kvm_getkernelname.3 Mon Sep 12 17:11:53 2011 @@ -0,0 +1,67 @@ +.\ $NetBSD: kvm_getkernelname.3,v 1.1 2011/09/12 21:11:53 christos Exp $ +.\ +.\ +.\ Copyright (c) 2011 The NetBSD Foundation, Inc. +.\ All rights reserved. +.\ +.\ This code is derived from software contributed to The NetBSD Foundation +.\ by Christos Zoulas. +.\ +.\ Redistribution and use in source and binary forms, with or without +.\ modification, are permitted provided that the following conditions +.\ are met: +.\ 1. Redistributions of source code must retain the above copyright +.\notice, this list of conditions and the following disclaimer. +.\ 2. Redistributions in binary form must reproduce the above copyright +.\notice, this list of conditions and the following disclaimer in the +.\documentation and/or other materials provided with the distribution. +.\ 3. All advertising materials mentioning features or use of this software +.\must display the following acknowledgement: +.\This product includes software developed by the NetBSD +.\Foundation, Inc. and its contributors. +.\ 4. Neither the name of The NetBSD Foundation nor the names of its +.\contributors may be used to endorse or promote products derived +.\from this software without specific prior written permission. +.\ +.\ THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +.\ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +.\ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +.\ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +.\ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +.\ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +.\ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +.\ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +.\ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +.\ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +.\ POSSIBILITY OF SUCH DAMAGE. +.\ +.Dd September 14, 2011 +.Dt KVM_GETKERNELNAME 3 +.Os +.Sh NAME +.Nm kvm_getkernelname +.Nd get kernel name of opened kvm descriptor +.Sh LIBRARY +.Lb libkvm +.Sh SYNOPSIS +.In kvm.h +.Ft const char * +.Fn kvm_getkernelname kvm_t *kd +.Sh DESCRIPTION +This function returns a string containing the kernel name used from the kvm +descriptor obtained by a previous +.Xr kvm_open +or +.Xr kvm_openfiles +call. +.Sh SEE ALSO +.Xr kvm 3 , +.Xr kvm_close 3 , +.Xr kvm_getargv 3 , +.Xr kvm_getenvv 3 , +.Xr kvm_getprocs 3 , +.Xr kvm_nlist 3 , +.Xr kvm_open 3 , +.Xr kvm_openfiles 3 , +.Xr kvm_read 3 , +.Xr kvm_write 3
CVS commit: src/lib/libkvm
Module Name:src Committed By: christos Date: Mon Sep 12 21:11:32 UTC 2011 Modified Files: src/lib/libkvm: Makefile kvm.3 kvm.c kvm_open.3 kvm_private.h Log Message: add a function to report the name of the file kvm_open{,.files} is using. To generate a diff of this commit: cvs rdiff -u -r1.47 -r1.48 src/lib/libkvm/Makefile cvs rdiff -u -r1.11 -r1.12 src/lib/libkvm/kvm.3 cvs rdiff -u -r1.97 -r1.98 src/lib/libkvm/kvm.c cvs rdiff -u -r1.17 -r1.18 src/lib/libkvm/kvm_open.3 cvs rdiff -u -r1.19 -r1.20 src/lib/libkvm/kvm_private.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: christos Date: Mon Sep 12 21:11:54 UTC 2011 Added Files: src/lib/libkvm: kvm_getkernelname.3 Log Message: doc for kvm_getkernelname To generate a diff of this commit: cvs rdiff -u -r0 -r1.1 src/lib/libkvm/kvm_getkernelname.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: matt Date: Mon Feb 14 18:27:24 UTC 2011 Modified Files: src/lib/libkvm: Makefile Log Message: Add -D_KMEMUSER to CPPFLAGS To generate a diff of this commit: cvs rdiff -u -r1.46 -r1.47 src/lib/libkvm/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/Makefile diff -u src/lib/libkvm/Makefile:1.46 src/lib/libkvm/Makefile:1.47 --- src/lib/libkvm/Makefile:1.46 Tue Oct 5 23:48:16 2010 +++ src/lib/libkvm/Makefile Mon Feb 14 18:27:24 2011 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.46 2010/10/05 23:48:16 jym Exp $ +# $NetBSD: Makefile,v 1.47 2011/02/14 18:27:24 matt Exp $ # from: @(#)Makefile 8.1 (Berkeley) 6/4/93 USE_FORT?= yes # used primarily by setgid programs @@ -6,7 +6,7 @@ USE_SHLIBDIR= yes LIB= kvm -CPPFLAGS+=-DLIBC_SCCS -I${NETBSDSRCDIR}/sys +CPPFLAGS+=-DLIBC_SCCS -I${NETBSDSRCDIR}/sys -D_KMEMUSER SRCS= kvm.c kvm_file.c kvm_getloadavg.c kvm_proc.c
CVS commit: src/lib/libkvm
Module Name:src Committed By: matt Date: Mon Feb 14 18:27:24 UTC 2011 Modified Files: src/lib/libkvm: Makefile Log Message: Add -D_KMEMUSER to CPPFLAGS To generate a diff of this commit: cvs rdiff -u -r1.46 -r1.47 src/lib/libkvm/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libkvm
Module Name:src Committed By: matt Date: Sun Jan 23 06:28:53 UTC 2011 Modified Files: src/lib/libkvm: kvm_mips.c Log Message: Teach libkvm how kernel virtual memory is laided on 64-bit MIPS kernels. To generate a diff of this commit: cvs rdiff -u -r1.20 -r1.21 src/lib/libkvm/kvm_mips.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm_mips.c diff -u src/lib/libkvm/kvm_mips.c:1.20 src/lib/libkvm/kvm_mips.c:1.21 --- src/lib/libkvm/kvm_mips.c:1.20 Mon Sep 20 23:23:16 2010 +++ src/lib/libkvm/kvm_mips.c Sun Jan 23 06:28:52 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm_mips.c,v 1.20 2010/09/20 23:23:16 jym Exp $ */ +/* $NetBSD: kvm_mips.c,v 1.21 2011/01/23 06:28:52 matt Exp $ */ /* * Copyright (c) 1994, 1995 Carnegie-Mellon University. @@ -34,7 +34,7 @@ #include sys/cdefs.h #if defined(LIBC_SCCS) !defined(lint) -__RCSID($NetBSD: kvm_mips.c,v 1.20 2010/09/20 23:23:16 jym Exp $); +__RCSID($NetBSD: kvm_mips.c,v 1.21 2011/01/23 06:28:52 matt Exp $); #endif /* LIBC_SCCS and not lint */ /* @@ -100,6 +100,23 @@ cpu_kh = kd-cpu_data; page_off = va PGOFSET; +#ifdef _LP64 + if (MIPS_XKPHYS_P(va)) { + /* + * Direct-mapped cached address: just convert it. + */ + *pa = MIPS_XKPHYS_TO_PHYS(va); + return (NBPG - page_off); + } + + if (va MIPS_XKPHYS_START) { + /* + * XUSEG (user virtual address space) - invalid. + */ + _kvm_err(kd, 0, invalid kernel virtual address); + goto lose; + } +#else if (va MIPS_KSEG0_START) { /* * KUSEG (user virtual address space) - invalid. @@ -107,8 +124,9 @@ _kvm_err(kd, 0, invalid kernel virtual address); goto lose; } +#endif - if (va = MIPS_KSEG0_START va MIPS_KSEG1_START) { + if (MIPS_KSEG0_P(va)) { /* * Direct-mapped cached address: just convert it. */ @@ -116,7 +134,7 @@ return (NBPG - page_off); } - if (va = MIPS_KSEG1_START va MIPS_KSEG2_START) { + if (MIPS_KSEG1_P(va)) { /* * Direct-mapped uncached address: just convert it. */ @@ -124,6 +142,16 @@ return (NBPG - page_off); } +#ifdef _LP64 + if (va = MIPS_KSEG2_START) { + /* + * KUSEG (user virtual address space) - invalid. + */ + _kvm_err(kd, 0, invalid kernel virtual address); + goto lose; + } +#endif + /* * We now know that we're a KSEG2 (kernel virtually mapped) * address. Translate the address using the pmap's kernel @@ -134,10 +162,17 @@ * Step 1: Make sure the kernel page table has a translation * for the address. */ +#ifdef _LP64 + if (va = (MIPS_XKSEG_START + (cpu_kh-sysmapsize * NBPG))) { + _kvm_err(kd, 0, invalid XKSEG address); + goto lose; + } +#else if (va = (MIPS_KSEG2_START + (cpu_kh-sysmapsize * NBPG))) { _kvm_err(kd, 0, invalid KSEG2 address); goto lose; } +#endif /* * Step 2: Locate and read the PTE.
CVS commit: src/lib/libkvm
Module Name:src Committed By: dholland Date: Fri Nov 26 22:01:53 UTC 2010 Modified Files: src/lib/libkvm: kvm.c Log Message: Return error on failure instead of hiding it and always returning zero. From Henning Petersen in PR 44152. To generate a diff of this commit: cvs rdiff -u -r1.96 -r1.97 src/lib/libkvm/kvm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libkvm/kvm.c diff -u src/lib/libkvm/kvm.c:1.96 src/lib/libkvm/kvm.c:1.97 --- src/lib/libkvm/kvm.c:1.96 Sat Oct 23 14:34:12 2010 +++ src/lib/libkvm/kvm.c Fri Nov 26 22:01:53 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: kvm.c,v 1.96 2010/10/23 14:34:12 stacktic Exp $ */ +/* $NetBSD: kvm.c,v 1.97 2010/11/26 22:01:53 dholland Exp $ */ /*- * Copyright (c) 1989, 1992, 1993 @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = @(#)kvm.c 8.2 (Berkeley) 2/13/94; #else -__RCSID($NetBSD: kvm.c,v 1.96 2010/10/23 14:34:12 stacktic Exp $); +__RCSID($NetBSD: kvm.c,v 1.97 2010/11/26 22:01:53 dholland Exp $); #endif #endif /* LIBC_SCCS and not lint */ @@ -759,7 +759,7 @@ free(kd-iobuf); free(kd); - return (0); + return (error); } int