summaryrefslogtreecommitdiffstats
path: root/lib/libkvm/kvm_pcpu.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libkvm/kvm_pcpu.c')
-rw-r--r--lib/libkvm/kvm_pcpu.c14
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));
}
OpenPOWER on IntegriCloud