cpuid man page on SmartOS

Man page or keyword search:  
man Server   16655 pages
apropos Keyword Search (all sections)
Output format
SmartOS logo
[printable version]

CPUID(7D)							     CPUID(7D)

NAME
       cpuid - CPU identification driver

SYNOPSIS
       /dev/cpu/self/cpuid

DESCRIPTION
   SPARC and x86 system
       This  device  provides  implementation-private  information  via ioctls
       about various aspects of the implementation to  Solaris	libraries  and
       utilities.

   x86 systems only
       This  device also provides a file-like view of the namespace and return
       values of the x86 cpuid instruction. The cpuid instruction takes a sin‐
       gle  32-bit integer function code, and returns four 32-bit integer val‐
       ues corresponding to the input value that describe various  aspects  of
       the capabilities and configuration of the processor.

       The  API	 for the character device consists of using the seek offset to
       set the function code value, and using a	 read(2)  or  pread(2)	of  16
       bytes  to fetch the four 32-bit return values of the instruction in the
       order %eax, %ebx, %ecx and %edx.

       No data can be written to the device. Like the  cpuid  instruction,  no
       special privileges are required to use the device.

       The  device  is useful to enable low-level configuration information to
       be extracted from the CPU without having to write any assembler code to
       invoke  the  cpuid  instruction	directly. It also allows the kernel to
       attempt to correct any  erroneous  data	returned  by  the  instruction
       (prompted  by occassional errors in the information exported by various
       processor implementations over the years).

       See the processor manufacturers documentation for  further  information
       about  the  syntax  and	semantics  of  the wide variety of information
       available from this instruction.

EXAMPLE
       This example allows you to determine if the current x86 processor  sup‐
       ports  "long mode," which is a necessary (but not sufficient) condition
       for running the 64-bit Solaris kernel on the processor.

	 /*

	 #include <sys/types.h>
	 #include <sys/stat.h>
	 #include <fcntl.h>
	 #include <unistd.h>
	 #include <string.h>
	 #include <errno.h>
	 #include <stdio.h>

	 static const char devname[] = "/dev/cpu/self/cpuid";

	 /*ARGSUSED*/
	 int
	 main(int argc, char *argv[])
	 {
		 struct {
			 uint32_t r_eax, r_ebx, r_ecx, r_edx;
		 } _r, *rp = &_r;
		 int d;
		 char *s;

		 if ((d = open(devname, O_RDONLY)) == -1) {
			 perror(devname);
			 return (1);
		 }

		 if (pread(d, rp, sizeof (*rp), 0) != sizeof (*rp)) {
			 perror(devname);
			 goto fail;
		 }

		 s = (char *)&rp->r_ebx;
		 if (strncmp(s, "Auth" "cAMD" "enti", 12) != 0 &&
		     strncmp(s, "Genu" "ntel" "ineI", 12) != 0)
			 goto fail;

		 if (pread(d, rp, sizeof (*rp), 0x80000001) == sizeof (*rp)) {
			 /*
			  * Read extended feature word; check bit 29
			  */
			 (void) close(d);
			 if ((rp->r_edx >> 29) & 1) {
				 (void) printf("processor supports long mode\n");
				 return (0);
			 }
		 }
	 fail:
		 (void) close(d);
		 return (1);
	 }

ERRORS
       ENXIO
		 Results from attempting to read data from  the	 device	 on  a
		 system	 that  does  not support the CPU identification inter‐
		 faces

       EINVAL
		 Results from reading from an offset larger than UINT_MAX,  or
		 attempting  to	 read  with  a size that is not multiple of 16
		 bytes.

FILES
       /dev/cpu/self/cpuid
			      Provides access to CPU identification data.

ATTRIBUTES
       See attributes(5) for descriptions of the following attributes:

       ┌────────────────────┬─────────────────┐
       │  ATTRIBUTE TYPE    │ ATTRIBUTE VALUE │
       ├────────────────────┼─────────────────┤
       │Interface Stability │ Evolving	      │
       └────────────────────┴─────────────────┘

SEE ALSO
       psrinfo(1M), prtconf(1M), pread(2), read(2), attributes(5)

				 Sep 16, 2004			     CPUID(7D)
[top]

List of man pages available for SmartOS

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net