DragonFly On-Line Manual Pages

KVM_READ(3)	      DragonFly Library Functions Manual	   KVM_READ(3)


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


Kernel Data Access Library (libkvm, -lkvm)


#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);


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 mem- ory 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 inter- pret 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.


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.


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) DragonFly 3.7 January 8, 2006 DragonFly 3.7