NAME
kvm_dump_mkheader,
kvm_dump_wrtheader,
kvm_dump_inval —
crash dump support
functions
LIBRARY
Kernel Data Access Library (libkvm, -lkvm)
SYNOPSIS
#include <kvm.h>
int
kvm_dump_mkheader(
kvm_t
*kd,
off_t dump_off);
int
kvm_dump_wrtheader(
kvm_t
*kd,
FILE *fp,
int dumpsize);
int
kvm_dump_inval(
kvm_t
*kd);
DESCRIPTION
First note that the functions described here were designed to be used by
savecore(8).
The function
kvm_dump_mkheader() checks if the physical memory
file associated with
kd contains a valid crash dump
header as generated by a dumping kernel. When a valid header is found,
kvm_dump_mkheader() initializes the internal kvm data
structures as if a crash dump generated by the
savecore(8) program was
opened. This has the intentional side effect of enabling the address
translation machinery.
A call to
kvm_dump_mkheader() will most likely be followed by
a call to
kvm_dump_wrtheader(). This function takes care of
generating the generic header, the CORE_CPU section and the section header of
the CORE_DATA section. The data is written to the file pointed at by
fp. The
dumpsize argument is only
used to properly the set the segment size of the CORE_DATA section. Note that
this function assumes that
fp is positioned at file
location 0. This function will not seek and therefore allows
fp to be a file pointer obtained by
zopen().
The
kvm_dump_inval() function clears the magic number in the
physical memory file associated with
kd. The address
translations must be enabled for this to work (thus assuming that
kvm_dump_mkheader() was called earlier in the sequence).
RETURN VALUES
All functions except
kvm_dump_mkheader() return 0 on success,
-1 on failure. The function
kvm_dump_mkheader() returns the
size of the headers present before the actual dumpdata starts. If no valid
headers were found but no fatal errors occurred, 0 is returned. On fatal
errors the return value is -1.
In the case of failure,
kvm_geterr(3) can be used to
retrieve the cause of the error.
SEE ALSO
kvm(3),
kvm_open(3)
HISTORY
These functions first appeared in
NetBSD 1.2.