Informacje dotyczące systemu i czasu
Zadeklarowane w: be/kernel/OS.h
Biblioteka: libroot.so
Następujące funkcje, typy i struktury są użyte do udzielania podstawowych informacji
o systemie, takich jak liczba procesorów, kiedy było zbudowane jądro, jaki jest
czas bieżący i czy Twój komputer jest w płomieniach.
Funkcje
i struktury informacji systemowych
| get_system_info() , system_info
, cpu_info , cpu_type , platform_type
|
status_t get_system_info(system_info
*info) |
struct {} system_info |
struct {} cpu_info |
enum cpu_type |
enum platform_type |
|
Funkcja get_system_info() mówi Ci więcej niż chcesz wiedzieć
o fizycznych pojemnościach i innych danych statystycznych Twojego systemu operacyjnego.
Ta funkcja pobiera wskaźnik do przydzielonej struktury system_info
i wypełnia go danymi.
typedef struct {
machine_id id;
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 |
|
Struktura system_info przechowuje informację o maszynie i
stanie jądra. Polami struktury są:
- id. 64-bit liczba (kodowana jako dwie int32),
która unikalnie identyfikuje tą maszynę.
- boot_time. Czas w jakim komputer ostatni był uruchomiony,
mierzony w mikrosekundach od 1 stycznia 1970 roku.
- cpu_count. Liczba procesorów.
- cpu_type i cpu_revision. Stałe typu i rewizji
(wersji) procesorów.
- cpu_infos. Tablica struktur cpu_info,
po jednej na każdy procesor.
- cpu_clock_speed. Szybkość (w Hz) z którą działają procesory.
- bus_clock_speed. Szybkość (in Hz) z którą działa szyna.
- platform_type. Jedna ze stałych typu platformy.
- max_resources i used_resources.
Pięć par pól max/used podających całkowitą
liczbę stron pamięci, semaforów i temu podobnych zasobów, które system może
stworzyć i liczbę tych zasobów, które są obecnie w użyciu.
- page_faults. Krotność czytania przez system strony pamięci
w RAM'ie z powodu braku strony.
- kernel_name. Nazwa (liść) jądra.
- kernel_build_date i kernel_build_time. Napis
czytelny dla człowieka, który mówi Ci kiedy jądro zostało zbudowane.
- kernel_version. Numer, który identyfikuje wersję jądra.
Strukturą cpu_info jest:
typedef struct {
bigtime_t active_time;
} cpu_info; |
|
- active_time jest liczbą mikrosekund spędzonych na wykonywaniu
użytecznej pracy od chwili uruchomienia maszyny.
Odpowiednio, B_MAX_CPU_COUNT jest obecnie równe 8.
Typ machine_id jest następujący:
typedef int32 machine_id[2]; |
|
Stałymi cpu_type są:
typedef enum {
B_CPU_PPC_601 = 1,
B_CPU_PPC_603 = 2,
B_CPU_PPC_603e = 3,
B_CPU_PPC_604 = 4,
B_CPU_PPC_604e = 5,
B_CPU_PPC_686 = 13,
B_CPU_AMD_29K,
B_CPU_X86,
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
} cpu_type; |
|
Stałymi platform_type są:
typedef enum {
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
} platform_type; |
|
Nie spróbowałem tego, ale tak naprawdę nie myślę, że BeOS pracowałby całkiem
dobrze na Timex Sinclair (patrz do is_computer_on_fire()).
get_system_info() zawsze zwraca B_OK.
is_computer_on()
int32 is_computer_on(void) |
|
Zwraca 1 jeśli komputer jest właczony. Jeśli komputer nie jest włączony, zwracana
wartość może być nieokreślona.
is_computer_on_fire()
double is_computer_on_fire(void) |
|
Zwraca temperaturę płyty głównej, jeśli komputer jest aktualnie w płomieniach.
Tlenie nie liczy się. Jeśli komputer nie jest w płomieniach, funkcja zwraca
jakąś inną wartość.
Funkcje czasu
real_time_clock()
,
real_time_clock_usecs()
,
set_real_time_clock()
uint32 real_time_clock (void) |
bigtime_t real_time_clock_usecs
(void) |
void set_real_time_clock (int32
secs_since_jan1_1970) |
|
real_time_clock() zwraca liczbe sekund, które upłynęły od
1 stycznia 1970 roku.
real_time_clock_usecs() mierzy tę samą rozpiętość czasu w
mikrosekundach.
set_real_time_clock() ustawia wartość, do której odnoszą się
dwie poprzednie funkcje.
system_time()
bigtime_t system_time(void) |
|
Zwraca liczbę mikrosekund, które upłynęły odkąd komputer został uruchominy.
Be Book,
...w ślicznym HTML...
dla BeOS wydanie 5
Copyright © 2000 Be, Inc. Wszelkie prawa zastrzeżone.