summaryrefslogtreecommitdiffstats
path: root/lib/libkvm
diff options
context:
space:
mode:
authorglebius <glebius@FreeBSD.org>2014-02-12 19:22:48 +0000
committerglebius <glebius@FreeBSD.org>2014-02-12 19:22:48 +0000
commitd231df0ee2698e42fce6474a0d4168002867b271 (patch)
tree1a3e3b22110536177e40ea0bada12db4e0ffb383 /lib/libkvm
parent5e1e2540f9777d999e322a3969bc45cb65e2a868 (diff)
downloadFreeBSD-src-d231df0ee2698e42fce6474a0d4168002867b271.zip
FreeBSD-src-d231df0ee2698e42fce6474a0d4168002867b271.tar.gz
Add kvm_getncpus() to obtain mp_ncpus.
Sponsored by: Nginx, Inc.
Diffstat (limited to 'lib/libkvm')
-rw-r--r--lib/libkvm/kvm.h1
-rw-r--r--lib/libkvm/kvm_getpcpu.38
-rw-r--r--lib/libkvm/kvm_pcpu.c10
3 files changed, 18 insertions, 1 deletions
diff --git a/lib/libkvm/kvm.h b/lib/libkvm/kvm.h
index b99a5ef..d697795 100644
--- a/lib/libkvm/kvm.h
+++ b/lib/libkvm/kvm.h
@@ -77,6 +77,7 @@ char *kvm_geterr(kvm_t *);
char *kvm_getfiles(kvm_t *, int, int, int *);
int kvm_getloadavg(kvm_t *, double [], int);
int kvm_getmaxcpu(kvm_t *);
+int kvm_getncpus(kvm_t *);
void *kvm_getpcpu(kvm_t *, int);
uint64_t kvm_counter_u64_fetch(kvm_t *, u_long);
struct kinfo_proc *
diff --git a/lib/libkvm/kvm_getpcpu.3 b/lib/libkvm/kvm_getpcpu.3
index d1eb9b1..13192c2 100644
--- a/lib/libkvm/kvm_getpcpu.3
+++ b/lib/libkvm/kvm_getpcpu.3
@@ -28,7 +28,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd April 11, 2013
+.Dd February 12, 2014
.Dt KVM_GETPCPU 3
.Os
.Sh NAME
@@ -47,6 +47,8 @@
.Fn kvm_dpcpu_setcpu "kvm_t *kd" "u_int cpu"
.Ft int
.Fn kvm_getmaxcpu "kvm_t *kd"
+.Ft int
+.Fn kvm_getncpus "kvm_t *kd"
.Ft void *
.Fn kvm_getpcpu "kvm_t *kd" "int cpu"
.Ft ssize_t
@@ -73,6 +75,10 @@ The
function returns the maximum number of CPUs supported by the kernel.
.Pp
The
+.Fn kvm_getncpus
+function returns the current number of CPUs in the kernel.
+.Pp
+The
.Fn kvm_getpcpu
function returns a buffer holding the per-CPU data for a single CPU.
This buffer is described by the
diff --git a/lib/libkvm/kvm_pcpu.c b/lib/libkvm/kvm_pcpu.c
index ff7c119..662566a 100644
--- a/lib/libkvm/kvm_pcpu.c
+++ b/lib/libkvm/kvm_pcpu.c
@@ -173,6 +173,16 @@ kvm_getmaxcpu(kvm_t *kd)
return (maxcpu);
}
+int
+kvm_getncpus(kvm_t *kd)
+{
+
+ if (mp_ncpus == 0)
+ if (_kvm_pcpu_init(kd) < 0)
+ return (-1);
+ return (mp_ncpus);
+}
+
static int
_kvm_dpcpu_setcpu(kvm_t *kd, u_int cpu, int report_error)
{
OpenPOWER on IntegriCloud