RDMSR(9) | Kernel Developer's Manual (x86) | RDMSR(9) |
msr
, rdmsr
,
rdmsr_safe
, wrmsr
—
#include <x86/cpufunc.h>
uint64_t
rdmsr
(u_int
msr);
int
rdmsr_safe
(u_int
msr, uint64_t
*valp);
void
wrmsr
(u_int
msr, uint64_t
val);
RDMSR
instruction reads from a x86 model-specific
register (MSR
). Conversely, the
WRMSR
instruction is used to write to a
MSR
. In NetBSD the
rdmsr
(), rdmsr_safe
(), and
wrmsr
() functions are used to access
MSRs
. The header
<x86/specialreg.h>
includes
definitions for some of the commonly used MSRs, that is, control registers
that are present in some x86 processor models but unavailable in others.
rdmsr
(msr)rdmsr_safe
(msr,
valp)rdmsr_safe
() function is a safer variant of
rdmsr
(). Upon successful completion, the function
returns zero and the value read from the register
msr is returned in valp. If a
fault occurs while accessing msr,
rdmsr_safe
() returns
EFAULT
.wrmsr
(msr,
val)wrmsr
() function writes
val to the register msr.Note that even though rdmsr_safe
()
provides support for reading MSRs
in a safe manner,
it is still a good practice to always verify that the given model-specific
register is present by using the CPUID
instruction,
available in NetBSD via
x86_cpuid
().
February 17, 2017 | NetBSD 9.2 |