KVM_READ(3)

NAME
kvm_read, kvm_readstr, kvm_write - read or write kernel virtual memory

LIBRARY
libkvm

SYNOPSIS
#include <sys/types.h>
#include <kvm.h>
ssize_t
kvm_read(kvm_t *kd, unsigned long addr, void *buf, size_t nbytes);
char *
kvm_readstr(kvm_t *kd, unsigned long addr, char *buf, size_t *len);
ssize_t
kvm_write(kvm_t *kd, unsigned long addr, const void *buf, size_t nbytes);

DESCRIPTION
The kvm_read(), kvm_readstr() and kvm_write() functions are used to read and write kernel virtual memory (or a crash dump file). See kvm_open(3) or kvm_openfiles(3) for information regarding opening kernel virtual memory and crash dumps.

The kvm_read() function transfers nbytes bytes of data from the kernel space address addr to buf. Conversely, kvm_write() transfers data from buf to addr. Unlike their SunOS counterparts, these functions cannot be used to read or write process address spaces.

The kvm_readstr() function exists for convenience to read NUL terminated strings from the kernel address space. If buf is NULL, kvm_readstr() will allocate a sufficiently large buffer, which needs to be deallocated via free(3) by the caller. If len is not NULL, kvm_readstr() will interpret the value it is pointing to as the size of buf and will store the size of the complete string at addr. Note that if only buf is too small to hold the complete string, kvm_readstr() will return NULL but set len to the size needed.

RETURN VALUES
For kvm_read() and kvm_write() the number of bytes actually transferred is returned, if the request was successful. Otherwise, -1 is returned.

For kvm_readstr() NULL is returned on failure. Upon success, the address of the string is returned, which will be buf if this was supplied.

SEE ALSO
kvm(3), kvm_close(3), kvm_getargv(3), kvm_getenvv(3), kvm_geterr(3), kvm_getprocs(3), kvm_nlist(3), kvm_open(3), kvm_openfiles(3)