table of contents
KVM_GETPCPU(3) | Library Functions Manual | KVM_GETPCPU(3) |
NAME¶
kvm_dpcpu_setcpu kvm_getmaxcpu, kvm_getpcpu — access per-CPU dataLIBRARY¶
Kernel Data Access Library (libkvm, -lkvm)SYNOPSIS¶
#include <sys/param.h>#include <sys/pcpu.h>
#include <sys/sysctl.h>
#include <kvm.h> int
kvm_dpcpu_setcpu(kvm_t *kd, u_int cpu); int
kvm_getmaxcpu(kvm_t *kd); void *
kvm_getpcpu(kvm_t *kd, int cpu);
DESCRIPTION¶
The kvm_dpcpu_setcpu(), kvm_getmaxcpu(), and kvm_getpcpu() functions are used to access the per-CPU data of active processors in the kernel indicated by kd. Per-CPU storage comes in two flavours: data stored directly in a struct pcpu associated with each CPU, and dynamic per-CPU storage (DPCPU), in which a single kernel symbol refers to different data depending on what CPU it is accessed from. The kvm_getmaxcpu() function returns the maximum number of CPUs supported by the kernel. The kvm_getpcpu() function returns a buffer holding the per-CPU data for a single CPU. This buffer is described by the struct pcpu type. The caller is responsible for releasing the buffer via a call to free(3) when it is no longer needed. If cpu is not active, thenNULL
is returned instead.
Symbols for dynamic per-CPU data are accessed via kvm_nlist(3)
as with other symbols. libkvm maintains a notion of the
"current CPU", set by kvm_dpcpu_setcpu, which
defaults to 0. Once another CPU is selected, kvm_nlist(3)
will return pointers to that data on the appropriate CPU.
CACHING¶
kvm_getmaxcpu() and kvm_getpcpu() cache the nlist values for various kernel variables which are reused in successive calls. You may call either function with kd set toNULL
to clear this cache.
RETURN VALUES¶
On success, the kvm_getmaxcpu() function returns the maximum number of CPUs supported by the kernel. If an error occurs, it returns -1 instead. On success, the kvm_getpcpu() function returns a pointer to an allocated buffer orNULL.
If an error occurs, it
returns -1 instead.
On success, the kvm_dpcpu_setcpu() call returns 0; if an error
occurs, it returns -1 instead.
If any function encounters an error, then an error message may be retrieved via
kvm_geterr(3.)
SEE ALSO¶
free(3), kvm(3)February 28, 2010 | Debian |