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