x86 CPUID access device
an interface for querying information about the x86 CPU.
This device is
accessed by lseek(2) or pread(2) to the
appropriate CPUID level and reading in chunks of 16 bytes. A
larger read size means multiple reads of consecutive
The lower 32
bits of the file position is used as the incoming
%eax, and the upper 32 bits of the file position as
the incoming %ecx, the latter intended for
"counting" eax levels like
uses /dev/cpu/CPUNUM/cpuid, where CPUNUM is
the minor number, and on an SMP box will direct the access
to CPU CPUNUM as listed in /proc/cpuinfo.
This file is
protected so that it can be read only by the user
root, or members of the group root.
instruction can be directly executed by a program using
inline assembler. However this device allows convenient
access to all CPUs without changing process affinity.
Most of the
information in cpuid is reported by the kernel in
cooked form either in /proc/cpuinfo or through
subdirectories in /sys/devices/system/cpu. Direct
CPUID access through this device should only be used in
cpuid driver is not auto-loaded. On modular kernels
you might need to use the following command to load it
explicitly before use:
There is no
support for CPUID functions that require additional input
Very old x86
CPUs don’t support CPUID.
Corporation, Intel 64 and IA-32 Architectures Software
Developer’s Manual Volume 2A: Instruction Set
Reference, A-M, 3-180 CPUID reference.
Corporation, Intel Processor Identification and the CPUID
Instruction, Application note 485.
This page is
part of release 4.04 of the Linux man-pages project.
A description of the project, information about reporting
bugs, and the latest version of this page, can be found at