ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/libstatgrab/src/libstatgrab/statgrab.h
Revision: 1.1
Committed: Tue Feb 18 19:28:30 2003 UTC (21 years, 3 months ago) by pajs
Content type: text/plain
Branch: MAIN
Log Message:
The new revesion of libstatgrab, which is a complete rewrite essentially.

Firstly the data is now returned in structures rather than xml strings.
The structures returned are all static, so what ever calls the library doesn't
have to deal with the memory management of it.

Secondly the general efficency of the code is now significantly faster. It no
longer needs to fork a process, connect file descriptors and run ps, and then
parse the output like it used to. Now it walks /proc and reads it into the
correct data structures. This works without needing any special privilages, so
it can still run as a normal mortal without needing any special group. (Freebsd
will be an exception to this, but this commit only works with solaris, and that
requires nothing special)

Thridly it has more functionality than it used to. It not for instance is capable
of showing network traffic stats, (although its not completely finished yet). It
also in the near future be able to disk io stats as well. Several bug fixes have
been aplied over the original version. For example the cpu_stats used to only reply
the stats for the first processor. This now will report the total stats of all of
them. Paging stats will also be fixed, but haven't been done yet.

File Contents

# User Rev Content
1 pajs 1.1 /*
2     * i-scream central monitoring system
3     * http://www.i-scream.org.uk
4     * Copyright (C) 2000-2002 i-scream
5     *
6     * This program is free software; you can redistribute it and/or
7     * modify it under the terms of the GNU General Public License
8     * as published by the Free Software Foundation; either version 2
9     * of the License, or (at your option) any later version.
10     *
11     * This program is distributed in the hope that it will be useful,
12     * but WITHOUT ANY WARRANTY; without even the implied warranty of
13     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14     * GNU General Public License for more details.
15     *
16     * You should have received a copy of the GNU General Public License
17     * along with this program; if not, write to the Free Software
18     * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19     */
20    
21     #include <sys/types.h>
22    
23     typedef struct{
24     uint_t user;
25     uint_t kernel;
26     uint_t idle;
27     uint_t iowait;
28     uint_t swap;
29     uint_t nice;
30     uint_t total;
31     time_t systime;
32     }cpu_states_t;
33    
34     typedef struct{
35     float user;
36     float kernel;
37     float idle;
38     float iowait;
39     float swap;
40     float nice;
41     time_t time_taken;
42     }cpu_percent_t;
43    
44     typedef struct{
45     long long total;
46     long long free;
47     long long used;
48     long long cache;
49     }mem_stat_t;
50    
51     typedef struct{
52     double min1;
53     double min5;
54     double min15;
55     }load_stat_t;
56    
57     #ifdef SOLARIS
58     #define MAX_LOGIN_NAME_SIZE 8
59     #endif
60    
61     typedef char name[MAX_LOGIN_NAME_SIZE+1];
62    
63     typedef struct{
64     name *name_list;
65     int num_entries;
66     }user_stat_t;
67    
68     typedef struct{
69     long long total;
70     long long used;
71     long long free;
72     }swap_stat_t;
73    
74     typedef struct{
75     char *os_name;
76     char *os_release;
77     char *os_version;
78     char *platform;
79     char *hostname;
80     time_t uptime;
81     }general_stat_t;
82    
83     typedef struct {
84     char *device_name;
85     char *fs_type;
86     char *mnt_point;
87     long long size;
88     long long used;
89     long long avail;
90     long long total_inodes;
91     long long used_inodes;
92     long long free_inodes;
93     }disk_stat_t;
94    
95     typedef struct{
96     int total;
97     int running;
98     int sleeping;
99     int stopped;
100     int zombie;
101     }process_stat_t;
102    
103     typedef struct{
104     char *interface_name;
105     long long tx;
106     long long rx;
107     time_t systime;
108     }network_stat_t;
109    
110     typedef struct{
111     long pgin;
112     long pgout;
113     time_t systime;
114     }page_stat_t;
115    
116     cpu_states_t *get_cpu_totals();
117     cpu_states_t *get_cpu_diff();
118     cpu_percent_t *cpu_percent_usage();
119    
120     mem_stat_t *get_memory_stats();
121    
122     load_stat_t *get_load_stats();
123    
124     user_stat_t *get_user_stats();
125    
126     swap_stat_t *get_swap_stats();
127    
128     general_stat_t *get_general_stats();
129    
130     disk_stat_t *get_disk_stats(int *entries);
131    
132     process_stat_t *get_process_stats();
133    
134     network_stat_t *get_network_stats(int *entries);