1*9da22751SDavid van Moolenbroek.\" $NetBSD: kvm.3,v 1.13 2011/09/13 08:53:15 wiz Exp $ 2*9da22751SDavid van Moolenbroek.\" 3*9da22751SDavid van Moolenbroek.\" Copyright (c) 1992, 1993 4*9da22751SDavid van Moolenbroek.\" The Regents of the University of California. All rights reserved. 5*9da22751SDavid van Moolenbroek.\" 6*9da22751SDavid van Moolenbroek.\" This code is derived from software developed by the Computer Systems 7*9da22751SDavid van Moolenbroek.\" Engineering group at Lawrence Berkeley Laboratory under DARPA contract 8*9da22751SDavid van Moolenbroek.\" BG 91-66 and contributed to Berkeley. 9*9da22751SDavid van Moolenbroek.\" 10*9da22751SDavid van Moolenbroek.\" Redistribution and use in source and binary forms, with or without 11*9da22751SDavid van Moolenbroek.\" modification, are permitted provided that the following conditions 12*9da22751SDavid van Moolenbroek.\" are met: 13*9da22751SDavid van Moolenbroek.\" 1. Redistributions of source code must retain the above copyright 14*9da22751SDavid van Moolenbroek.\" notice, this list of conditions and the following disclaimer. 15*9da22751SDavid van Moolenbroek.\" 2. Redistributions in binary form must reproduce the above copyright 16*9da22751SDavid van Moolenbroek.\" notice, this list of conditions and the following disclaimer in the 17*9da22751SDavid van Moolenbroek.\" documentation and/or other materials provided with the distribution. 18*9da22751SDavid van Moolenbroek.\" 3. Neither the name of the University nor the names of its contributors 19*9da22751SDavid van Moolenbroek.\" may be used to endorse or promote products derived from this software 20*9da22751SDavid van Moolenbroek.\" without specific prior written permission. 21*9da22751SDavid van Moolenbroek.\" 22*9da22751SDavid van Moolenbroek.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 23*9da22751SDavid van Moolenbroek.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 24*9da22751SDavid van Moolenbroek.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 25*9da22751SDavid van Moolenbroek.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 26*9da22751SDavid van Moolenbroek.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 27*9da22751SDavid van Moolenbroek.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 28*9da22751SDavid van Moolenbroek.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29*9da22751SDavid van Moolenbroek.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30*9da22751SDavid van Moolenbroek.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 31*9da22751SDavid van Moolenbroek.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32*9da22751SDavid van Moolenbroek.\" SUCH DAMAGE. 33*9da22751SDavid van Moolenbroek.\" 34*9da22751SDavid van Moolenbroek.\" @(#)kvm.3 8.1 (Berkeley) 6/4/93 35*9da22751SDavid van Moolenbroek.\" 36*9da22751SDavid van Moolenbroek.Dd September 14, 2011 37*9da22751SDavid van Moolenbroek.Dt KVM 3 38*9da22751SDavid van Moolenbroek.Os 39*9da22751SDavid van Moolenbroek.Sh NAME 40*9da22751SDavid van Moolenbroek.Nm kvm 41*9da22751SDavid van Moolenbroek.Nd kernel memory interface 42*9da22751SDavid van Moolenbroek.Sh LIBRARY 43*9da22751SDavid van Moolenbroek.Lb libkvm 44*9da22751SDavid van Moolenbroek.Sh DESCRIPTION 45*9da22751SDavid van MoolenbroekThe 46*9da22751SDavid van Moolenbroek.Nm 47*9da22751SDavid van Moolenbroeklibrary provides a uniform interface for accessing kernel virtual memory 48*9da22751SDavid van Moolenbroekimages, including live systems and crash dumps. 49*9da22751SDavid van MoolenbroekAccess to live systems is via 50*9da22751SDavid van Moolenbroek.Pa /dev/mem 51*9da22751SDavid van Moolenbroekwhile crash dumps can be examined via the core file generated by 52*9da22751SDavid van Moolenbroek.Xr savecore 8 . 53*9da22751SDavid van MoolenbroekThe interface behaves identically in both cases. 54*9da22751SDavid van MoolenbroekMemory can be read and written, kernel symbol addresses can be 55*9da22751SDavid van Moolenbroeklooked up efficiently, and information about user processes can 56*9da22751SDavid van Moolenbroekbe gathered. 57*9da22751SDavid van Moolenbroek.Pp 58*9da22751SDavid van Moolenbroek.Fn kvm_open 59*9da22751SDavid van Moolenbroekis first called to obtain a descriptor for all subsequent calls. 60*9da22751SDavid van Moolenbroek.Sh FILES 61*9da22751SDavid van Moolenbroek.Bl -tag -width /dev/mem -compact 62*9da22751SDavid van Moolenbroek.It Pa /dev/mem 63*9da22751SDavid van Moolenbroekinterface to physical memory 64*9da22751SDavid van Moolenbroek.El 65*9da22751SDavid van Moolenbroek.Sh COMPATIBILITY 66*9da22751SDavid van MoolenbroekThe kvm interface was first introduced in SunOS. 67*9da22751SDavid van MoolenbroekA considerable number of programs have been developed that use this 68*9da22751SDavid van Moolenbroekinterface, making backward compatibility highly desirable. 69*9da22751SDavid van MoolenbroekIn most respects, the Sun kvm interface is consistent and clean. 70*9da22751SDavid van MoolenbroekAccordingly, the generic portion of the interface (i.e., 71*9da22751SDavid van Moolenbroek.Fn kvm_open , 72*9da22751SDavid van Moolenbroek.Fn kvm_close , 73*9da22751SDavid van Moolenbroek.Fn kvm_read , 74*9da22751SDavid van Moolenbroek.Fn kvm_write , 75*9da22751SDavid van Moolenbroekand 76*9da22751SDavid van Moolenbroek.Fn kvm_nlist ) 77*9da22751SDavid van Moolenbroekhas been incorporated into the 78*9da22751SDavid van Moolenbroek.Bx 79*9da22751SDavid van Moolenbroekinterface. 80*9da22751SDavid van MoolenbroekIndeed, many kvm applications (i.e., debuggers and statistical monitors) 81*9da22751SDavid van Moolenbroekuse only this subset of the interface. 82*9da22751SDavid van Moolenbroek.Pp 83*9da22751SDavid van MoolenbroekThe process interface was not kept. 84*9da22751SDavid van MoolenbroekThis is not a portability issue since any code that manipulates 85*9da22751SDavid van Moolenbroekprocesses is inherently machine dependent. 86*9da22751SDavid van Moolenbroek.Pp 87*9da22751SDavid van MoolenbroekFinally, the Sun kvm error reporting semantics are poorly defined. 88*9da22751SDavid van MoolenbroekThe library can be configured either to print errors to stderr automatically, 89*9da22751SDavid van Moolenbroekor to print no error messages at all. 90*9da22751SDavid van MoolenbroekIn the latter case, the nature of the error cannot be determined. 91*9da22751SDavid van MoolenbroekTo overcome this, the 92*9da22751SDavid van Moolenbroek.Bx 93*9da22751SDavid van Moolenbroekinterface includes a routine, 94*9da22751SDavid van Moolenbroek.Xr kvm_geterr 3 , 95*9da22751SDavid van Moolenbroekto return (not print out) the error message corresponding to the most 96*9da22751SDavid van Moolenbroekrecent error condition on the given descriptor. 97*9da22751SDavid van Moolenbroek.Sh SEE ALSO 98*9da22751SDavid van Moolenbroek.Xr kvm_close 3 , 99*9da22751SDavid van Moolenbroek.Xr kvm_getargv 3 , 100*9da22751SDavid van Moolenbroek.Xr kvm_getenvv 3 , 101*9da22751SDavid van Moolenbroek.Xr kvm_geterr 3 , 102*9da22751SDavid van Moolenbroek.Xr kvm_getkernelname 3 , 103*9da22751SDavid van Moolenbroek.Xr kvm_getloadavg 3 , 104*9da22751SDavid van Moolenbroek.Xr kvm_getlwps 3 , 105*9da22751SDavid van Moolenbroek.Xr kvm_getprocs 3 , 106*9da22751SDavid van Moolenbroek.Xr kvm_nlist 3 , 107*9da22751SDavid van Moolenbroek.Xr kvm_open 3 , 108*9da22751SDavid van Moolenbroek.Xr kvm_openfiles 3 , 109*9da22751SDavid van Moolenbroek.Xr kvm_read 3 , 110*9da22751SDavid van Moolenbroek.Xr kvm_write 3 111