March 17, 1996 KVM_DUMP 3

### NAME

kvm_dump_mkheader, kvm_dump_wrtheader, kvm_dump_inval - crash dump support functions

### LIBRARY

Kernel Data Access Library (libkvm, -lkvm)

### SYNOPSIS

```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 NetBSD1.2.