The Be Book The Kernel Kit The Kernel Kit Index

System Information

Declared in:  be/kernel/OS.h
Library: libroot.so
Summary:  more...


The following functions, types, and structures convey information about the system, such as the number of CPUs, when the kernel was built, and whether your computer is on fire.


System Info Functions


get_system_info()

status_t get_system_info(system_info *info)

The get_system_info() function tells you more than you want to know about the physical capacities of your computer and other statistics of your operating system. The function copies this information into the system_info argument info. You must allocate info before passing it in.

RETURN CODES

get_system_info() always returns


is_computer_on()

int32 is_computer_on(void)

Returns 1 if the computer is on. If the computer isn't on, the value returned by this function is undefined.


is_computer_on_fire()

double is_computer_on_fire(void)

Returns the temperature of the motherboard if the computer is currently on fire. If the computer isn't on fire, the function returns some other value.


System Info Structures and Constants


cpu_info

typedef struct {
      bigtime_t active_time;
      } cpu_info

The cpu_info structure provides information about your computer's CPU(s). You retrieve the structure by looking in the cpu_infos field of the system_info structure. The cpu_infos field is an array that contains one cpu_info structure for each CPU on your motherboard.

Field Meaning
active_time The number of microseconds the CPU has spent doing useful work (i.e. not busy waiting) since the machine was booted.


cpu_type

typedef enum cpu_types {
      B_CPU_PPC_601,
      B_CPU_PPC_603,
      B_CPU_PPC_603e,
      B_CPU_PPC_604,
      B_CPU_PPC_604e,
      B_CPU_PPC_750,
      B_CPU_PPC_686,
      B_CPU_AMD_29K,
      B_CPU_X86, Obsolete
      
B_CPU_MC6502,
      B_CPU_Z80,
      B_CPU_ALPHA,
      B_CPU_MIPS,
      B_CPU_HPPA,
      B_CPU_M68K,
      B_CPU_ARM,
      B_CPU_SH,
      B_CPU_SPARC,
      
      B_CPU_INTEL_X86 = 0x1000,
      
B_CPU_INTEL_PENTIUM,
      B_CPU_INTEL_PENTIUM75,
      B_CPU_INTEL_PENTIUM_486_OVERDRIVE,
      B_CPU_INTEL_PENTIUM_MMX,
      B_CPU_INTEL_PENTIUM_MMX_MODEL_4,
      B_CPU_INTEL_PENTIUM_MMX_MODEL_8,
      B_CPU_INTEL_PENTIUM75_486_OVERDRIVE,
      B_CPU_INTEL_PENTIUM_PRO,
      B_CPU_INTEL_PENTIUM_II,
      B_CPU_INTEL_PENTIUM_II_MODEL_3,
      B_CPU_INTEL_PENTIUM_II_MODEL_5,
      B_CPU_INTEL_CELERON,
      B_CPU_INTEL_PENTIUM_III,
      
      B_CPU_AMD_X86 = 0x1100,
      B_CPU_AMD_K5_MODEL0,
      B_CPU_AMD_K5_MODEL1,
      B_CPU_AMD_K5_MODEL2,
      B_CPU_AMD_K5_MODEL3,
      B_CPU_AMD_K6_MODEL6,
      B_CPU_AMD_K6_MODEL7,
      B_CPU_AMD_K6_MODEL8,
      B_CPU_AMD_K6_2,
      B_CPU_AMD_K6_MODEL9,
      B_CPU_AMD_K6_III,
      B_CPU_AMD_ATHLON_MODEL1,
      
      B_CPU_CYRIX_X86 = 0x1200,
      B_CPU_CYRIX_GXm,
      B_CPU_CYRIX_6x86MX,
      
      B_CPU_IDT_X86 = 0x1300,
      B_CPU_IDT_WINCHIP_C6,
      B_CPU_IDT_WINCHIP_2,
      
      B_CPU_RISE_X86 = 0x1400,
      B_CPU_RISE_mP6
      
} cpu_type;

The B_X86_CPU constant is obsolete. All x86 CPUs are represented by specific vendor/model constants.

These constants represents different CPU vendors and models. To retrieve the constant that represents the CPU(s) that your computer uses, look in the cpu_type field of the system_info structure.

Note that the x86 types are grouped by vendor, where the vendor is identified by the high word, and the model by the low word. Each vendor has its own cpu_type constant, as indicated by the explicit values in the list above. If you're only interested in the vendor, mask the cpu_type value with B_CPU_X86_VENDOR_MASK, thus:

