mirror of https://github.com/mkerrisk/man-pages
100 lines
3.0 KiB
Groff
100 lines
3.0 KiB
Groff
.\" Copyright (c) 2009 Intel Corporation, Author Andi Kleen
|
|
.\" Description based on comments in arch/x86/kernel/cpuid.c
|
|
.\"
|
|
.\" %%%LICENSE_START(VERBATIM)
|
|
.\" Permission is granted to make and distribute verbatim copies of this
|
|
.\" manual provided the copyright notice and this permission notice are
|
|
.\" preserved on all copies.
|
|
.\"
|
|
.\" Permission is granted to copy and distribute modified versions of this
|
|
.\" manual under the conditions for verbatim copying, provided that the
|
|
.\" entire resulting derived work is distributed under the terms of a
|
|
.\" permission notice identical to this one.
|
|
.\"
|
|
.\" Since the Linux kernel and libraries are constantly changing, this
|
|
.\" manual page may be incorrect or out-of-date. The author(s) assume no
|
|
.\" responsibility for errors or omissions, or for damages resulting from
|
|
.\" the use of the information contained herein. The author(s) may not
|
|
.\" have taken the same level of care in the production of this manual,
|
|
.\" which is licensed free of charge, as they might when working
|
|
.\" professionally.
|
|
.\"
|
|
.\" Formatted or processed versions of this manual, if unaccompanied by
|
|
.\" the source, must acknowledge the copyright and authors of this work.
|
|
.\" %%%LICENSE_END
|
|
.\"
|
|
.TH CPUID 4 2009-03-31 "Linux" "Linux Programmer's Manual"
|
|
.SH NAME
|
|
cpuid \- x86 CPUID access device
|
|
.SH DESCRIPTION
|
|
CPUID provides an interface for querying information about the x86 CPU.
|
|
.PP
|
|
This device is accessed by
|
|
.BR lseek (2)
|
|
or
|
|
.BR pread (2)
|
|
to the appropriate CPUID level and reading in chunks of 16 bytes.
|
|
A larger read size means multiple reads of consecutive levels.
|
|
.PP
|
|
The lower 32 bits of the file position is used as the incoming
|
|
.IR %eax ,
|
|
and the upper 32 bits of the file position as the incoming
|
|
.IR %ecx ,
|
|
the latter intended for "counting"
|
|
.I eax
|
|
levels like
|
|
.IR eax=4 .
|
|
.PP
|
|
This driver uses
|
|
.IR /dev/cpu/CPUNUM/cpuid ,
|
|
where
|
|
.I CPUNUM
|
|
is the minor number,
|
|
and on an SMP box will direct the access to CPU
|
|
.I CPUNUM
|
|
as listed in
|
|
.IR /proc/cpuinfo .
|
|
.PP
|
|
This file is protected so that it can be read only by the user
|
|
.IR root ,
|
|
or members of the group
|
|
.IR root .
|
|
.SH NOTES
|
|
The CPUID instruction can be directly executed by a program
|
|
using inline assembler.
|
|
However this device allows convenient
|
|
access to all CPUs without changing process affinity.
|
|
.PP
|
|
Most of the information in
|
|
.I cpuid
|
|
is reported by the kernel in cooked form either in
|
|
.I /proc/cpuinfo
|
|
or through subdirectories in
|
|
.IR /sys/devices/system/cpu .
|
|
Direct CPUID access through this device should only
|
|
be used in exceptional cases.
|
|
.PP
|
|
The
|
|
.I cpuid
|
|
driver is not auto-loaded.
|
|
On modular kernels you might need to use the following command
|
|
to load it explicitly before use:
|
|
.PP
|
|
.in +4n
|
|
.EX
|
|
$ modprobe cpuid
|
|
.EE
|
|
.in
|
|
.PP
|
|
There is no support for CPUID functions that require additional
|
|
input registers.
|
|
.PP
|
|
Very old x86 CPUs don't support CPUID.
|
|
.SH SEE ALSO
|
|
Intel Corporation, Intel 64 and IA-32 Architectures
|
|
Software Developer's Manual Volume 2A:
|
|
Instruction Set Reference, A-M, 3-180 CPUID reference.
|
|
.PP
|
|
Intel Corporation, Intel Processor Identification and
|
|
the CPUID Instruction, Application note 485.
|