SYSINFO(2) System Calls SYSINFO(2)

NAME


sysinfo - get and set system information strings

SYNOPSIS


#include <sys/systeminfo.h>

int sysinfo(int command, char *buf, long count);


DESCRIPTION


The sysinfo() function copies information relating to the operating
system on which the process is executing into the buffer pointed to by
buf. It can also set certain information where appropriate commands are
available. The count parameter indicates the size of the buffer.


The POSIX P1003.1 interface (see standards(7)) sysconf(3C) provides a
similar class of configuration information, but returns an integer rather
than a string.


The values for command are as follows:

SI_SYSNAME

Copy into the array pointed to by buf the string that would be
returned by uname(2) in the sysname field. This is the name of the
implementation of the operating system, for example, SunOS or UTS.


SI_HOSTNAME

Copy into the array pointed to by buf a string that names the present
host machine. This is the string that would be returned by uname() in
the nodename field. This hostname or nodename is often the name the
machine is known by locally. The hostname is the name of this machine
as a node in some network. Different networks might have different
names for the node, but presenting the nodename to the appropriate
network directory or name-to-address mapping service should produce a
transport end point address. The name might not be fully qualified.
Internet host names can be up to 256 bytes in length (plus the
terminating null).


SI_SET_HOSTNAME

Copy the null-terminated contents of the array pointed to by buf into
the string maintained by the kernel whose value will be returned by
succeeding calls to sysinfo() with the command SI_HOSTNAME. This
command requires that {PRIV_SYS_ADMIN} is asserted in the effective
set of the calling process.


SI_RELEASE

Copy into the array pointed to by buf the string that would be
returned by uname(2) in the release field. Typical values might be
5.2 or 4.1.


SI_VERSION

Copy into the array pointed to by buf the string that would be
returned by uname(2) in the version field. The syntax and semantics
of this string are defined by the system provider.


SI_MACHINE

Copy into the array pointed to by buf the string that would be
returned by uname(2) in the machine field, for example, sun4u.


SI_ARCHITECTURE

Copy into the array pointed to by buf a string describing the basic
instruction set architecture of the current system, for example,
sparc, mc68030, m32100, or i386. These names might not match
predefined names in the C language compilation system.


SI_ARCHITECTURE_64

Copy into the array pointed to by buf a string describing the 64-bit
instruction set architecture of the current system, for example,
sparcv9 or amd64. These names might not match predefined names in
the C language compilation system. This subcode is not recognized on
systems that do not allow a 64-bit application to run.


SI_ARCHITECTURE_32

Copy into the array pointed to by buf a string describing the 32-bit
instruction set architecture of the current system, for example,
sparc or i386. These names might not match predefined names in the C
language compilation system.


SI_ARCHITECTURE_K

Copy into the array pointed to by buf a string describing the kernel
instruction set architecture of the current system for example
sparcv9 or i386. These names might not match predefined names in the
C language compilation system.


SI_ARCHITECTURE_NATIVE

Copy into the array pointed to by buf a string describing the native
instruction set architecture of the current system, for example
sparcv9 or i386. These names might not match predefined names in the
C language compilation system.


SI_ADDRESS_WIDTH

Copy into the array pointed to by buf a string describing the number
of bits in the address space of the native instruction set; e.g., 32
or 64.


SI_ISALIST

Copy into the array pointed to by buf the names of the variant
instruction set architectures executable on the current system.

The names are space-separated and are ordered in the sense of best
performance. That is, earlier-named instruction sets might contain
more instructions than later-named instruction sets; a program that
is compiled for an earlier-named instruction set will most likely run
faster on this machine than the same program compiled for a later-
named instruction set.

Programs compiled for an instruction set that does not appear in the
list will most likely experience performance degradation or not run
at all on this machine.

The instruction set names known to the system are listed in
isalist(7); these names might not match predefined names or compiler
options in the C language compilation system.

This command is obsolete and might be removed in a future release.
See getisax(2) and the Linker and Libraries Guide for a better way to
handle instruction set extensions.


SI_PLATFORM

Copy into the array pointed to by buf a string describing the
specific model of the hardware platform, for example, SUNW,Sun-
Blade-1500, SUNW,Sun-Fire-T200, or i86pc.


SI_HW_PROVIDER

Copies the name of the hardware manufacturer into the array pointed
to by buf.


SI_HW_SERIAL

Copy into the array pointed to by buf a string which is the ASCII
representation of the hardware-specific serial number of the physical
machine on which the function is executed. This might be implemented
in Read-Only Memory, using software constants set when building the
operating system, or by other means, and might contain non-numeric
characters. If the function is executed within a non-global zone that
emulates a host identifier, then the ASCII representation of the
zone's host identifier is copied into the array pointed to by buf. It
is anticipated that manufacturers will not issue the same "serial
number" to more than one physical machine. The pair of strings
returned by SI_HW_PROVIDER and SI_HW_SERIAL is not guaranteed to be
unique across all vendor's SVR4 implementations and could change over
the lifetime of a given system.


SI_SRPC_DOMAIN

Copies the Secure Remote Procedure Call domain name into the array
pointed to by buf.


SI_SET_SRPC_DOMAIN

Set the string to be returned by sysinfo() with the SI_SRPC_DOMAIN
command to the value contained in the array pointed to by buf. This
command requires that {PRIV_SYS_ADMIN} is asserted in the effective
set of the calling process.


SI_DHCP_CACHE

Copy into the array pointed to by buf an ASCII string consisting of
the ASCII hexadecimal encoding of the name of the interface
configured by boot(8) followed by the DHCPACK reply from the server.
This command is intended for use only by the dhcpagent(8) DHCP client
daemon for the purpose of adopting the DHCP maintenance of the
interface configured by boot.


RETURN VALUES


Upon successful completion, the value returned indicates the buffer size
in bytes required to hold the complete value and the terminating null
character. If this value is no greater than the value passed in count,
the entire string was copied. If this value is greater than count, the
string copied into buf has been truncated to count-1 bytes plus a
terminating null character.


Otherwise, -1 is returned and errno is set to indicate the error.

ERRORS


The sysinfo() function will fail if:

EFAULT
The buf argument does not point to a valid address.


EINVAL
The count argument for a non-SET command is less than 0 or the
data for a SET command exceeds the limits established by the
implementation.


EPERM
The {PRIV_SYS_ADMIN} was not asserted in the effective set of
the calling process.


USAGE


In many cases there is no corresponding programming interface to set
these values; such strings are typically settable only by the system
administrator modifying entries in the /etc/system directory or the code
provided by the particular OEM reading a serial number or code out of
read-only memory, or hard-coded in the version of the operating system.


A good estimation for count is 257, which is likely to cover all strings
returned by this interface in typical installations.

SEE ALSO


getisax(2), uname(2), gethostid(3C), gethostname(3C), sysconf(3C),
isalist(7), privileges(7), standards(7), zones(7), boot(8), dhcpagent(8)


Linker and Libraries Guide

April 27, 2020 SYSINFO(2)