Index Index for
Section 2
Index Alphabetical
listing for G
Bottom of page Bottom of
page

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

op 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. buffer Specifies the location where the system information is returned. Its data type depends upon the operation you specify. nbytes Defines the size of buffer. start 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 information about all the system structures specified by op. See the individual op descriptions to determine how to initialize the start parameter. The getsysinfo() call sets the start parameter to 0 (zero) when all the system information you requested has been retrieved. arg Used by some op values to specify additional information. The data type of these optional parameter depends upon which operation is specified. If an operation requires no arg parameter, omit this parameter or set it 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. GSI_BOOTDEV Returns the BOOTDEV string, which is used for the installation. (This operator does not require any parameter modifications.) GSI_BOOTEDFILE Returns the name of the file from which the currently running kernel was booted. This file might be a statically linked executable, such as vmunix, or a bootstrap linker directive file, such as /etc/sysconfigtab. (See also the description of the GSI_MODULE_LIST operation.) buffer char buf[SIZE] nbytes Must be greater than or equal to 80. GSI_BOOTTYPE 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). buffer char buf[SIZE] nbytes Must be greater than or equal to 10. GSI_BUS_NAME Returns the name of a start-selected bus. buffer char buf[SIZE] nbytes Specifies the size of the user buffer. start If you set start to -1, the name of the nexus iobus is returned in buffer. Otherwise, start points to the bus address and returns the nexus iobus name in buffer. GSI_BUS_PNAME Returns the port name of a start-selected bus. buffer char buf[SIZE] nbytes Specifies the size of the user buffer. start 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 returns the port name of the nexus iobus in buffer. GSI_BUS_STRUCT Returns a start-selected bus structure, which is defined in <io/common/devdriver.h>. buffer struct bus (/usr/include/io/common/devdriver.h) nbytes Specifies the size of the user buffer. start If you set start to -1, the structure of the nexus iobus is returned in buffer. Otherwise, start points to the bus structure and returns the structure of the nexus iobus in buffer. GSI_BYTEWORD_IO 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. buffer int nbytes Specifies the size of the user buffer. GSI_CLK_TCK Returns the system clock's ticks-per-second value in the form of an int. (This operator does not require any parameter modifications.) GSI_COMPAT_MOD Returns the address of the start-selected binary compatibility module's configure function in the form of a pointer. buffer struct compat_mod which is defined in <sys/systm.h> nbytes Specifies size of compat_mod structure start Points to the compat_mod structure and returns the address of the binary compatibility module's configure function in buffer. GSI_CPU Returns the CPU type (from the kernel cpu global variable) in the form of an int. buffer int nbytes Must be no less than the size of an int. GSI_CPU_INFO Returns CPU information. GSI_CPU_INFO returns data on a partition basis. On a partitioned system with 8 CPUs GSI_CPU_INFO returns only the information for CPUs assigned to the partition. Use GSI_CPU_STATE to return CPU information for the entire system (all partitions). The following data is returned: · 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/cpuconf.h header file. · The highest available CPU number plus one. For example, if your system contains three CPUs numbered 0, 2, and 4, the value is 5. · Bit mask indicating which CPU numbers are currently mapped to physical CPUs. For example, a value of 0x15 indicates that the system contains CPUs numbered 0, 2, and 4. · Bit mask indicating which CPUs are capable of performing work at the time of the getsysinfo() call. · Bit mask indicating which CPUs are bound to specific processes. · Bit mask indicating which CPUs are part of a processor 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 megahertz. This value might be inaccurate if the system architecture supports mixed-speed CPUs. buffer struct cpu_info (/usr/include/machine/hal_sysinfo.h) nbytes Specifies the size of the user buffer. GSI_CPU_STATE GSI_CPU_STATE shows data for all CPUs on a partitioned system. (Using hardware partitioning.) See GSI_CPU_INFO, which returns CPU information by partition. The following information is returned: · The maximum number of CPUs supported by the system architecture. · The number of the CPU that is the current primary processor. · Whether the CPU can be the primary processor. · CPU sets that have kernel structs allocated. · The CPU slots that are currently powered up. · CPU sets that are marked as present by the system firmware. · CPU sets that are marked as available by the system firmware. · CPU sets that are currently running (online). · CPU sets that have threads bound to them. · CPU sets that have threads exclusively bound. · Whether the CPU is registered with HWC. · Whether the CPU is able to take interrupts. buffer struct cpu_state (/usr/include/machine/hal_sysinfo.h) nbytes Specifies the size of the user buffer. GSI_CPUS_IN_BOX Returns the actual number of CPUs present in the current machine in the form of an int. buffer int nbytes Specifies the size of the user buffer. GSI_CTLR_NAME Returns the name of a start-selected controller. buffer char buf[SIZE] nbytes Specifies the size of the user buffer. start Points to the controller structure and returns the name of that structure in buffer. GSI_CTLR_PNAME Returns the port name of a start-selected controller. buffer char buf[SIZE] nbytes Specifies the size of the user buffer. start Points to the controller structure and returns the port name of that structure in buffer. GSI_CTLR_STRUCT Returns a start-selected controller structure, which is defined in <io/common/devdriver.h>. buffer struct controller nbytes Specifies the size of the user buffer. start Points to the controller structure and returns that structure in buffer. GSI_CURRENT_CPU Returns the number of the CPU on which the thread is currently running in the form of a long. buffer long GSI_DEV_MOD Returns a start-selected dev_mod_t structure, which is defined in <sys/sysconfig.h>. (This operator does require any parameter modifications.) GSI_DEV_NAME Returns the name of a start-selected device. buffer char buf[SIZE] nbytes Specifies the size of the user buffer. start Points to the device structure and returns the name of the device structure in buffer. GSI_DEV_PNAME Returns the port name of a start-selected device. buffer char buf[SIZE] nbytes Specifies the size of the user buffer. start Points to the device structure and returns the port name of the device structure in buffer. GSI_DEV_STRUCT Returns a start-selected device structure which is defined in <io/common/devdriver.h>. buffer struct device (/usr/include/io/common/devdriver.h) nbytes Specifies the size of the user buffer. start Points to the device structure and returns that structure in buffer. GSI_DUMPDEV Returns the dump device descriptor in the form of a dev_t. buffer dev_t nbytes Specifies the size of the user buffer. GSI_DUMPINFO Returns the contents of the kernel's dumpinfo structure (defined in <sys/sysinfo.h>) to allow the savecore utility to retrieve namelist information for the currently running kernel. buffer struct dumpinfo nbytes Specifies the size of the user buffer. GSI_FD_NEWMAX 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 enabled support for up to 64K file descriptors, a 0 is returned. buffer int nbytes Specifies the size of the user buffer. GSI_GRAPHIC_RES 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 parameter 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; nbytes sizeof(resolution_buffer) start 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. GSI_GRAPHICTYPE Returns information concerning the graphics screens present in the system. This information consists of the ROM identifier string associated with a graphics device, for example, "PMAGB-BA" for the DEC 3000 Model 500 default graphics. The start parameter allows you to step through all the screens configured in the system (as for GSI_GRAPHIC_RES). buffer char buf[SIZE] nbytes sizeof(buff) must be at least 8 bytes. The returned value will be exactly 8 bytes and will not be zero terminated. start 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. GSI_IEEE_FP_CONTROL Returns the mask of the currently enabled FP exceptions, defined in <machine/fpu.h> (as "read/write flags"), in the form of a long. buffer 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. GSI_IEEE_STATE_AT_SIGNAL Returns the values set by the user through the SSI_IEEE_STATE_AT_SIGNAL setsysinfo(2) routine. See the IEEE specification for details. buffer 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. GSI_IPRSETUP Returns the settings of the global kernel variables ipforwarding (in bit 1) and ipgateway (in bit 0) for use by the iprsetup utility. buffer int nbytes Specifies the size of the user buffer. GSI_LMF Returns LMF (License Management Facility) kernel information. LMF definitions 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. GSI_MAX_CPU 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. buffer int nbytes Specifies the size of the user buffer. GSI_MAX_UPROCS Returns the maximum number of processes allowed for each user id. buffer int nbytes Specifies the size of the user buffer. GSI_MMAPALIGN Returns the minimum alignment required for an address specified with the MAP_FIXED option in the mmap(2) system call. GSI_NETBLK Returns the entire NETBLK structure, which is used for the network installation. buffer struct netblk nbytes Specifies the size of buffer. GSI_MODULE_LIST Returns 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. buffer char buf[SIZE] nbytes 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. GSI_PHYSMEM Returns the amount of physical memory, in kilobytes, in the form of an int. buffer long nbytes Specifies the size of the user buffer. GSI_PHYSMEM_START Returns the physical memory starting address in the form of an LONG. Physical memory will have a nonzero starting address for any secondary partition (that is, where partition number > 0). buffer long nbytes Specifies the size of the user buffer. GSI_PLATFORM_NAME Returns the name of the hardware platform. Example platform names are AlphaServer 1000 4/200 and DEC3000-M500. buffer char buf[SIZE] nbytes Specifies the size of the user buffer. GSI_PRESTO Returns the size of nonvolatile RAM (NVRAM) present on systems with PRESTO installed, in the form of a int. (This operator does not require any parameter modifications.) GSI_PROC_TYPE Returns the processor type, which is defined in <machine/cpuconf.h>. The processor type is returned in the lower 32 bits of the buffer. The higher 32 bits are processor dependent (not always zero) and should be masked off. buffer long nbytes Specifies the size of the user buffer. GSI_PROG_ENV Reserved for future use. GSI_PROM_ENV 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. buffer Specifies the location where the value is returned. arg A string containing the name of the console environment variable. flag 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 Tru64 UNIX device name. For example, a GSI_PROM_ENV of a device variable like booted_dev will return a string similar to dsk1 instead of SCSI 0 11 0 5 2 0 0. Integer values are returned in a hexadecimal string format, like 0x3F. GSI_ROOTDEV Returns the root device descriptor in the form of a dev_t. buffer long nbytes Specifies the size of the user buffer. GSI_SCS_SYSID Returns the first SCS CI port number for SCS_SYSID in the form of a u_short. buffer u_short nbytes Specifies the size of the user buffer. GSI_SIA_PROC_CRED_VAL Returns the SIA process authority value in the form of a long. buffer long nbytes Specifies the size of the user buffer. GSI_STATIC_DEF Returns an Assign_entry structure, which is defined in the <sys/conf.h> header file. buffer struct aentry nbytes Specifies the size of the user buffer. GSI_TTYP Returns the major and minor numbers of the controlling terminal. buffer dev_t nbytes Specifies the size of the user buffer. GSI_UACPARNT 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 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 because the operating system has made the necessary temporary adjustments. buffer int nbytes Specifies the size of the user buffer. GSI_UACPROC Returns the process UAC setting in buffer. This setting is determined by the setsysinfo(2) SSIN_UACPROC operation, which allows users to specify their 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 because the operating system has made the necessary temporary adjustments. buffer int nbytes Specifies the size of the user buffer. GSI_UACSYS Returns the system UAC setting in buffer. This setting is determined by the setsysinfo(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 because the operating system has made the necessary temporary adjustments. buffer int nbytes Specifies the size of the user buffer. GSI_IECPARNT 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 supported by the host processor and displays an informational message (for the first occurrence only). This allows programs executing such instructions to run to completion and produce correct results. However, increased system overhead may degrade the program's performance. buffer int nbytes Specifies the size of the user buffer. GSI_IECPROC Returns the process IEC setting in buffer. This setting 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 emulates instructions not supported by the host processor and displays an informational message (for the first occurrence only). This allows programs executing such instructions to run to completion and produce correct results. However, increased system overhead may degrade the program's performance. buffer int nbytes Specifies the size of the user buffer. GSI_IECSYS 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 supported by the host processor and displays an informational message (for the first occurrence only). This allows programs executing such instructions to run to completion and produce correct results. However, increased system overhead may degrade the program's performance. buffer int nbytes Specifies the size of the user buffer. GSI_WSD_CONS Returns the current console device, graphics (0) or alternate (1), in the form of an int. buffer int nbytes Specifies the size of the user buffer. GSI_WSD_TYPE Returns the Workstation Display Type information in the form of an int. buffer int nbytes Specifies the size of the user buffer. GSI_WSD_UNITS 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. buffer int nbytes Specifies the size of the user buffer. MAX_ENVIRON_LENGTH arg Specifies the name of the console prom environment value.

RETURN VALUES

Upon successful completion, the getsysinfo system call returns a value indicating the number of requested items stored in buffer. If the information 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

[EFAULT] Either buffer, start, or arg causes an illegal address to be referenced. [EINVAL] The op parameter is invalid. [EPERM] Permission is denied for the operation requested.

EXAMPLES

1. In the following example, the getsysinfo operation, GSI_UACPARNT, returns 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); 2. In the following example, the getsysinfo operation GSI_PROM_ENV returns the value of the named console environment variable. PROM_CONVERT_TYPE indicates that the kernel 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); 3. 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&bsol;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); }

SEE ALSO

setsysinfo(2)

Index Index for
Section 2
Index Alphabetical
listing for G
Top of page Top of
page