Manual Page Result
0
Command: getsysinfo | Section: 2 | Source: Digital UNIX | File: getsysinfo.2.gz
getsysinfo(2) System Calls Manual getsysinfo(2)
NAME
getsysinfo - Gets system information
SYNOPSIS
#include <sys/sysinfo.h> #include <machine/hal_sysinfo.h>
getsysinfo(op, buffer, nbytes, start, arg, flag)
unsigned long op;
caddr_t buffer;
unsigned long nbytes;
int *start;
void *arg;
unsigned long *flag;
PARAMETERS
Specifies the operation to be performed. Values for op are defined in
the <sys/sysinfo.h> and <machine/hal_sysinfo.h> header files. See the
DESCRIPTION for the operations you can specify. Specifies the location
where the system information is returned. Its data type depends upon
the operation you specify. Defines the size of buffer. Specifies the
current logical location within the internal system table referenced by
the op value. You initially set the start parameter to 0 (zero) or to
-1. Then, the getsysinfo() routine updates this value as it retrieves
information so that it sets the start parameter to the current logical
location within the system table. You can use successive executions of
getsysinfo() (without modifying the start parameter) to retrieve in-
formation about all the system structures specified by op. See the in-
dividual op descriptions to determine how to initialize the start para-
meter.
The getsysinfo() call sets the start parameter to 0 (zero) when
all the system information you requested has been retrieved.
The optional arg and flag values can be used by some op values
to specify additional information. The data type of these op-
tional parameters depends upon which operation is specified. If
an operation does not require these parameters, omit them or set
them to NULL.
DESCRIPTION
The getsysinfo system call retrieves information from the system.
When information about multiple system structures is returned, it is
stored in consecutive buffer locations. The information for each system
structure depends on the op value.
This section lists the various operations that you can specify with the
op parameter. It also specifies the data type for the buffer, nbytes,
start, and arg parameters where necessary. Returns the BOOTDEV string,
which is used for the installation. (This operator does not require
any parameter modifications.) Returns the name of the file from which
the currently running kernel was booted. This file might be a stati-
cally linked executable, such as vmunix, or a bootstrap linker direc-
tive file, such as /etc/sysconfigtab. (See also the description of the
GSI_MODULE_LIST operation.) char buf[SIZE] Must be greater than or
equal to 80. Returns the name of the network interface over which the
kernel was booted. This value is only valid when the kernel is booted
from the network. Examples are ln0 (DEC 3000) and te0 (DEC 4000).
char buf[SIZE] Must be greater than or equal to 10. Returns the name
of a start-selected bus. char buf[SIZE] Specifies the size of the user
buffer. If you set start to -1, the name of the nexus iobus is re-
turned in buffer. Otherwise, start points to the bus address and re-
turns the nexus iobus name in buffer. Returns the port name of a
start-selected bus. char buf[SIZE] Specifies the size of the user
buffer. If you set start to -1, the port name of the nexus iobus is
returned in buffer. Otherwise, start points to the bus address and re-
turns the port name of the nexus iobus in buffer. Returns a start-se-
lected bus structure, which is defined in <io/common/devdriver.h>.
struct bus (/usr/include/io/common/devdriver.h) Specifies the size of
the user buffer. If you set start to -1, the structure of the nexus
iobus is returned in buffer. Otherwise, start points to the bus struc-
ture and returns the structure of the nexus iobus in buffer. Returns a
non-zero value if the system supports accessing IO space with byte/word
load and store instructions. If zero is returned or the call fails,
then byte/word IO accesses should not be attempted. int Specifies the
size of the user buffer. Returns the system clock's ticks-per-second
value in the form of an int. (This operator does not require any para-
meter modifications.) Returns the address of the start-selected binary
compatibility module's configure function in the form of a pointer.
struct compat_mod which is defined in <sys/systm.h> Specifies size of
compat_mod structure Points to the compat_mod structure and returns the
address of the binary compatibility module's configure function in
buffer. Returns the CPU type (from the kernel cpu global variable) in
the form of an int. int Must be no less than the size of an int. Re-
turns the following CPU information: The number of the CPU on which the
calling thread was running at the time of the getsysinfo() call. The
number of CPUs capable of running at the time of the getsysinfo( call.
The type of machine, as defined by the /usr/include/machine/hal/cpu-
conf.h header file. The highest available CPU number. For example, if
your system contains three CPUs numbered 0, 2, and 4, the highest
available CPU number is 5. Bit mask indicating which CPU numbers are
currently mapped to physical CPUs. For example, a value of 0x15 indi-
cates that the system contains CPUs numbered 0, 2, and 4. Bit mask in-
dicating which CPUs are capable of performing work at the time of the
getsysinfo() call. Bit mask indicating which CPUs are bound to spe-
cific processes. Bit mask indicating which CPUs are part of a proces-
sor set that is marked for exclusive use by a task. The CPUs might be
idle at the time of the getsysinfo() call. Speed of the CPU in mega-
hertz. struct cpu_info (/usr/include/machine/hal_sysinfo.h) Specifies
the size of the user buffer. Returns the actual number of CPUs present
in the current machine in the form of an int. int Specifies the size
of the user buffer. Returns the name of a start-selected controller.
char buf[SIZE] Specifies the size of the user buffer. Points to the
controller structure and returns the name of that structure in buffer.
Returns the port name of a start-selected controller. char buf[SIZE]
Specifies the size of the user buffer. Points to the controller struc-
ture and returns the port name of that structure in buffer. Returns a
start-selected controller structure, which is defined in <io/common/de-
vdriver.h>. struct controller Specifies the size of the user buffer.
Points to the controller structure and returns that structure in
buffer. Returns the number of the CPU on which the thread is currently
running in the form of a long. long Returns a start-selected dev_mod_t
structure, which is defined in <sys/sysconfig.h>. (This operator does
require any parameter modifications.) Returns the name of a start-se-
lected device. char buf[SIZE] Specifies the size of the user buffer.
Points to the device structure and returns the name of the device
structure in buffer. Returns the port name of a start-selected device.
char buf[SIZE] Specifies the size of the user buffer. Points to the
device structure and returns the port name of the device structure in
buffer. Returns a start-selected device structure which is defined in
<io/common/devdriver.h>. struct device (/usr/include/io/common/dev-
driver.h) Specifies the size of the user buffer. Points to the device
structure and returns that structure in buffer. Returns the dump de-
vice descriptor in the form of a dev_t. dev_t Specifies the size of
the user buffer. Returns the contents of the kernel's dumpinfo struc-
ture (defined in <sys/sysinfo.h>) to allow the savecore utility to re-
trieve namelist information for the currently running kernel. struct
dumpinfo Specifies the size of the user buffer. Returns information
about the number of open files allowed for a process. The process's
utask structure is checked. If the process has enabled support for up
to 64K file descriptors, a 1 is returned. If the process has not en-
abled support for up to 64K file descriptors, a 0 is returned. int
Specifies the size of the user buffer. Returns information concerning
the graphics screens present in the system. This information consists
of the width and height, in pixels, for a graphics device, for example,
1280 x 1024 for the DEC 3000 Model 500 default graphics. The start pa-
rameter allows you to step through all of the screens configured in the
system (as for GSI_GRAPHICTYPE).
The following is an example of a buffer data structure format
that can be used:
buffer
struct {
int width;
int height;
} resolution_buffer = {0, 0}; sizeof(resolution_buffer)
Should be set to zero for the first call. On return, will con-
tain the screen number for which data was returned, or zero (0)
after the data for the last screen present in the system was re-
turned on the previous call. Returns information concerning the
graphics screens present in the system. This information con-
sists of the ROM identifier string associated with a graphics
device, for example, "PMAGB-BA" for the DEC 3000 Model 500 de-
fault graphics. The start parameter allows you to step through
all the screens configured in the system (as for
GSI_GRAPHIC_RES). char buf[SIZE] sizeof(buff) must be at least
8 bytes. The returned value will be exactly 8 bytes and will
not be zero terminated. Should be set to zero for the first
call. On return, will contain the screen number for which data
was returned, or zero (0) after the data for the last screen
present in the system was returned on the previous call. If no
graphic screens are configured in the system, a value of zero
will be returned from the first call. An error of EINVAL will
be returned if start is negative or equal to or greater than the
number of screens actually configured. Returns the mask of the
currently enabled FP exceptions, defined in <machine/fpu.h> (as
"read/write flags"), in the form of a long. long
Note: it is recommended that the C library (libc) routine
ieee_fp_control() be used instead of getsysinfo(). See the
ieee(3) reference page for information on this libc routine.
Returns the values set by the user through the
SSI_IEEE_STATE_AT_SIGNAL setsysinfo(2) routine. See the IEEE
specification for details. long
Note: it is recommended that the libc routine
ieee_get_state_at_signal() be used instead of getsysinfo(). See
the ieee(3) reference page for information on this libc routine.
Returns the settings of the global kernel variables ipforwarding
(in bit 1) and ipgateway (in bit 0) for use by the iprsetup
utility. int Specifies the size of the user buffer. Returns
LMF (License Management Facility) kernel information. LMF defi-
nitions are in the <sys/lmf.h> and <sys/lmfklic.h> header files.
You must specify an arg parameter. The other parameter values
vary depending on what you specify for arg. See the LMF header
files to determine which input parameters are required. Returns
the maximum number of CPUs possible based on current machine in
the form of an int. It is based on the highest numbered CPU
found in the machine's current hardware configuration regardless
of whether the lower numbered slots contain CPU's or are empty.
For example a system containing CPU's in slots 0-3 would have a
GSI_MAX_CPU value of 4. A system containing only two cpus in
slots 0 and 3 (with the other slots being empty) would also have
a GSI_MAX_CPU value of 4. int Specifies the size of the user
buffer. Returns the maximum number of processes allowed for
each user id. int Specifies the size of the user buffer. Re-
turns the minimum alignment required for an address specified
with the MAP_FIXED option in the mmap(2) system call. Returns
the entire NETBLK structure, which is used for the network in-
stallation. struct netblk Specifies the size of buffer. Re-
turns the following two lists for kernels that are bootstrap
linked: A space-separated list of the exact module names and
linker flags used to build the currently running kernel. A
space-separated list of the foreign kit names and devices that
were added to the kernel from the bootstrap command line.
If the currently running kernel is a statically linked kernel,
getsysinfo() returns an empty string. char buf[SIZE] At least
one page (8192 bytes). In some cases one page is too small to
hold the data to be returned. In this case, getsysinfo returns
the EFAULT error code. Retry the operation with two or more
pages. Returns the amount of physical memory, in kilobytes, in
the form of an int. int Specifies the size of the user buffer.
Returns the name of the hardware platform. Example platform
names are AlphaServer 1000 4/200 and DEC3000-M500. char
buf[SIZE] Specifies the size of the user buffer. Returns the
size of nonvolatile RAM (NVRAM) present on systems with PRESTO
installed, in the form of a int. (This operator does require
any parameter modifications.) Returns the processor type, which
is defined in <machine/cpuconf.h>. The processor type is re-
turned in the lower 32 bits of the buffer. The higher 32 bits
are processor dependent (not always zero) and should be masked
off. long Specifies the size of the user buffer. Reserved for
future use. Returns the value of a named console environment
variable. If the variable is disabled due to a known firmware
problem, then errno will contain EACCES. Specifies the location
where the value is returned. A string containing the name of
the console environment variable. If the flag contains
PROM_CONVERT_TYPE (defined in prom.h), then the kernel does
value conversion. Device values are converted from their native
bootstring format to a Digital UNIX device name. For example, a
GSI_PROM_ENV of a device variable like booted_dev will return a
string similar to rz1 instead of SCSI 0 11 0 5 2 0 0. Integer
values are returned in a hexadecimal string format, like 0x3F.
Returns the root device descriptor in the form of a dev_t. long
Specifies the size of the user buffer. Returns the first SCS CI
port number for SCS_SYSID in the form of a u_short. u_short
Specifies the size of the user buffer. Returns the SIA process
authority value in the form of a long. long Specifies the size
of the user buffer. Returns an Assign_entry structure, which is
defined in the <sys/conf.h> header file. struct aentry Speci-
fies the size of the user buffer. Returns the major and minor
numbers of the controlling terminal. dev_t Specifies the size
of the user buffer. Returns the parent UAC setting in buffer.
This setting is determined by the setsysinfo(2) SSIN_UACPARNT
operation, which allows users to specify their own unaligned ac-
cess control (UAC) mechanism. By default, when the operating
system accesses unaligned data, it fixes the unaligned accesses
and displays a warning message so that the programmer can make
the necessary alternations in the code. Meanwhile, however, the
program behaves correctly because the operating system has made
the necessary temporary adjustments. int Specifies the size of
the user buffer. Returns the process UAC setting in buffer.
This setting is determined by the setsysinfo(2) SSIN_UACPROC op-
eration, which allows users to specify their own unaligned ac-
cess control (UAC) mechanism. By default, when the operating
system accesses unaligned data, it fixes the unaligned accesses
and displays a warning message so that the programmer can make
the necessary alternations in the code.
Meanwhile, however, the program behaves correctly because the
operating system has made the necessary temporary adjustments.
int Specifies the size of the user buffer. Returns the system
UAC setting in buffer. This setting is determined by the set-
sysinfo(2) SSIN_UACSYS operation, which allows the superuser to
specify his or her own unaligned access control (UAC) mechanism.
By default, when the operating system accesses unaligned data,
it fixes the unaligned accesses and displays a warning message
so that the programmer can make the necessary alternations in
the code. Meanwhile, however, the program behaves correctly be-
cause the operating system has made the necessary temporary ad-
justments. int Specifies the size of the user buffer. Returns
the parent IEC setting in buffer. This setting is determined by
the setsysinfo(2) SSIN_IECPARNT operation, which allows users to
specify their own instruction emulation control (IEC) mechanism.
By default, the operating system emulates instructions not sup-
ported by the host processor and displays an informational mes-
sage (for the first occurrence only). This allows programs exe-
cuting such instructions to run to completion and produce cor-
rect results. However, increased system overhead may degrade the
program's performance. int Specifies the size of the user
buffer. Returns the process IEC setting in buffer. This set-
ting is determined by the setsysinfo(2) SSIN_IECPROC operation,
which allows users to specify their own instruction emulation
control (IEC) mechanism. By default, the operating system emu-
lates instructions not supported by the host processor and dis-
plays an informational message (for the first occurrence only).
This allows programs executing such instructions to run to com-
pletion and produce correct results. However, increased system
overhead may degrade the program's performance. int Specifies
the size of the user buffer. Returns the system IEC setting in
buffer. This setting is determined by the setsysinfo(2)
SSIN_IECSYS operation, which allows the superuser to specify his
or her own instruction emulation control (IEC) mechanism. By
default, the operating system emulates instructions not sup-
ported by the host processor and displays an informational mes-
sage (for the first occurrence only). This allows programs exe-
cuting such instructions to run to completion and produce cor-
rect results. However, increased system overhead may degrade the
program's performance. int Specifies the size of the user
buffer. Returns the current console device, graphics (0) or al-
ternate (1), in the form of an int. int Specifies the size of
the user buffer. Returns the Workstation Display Type informa-
tion in the form of an int. int Specifies the size of the user
buffer. Returns the Workstation Display Units information in
the form of an int. This value is bit-significant; each "on"
bit indicates the presence of a graphics head. int Specifies
the size of the user buffer. Specifies the name of the console
prom environment value.
EXAMPLES
In the following example, the getsysinfo operation, GSI_UACPARNT, re-
turns the parent UAC setting in the buffer.
#include <sys/sysinfo.h> #include <machine/hal_sysinfo.h> . . . long
buf1; . . . error = getsysinfo(GSI_UACPARNT, &buf1, 4, 0, 0);
The getsysinfo operation GSI_PROM_ENV returns the value of the named
console environment variable. PROM_CONVERT_TYPE indicates that the ker-
nel should do value conversion and MAX_ENVIRON_LENGTH specifies the
name of the console prom environment value.
#include <machine/prom.h>
char evname[]="booted_dev"; char evval[MAX_ENVIRON_LENGTH]; int
start=0,status;
status = getsysinfo (GSI_PROM_ENV, evval, MAX_ENVIRON_LENGTH , &start,
evname, PROM_CONVERT_TYPE);
In the following example, you can print the names of all the configured
busses in the system. You call getsysinfo in a loop to obtain all the
internal bus structures. The first call to getsysinfo passes a -1 as
the value of the start parameter:
#include <sys/sysconfig.h> #include <sys/systeminfo.h> #include
<io/common/devdriver.h> #include <machine/hal_sysinfo.h>
main() {
printf("Exercising getsysinfo\n\n");
print_bus(-1); }
print_bus(caddr_t busaddr) { struct bus bus; char bus_name[20]; int
status;
do {
if (getsysinfo(GSI_BUS_STRUCT, &bus, sizeof(struct bus),
busaddr, 0) == -1) {
break;
}
/*** note busaddr is now a valid bus address ***/
if (bus.alive & ALV_ALIVE) {
bzero(bus_name, sizeof(bus_name));
if ( getsysinfo(GSI_BUS_NAME, bus_name, sizeof(bus_name),
busaddr, 0) != -1) {
printf("bus_name = %s", bus_name);
printf("bus_num = %d\n", bus.bus_num);
}
/*** print all buses connected to this bus ***/
if (bus.bus_list) {
print_bus( (caddr_t)bus.bus_list);
}
}
/*** next bus in topology ***/
} while(busaddr = (caddr_t)bus.nxt_bus);
}
RETURN VALUES
Upon successful completion, the getsysinfo system call returns a value
indicating the number of requested items stored in buffer. If the in-
formation requested by op is not available, getsysinfo returns a (0)
zero. Otherwise, -1 is returned, and the global variable errno is set
to indicate the error.
ERRORS
Either buffer, start, or arg causes an illegal address to be refer-
enced. The op parameter is invalid. Permission is denied for the op-
eration requested.
RELATED INFORMATION
setsysinfo(2) delim off
getsysinfo(2)