man/orig/cpuctl
Материал из Xgu.ru
Не указан параметр (1)
CPUCTL(4) FreeBSD Kernel Interfaces Manual CPUCTL(4)
Содержание |
[править] NAME
cpuctl -- cpuctl pseudo device
[править] SYNOPSIS
To compile this driver into the kernel, place the following lines in your
kernel configuration file:
device cpuctl
Alternatively, to load the driver as a module at boot time, place the
following in loader.conf(5):
cpuctl_load="YES"
[править] DESCRIPTION
The special device /dev/cpuctl presents interface to the system CPU. It
provides functionality to retrieve CPUID information, read/write machine
specific registers (MSR) and perform CPU firmware updates.
For each CPU present in the system, the special device /dev/cpuctl%d with
the appropriate index will be created. For multicore CPUs such a special
device will be created for each core.
Currently, only i386 and amd64 processors are supported.
[править] IOCTL INTERFACE
All of the supported operations are invoked using the ioctl(2) system
call. Currently, the following ioctls are defined:
CPUCTL_RDMSR cpuctl_msr_args_t *args
CPUCTL_WRMSR cpuctl_msr_args_t *args
Read/write CPU machine specific register. The
cpuctl_msr_args_t structure is defined in <sys/cpuctl.h>
as:
typedef struct {
int msr; /* MSR to read */
uint64_t data;
} cpuctl_msr_args_t;
CPUCTL_MSRSBIT cpuctl_msr_args_t *args
CPUCTL_MSRCBIT cpuctl_msr_args_t *args
Set/clear MSR bits according to the mask given in the data
field.
CPUCTL_CPUID cpuctl_cpuid_args_t *args
Retrieve CPUID information. Arguments are supplied in the
following struct:
typedef struct {
int level; /* CPUID level */
uint32_t data[4];
} cpuctl_cpuid_args_t;
The level field indicates the CPUID level to retrieve
information for, while the data field is used to store the
received CPUID data.
CPUCTL_UPDATE cpuctl_update_args_t *args
Update CPU firmware (microcode). The structure is defined
in <sys/cpuctl.h> as:
typedef struct {
void *data;
size_t size;
} cpuctl_update_args_t;
The data field should point to the firmware image of size
size.
For additional information refer to cpuctl.h.
[править] RETURN VALUES
[ENXIO] The operation requested is not supported by the device
(e.g. unsupported architecture or the CPU is disabled)
[EINVAL] Incorrect request was supplied, or microcode image is
not correct.
[ENOMEM] No physical memory was available to complete the
request.
[EFAULT] The firmware image address points outside the process
address space.
[править] FILES
/dev/cpuctl
[править] SEE ALSO
hwpmc(4), cpucontrol(8)
[править] HISTORY
The cpuctl driver first appeared in FreeBSD 7.2.
[править] AUTHORS
The cpuctl module and this manual page were written by Stanislav Sedov
<stas@FreeBSD.org>.
[править] BUGS
Yes, probably, report if any.
FreeBSD 9.0 June 30, 2009 FreeBSD 9.0