diff options
Diffstat (limited to 'lib/libkvm/kvm_pcpu.c')
-rw-r--r-- | lib/libkvm/kvm_pcpu.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/lib/libkvm/kvm_pcpu.c b/lib/libkvm/kvm_pcpu.c index c4d3176..eaea7e4 100644 --- a/lib/libkvm/kvm_pcpu.c +++ b/lib/libkvm/kvm_pcpu.c @@ -216,7 +216,7 @@ _kvm_dpcpu_setcpu(kvm_t *kd, u_int cpu, int report_error) static int _kvm_dpcpu_init(kvm_t *kd) { - struct nlist nl[] = { + struct kvm_nlist nl[] = { #define NLIST_START_SET_PCPU 0 { .n_name = "___start_" DPCPU_SETNAME }, #define NLIST_STOP_SET_PCPU 1 @@ -232,6 +232,12 @@ _kvm_dpcpu_init(kvm_t *kd) u_int dpcpu_maxcpus; /* + * XXX: This only works for native kernels for now. + */ + if (!kvm_native(kd)) + return (-1); + + /* * Locate and cache locations of important symbols using the internal * version of _kvm_nlist, turning off initialization to avoid * recursion in case of unresolveable symbols. @@ -279,8 +285,8 @@ _kvm_dpcpu_initialized(kvm_t *kd, int intialize) * Check whether the value is within the dpcpu symbol range and only if so * adjust the offset relative to the current offset. */ -uintptr_t -_kvm_dpcpu_validaddr(kvm_t *kd, uintptr_t value) +kvaddr_t +_kvm_dpcpu_validaddr(kvm_t *kd, kvaddr_t value) { if (value == 0) @@ -319,6 +325,8 @@ ssize_t kvm_read_zpcpu(kvm_t *kd, u_long base, void *buf, size_t size, int cpu) { + if (!kvm_native(kd)) + return (-1); return (kvm_read(kd, (uintptr_t)(base + sizeof(struct pcpu) * cpu), buf, size)); } |