The uname(1)
command-line utility has a -m
option which prints the "machine hardware name".
On Linux, this field comes from the machine
member of struct utsname
, as populated by the uname(2)
system call.
Many other language APIs return this information:
os.uname()
and platform.machine()
php_uname()
What are the possible values for the "machine" field?
(v4.12 - 2017-July)
Let's refer to the source of the newuname system call.
Tracking this down is complicated by the fact that Linux has UTS namespaces , but the init_uts_ns
machine
field is initialized by the UTS_MACHINE
macro, which is defined per-architecture.
Further complicating matters, machine
can be overridden via override_architecture()
, if the process is running under a 32-bit "compat" personality, to COMPAT_UTS_MACHINE
.
UTS_MACHINE
defaults in Makefile
to the same thing as ARCH
. However, many platforms have separate sub-architectures under the same arch
directory, so they set UTS_MACHINE
themselves
With the list of directories in arch/
and a little grep
-ing of the Linux kernel sources ( git grep 'UTS_MACHINE\\s*:='
and git grep COMPAT_UTS_MACHINE
), we can arrive at this list:
alpha
arc
arm
aarch64_be
( arm64
) aarch64
( arm64
) armv8b
( arm64
compat) armv8l
( arm64
compat)
blackfin
c6x
cris
frv
h8300
hexagon
ia64
m32r
m68k
metag
microblaze
mips
(native or compat) mips64
( mips
) mn10300
nios2
openrisc
parisc
(native or compat) parisc64
( parisc
) ppc
( powerpc
native or compat) ppc64
( powerpc
) ppcle
( powerpc
native or compat) ppc64le
( powerpc
) s390
( s390x
compat) s390x
score
sh
sh64
( sh
) sparc
(native or compat) sparc64
( sparc
) tile
unicore32
i386
( x86
) i686
( x86
compat) x86_64
( x64
) xtensa
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.