2
#include <stdlib.h> /* atol */
3
#include <string.h> /* strstr */
4
#include <ctype.h> /* isdigit */
5
#include <sys/stat.h> /* stat */
6
#include <unistd.h> /* stat */
9
#include "include/uname.h"
11
/* Not supported under solaris yet */
12
int get_uptime (void) {
15
// float uptime_seconds;
20
/* Based on code contributed by Anders Rundegren <anders@rundegren.com> */
21
void get_load_average(float *load_1,float *load_5,float *load_15) {
24
char throw_away[BUFSIZ];
26
fff=popen("w | head -n 1","r");
28
fscanf(fff,"%64s %64s %64s %64s %64s %64s %64s %f %f %f",
29
throw_away,throw_away,throw_away,
30
throw_away,throw_away,throw_away,throw_away,
31
load_1, load_5, load_15);
36
int get_os_info(struct os_info_type *os_info) {
37
int result,i,after_point=0,j=0;
38
char temp_version[33];
40
result=uname_get_os_info(os_info);
43
/* This won't work with pre-Solaris versions */
44
strncpy(os_info->os_name,"Solaris",8);
47
while(i<strlen(os_info->os_version)) {
49
temp_version[j]=os_info->os_version[i];
53
if (os_info->os_version[i]=='.') {
59
strncpy(os_info->os_version,temp_version,SYSINFO_OS_VERSION_SIZE);
64
char *get_host_name(char *hostname,char *domain) {
65
return uname_get_host_name(hostname,domain);
70
long int get_mem_size(void) {
76
pipe=popen("/usr/sbin/prtconf","r");
77
fgets(string,BUFSIZ,pipe); /* skip line */
78
fscanf(pipe,"%*s %*s %i",&memsize);
84
extern float external_bogomips(void);
87
int get_cpu_info(struct cpu_info_type *cpu_info) {
94
cpu_info->bogomips=external_bogomips();
96
pipe=popen("/usr/sbin/psrinfo","r");
97
while(fgets(string,BUFSIZ,pipe)!=NULL) {
102
cpu_info->num_cpus=cpus;
103
strncpy(cpu_info->chip_vendor,"SPARC",33);
105
pipe=popen("uname -r","r");
106
fscanf(pipe,"%f",&version);
109
/* Solaris 9 psrinfo doesn't support -p option */
111
/* don't support -p option, do something else */
112
pipe=popen("/usr/sbin/psrinfo -v","r");
113
fgets(string,BUFSIZ,pipe); /* ignore line */
114
fgets(string,BUFSIZ,pipe); /* ignore line */
115
fscanf(pipe,"%*s %64s %*s %*s %*s %f",cpu_info->chip_type,
116
&cpu_info->megahertz);
120
/* we support -p option... */
121
pipe=popen("/usr/sbin/psrinfo -p -v","r");
122
fgets(string,BUFSIZ,pipe); /* ignore line */
123
fscanf(pipe,"%64s %*s %*s %*s %f",cpu_info->chip_type,
124
&cpu_info->megahertz);