NAME
kvm_read
,
kvm_readstr
, kvm_write
— read or write kernel virtual
memory
LIBRARY
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
Thekvm_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)