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