system_info sysinfo;
get_system_info( &sysinfo );

switch ( sysinfo.cpu_type & B_CPU_X86_VENDOR_MASK ) {
   case B_CPU_INTEL_X86: ...
   case B_CPU_AMD_X86: ...
   case B_CPU_CYRIX_x86: ...
   case B_CPU_IDT_X86: ...
   case B_CPU_RISE_X86: ...
   default:
   /* Not x86. */
}


B_CPU_X86_VENDOR_MASK

B_CPU_X86_VENDOR_MASK

You mask your machine's cpu_type value with this constant to retrieve the CPU's vendor id (which is also a cpu_type value). If the CPU isn't an breed of x86, applying the mask will yield 0. See the cpu_type description for an example.


machine_id

typedef int32 machine_id[2]; Currently unused

machine_id is a 64-bit number (encoded as two 32-bit numbers) that uniquely identifies this specific computer. The id number is returned as the id field (currently unused) of the system_info structure.


B_MAX_CPU_COUNT

B_MAX_CPU_COUNT

This constant is set to the maximum number of CPUs that the BeOS can take advantage of. The number is machine-dependent.


platform_type

typedef enum platform_types {
      B_BEBOX_PLATFORM = 0,
      B_MAC_PLATFORM,
      B_AT_CLONE_PLATFORM,
      B_ENIAC_PLATFORM,
      B_APPLE_II_PLATFORM,
      B_CRAY_PLATFORM,
      B_LISA_PLATFORM,
      B_TI_994A_PLATFORM,
      B_TIMEX_SINCLAIR_PLATFORM,
      B_ORAC_1_PLATFORM,
      B_HAL_PLATFORM,
      B_BESM_6_PLATFORM,
      B_MK_61_PLATFORM,
      B_NINTENDO_64_PLATFORM
      
} platform_type;

These constants represent the various computer platforms that the BeOS does, has, should, might, or might not run on. To retrieve the constant for the machine that you're running on, look in the platform_type field of the system_info structure.


system_info

typedef struct {
      machine_id id; Currently unused
      
bigtime_t boot_time;
      int32 cpu_count;
      cpu_type cpu_type;
      int32 cpu_revision;
      cpu_info cpu_infos[B_MAX_CPU_NUM];   
      int64 cpu_clock_speed;
      int64 bus_clock_speed;
      platform_type platform_type;
      int32 max_pages;
      int32 used_pages;
      int32 page_faults;
      int32 max_sems;
      int32 used_sems;
      int32 max_ports;
      int32 used_ports;
      int32 max_threads;
      int32 used_threads;
      int32 max_teams;
      int32 used_teams;
      char kernel_name[B_FILE_NAME_LENGTH];
      char kernel_build_date[B_OS_NAME_LENGTH];
      char kernel_build_time[B_OS_NAME_LENGTH];
      int64 kernel_version;
      } system_info;

The system_info structure describes your computer's hardware and operating system, and provides information about the availability of kernel resources (such as threads and ports). You retrieve a system_info structure through the get_system_info() function.

Field Meaning
id A 64-bit number (encoded as two int32s) that uniquely identifies this machine. Currently unsed.
boot_time The time at which the computer was last booted, measured in microseconds since January 1st, 1970. You can also get this information through system_time().
cpu_count The number of CPUs on your computer's motherboard.
cpu_type A constant that represents the CPU(s) make and model.
cpu_revision The revision number of the CPU(s).
cpu_infos An array of cpu_info structures, one for each CPU.
cpu_clock_speed The speed (in Hz) at which the CPU(s) operate.
bus_clock_speed The speed (in Hz) at which the bus operates.
platform_type The platform type constant that reprsents your computer.
max_resource
used_resource
These fields give the total number of RAM pages, semaphores, and so on, that the system can create, and the number that are currently in use.
page_faults The number of times the system has read a page of memory into RAM due to a page fault.
kernel_name The filename of the kernel (the leaf name, not the path).
kernel_build_date Fixed-width string that gives the date that the kernel was built; for example:
Jun 5 1999
kernel_build_time    Fixed-width string that gives the time of day that the kernel was built; for example:
10:02:16
kernel_version    A Be-assigned number that identifies the kernel version.


The Be Book The Kernel Kit The Kernel Kit Index

The Be Book,
...in lovely HTML...
for BeOS Release 5.

Copyright © 2000 Be, Inc. All rights reserved..