Main index | Section 3 | Options |
#include <sys/param.h>
#include <sys/pcpu.h>
#include <sys/sysctl.h>
#include <kvm.h>
The kvm_getmaxcpu() function returns the maximum number of CPUs supported by the kernel.
The kvm_getncpus() function returns the current number of CPUs in 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, then NULL is returned instead.
The kvm_read_zpcpu() function is used to obtain private per-CPU copy from a UMA_ZONE_PCPU zone(9). It takes base argument as base address of an allocation and copyies size bytes into buf from the part of allocation that is private to cpu.
The kvm_counter_u64_fetch() function fetches value of a counter(9) pointed by base address.
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.
On success, the kvm_getpcpu() function returns a pointer to an allocated buffer or NULL. 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.
On success, the kvm_read_zpcpu() function returns number of bytes copied. 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).
KVM_GETPCPU (3) | March 15, 2017 |
Main index | Section 3 | Options |
Please direct any comments about this manual page service to Ben Bullock. Privacy policy.
“ | One of the advantages of using UNIX to teach an operating systems course is the sources and documentation will easily fit into a student's briefcase. | ” |
— John Lions |