ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/libstatgrab/src/libstatgrab/statgrab.h
Revision: 1.55
Committed: Wed Jul 13 09:31:54 2005 UTC (18 years, 10 months ago) by tdb
Content type: text/plain
Branch: MAIN
Changes since 1.54: +4 -1 lines
Log Message:
Change the name of the duplex value from "dup" to "duplex". This will
break the ABI, but we're changing the fs stats anyway. The API change
is minimal, so hopefully won't affect too many people.

File Contents

# User Rev Content
1 tdb 1.22 /*
2 tdb 1.34 * i-scream libstatgrab
3 tdb 1.13 * http://www.i-scream.org
4 tdb 1.22 * Copyright (C) 2000-2004 i-scream
5 pajs 1.1 *
6 tdb 1.22 * This library is free software; you can redistribute it and/or
7     * modify it under the terms of the GNU Lesser General Public
8     * License as published by the Free Software Foundation; either
9     * version 2.1 of the License, or (at your option) any later version.
10 pajs 1.1 *
11 tdb 1.22 * This library is distributed in the hope that it will be useful,
12 pajs 1.1 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 tdb 1.22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14     * Lesser General Public License for more details.
15 pajs 1.1 *
16 tdb 1.22 * You should have received a copy of the GNU Lesser General Public
17     * License along with this library; if not, write to the Free Software
18     * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
19     * 02111-1307 USA
20 tdb 1.23 *
21 tdb 1.55 * $Id: statgrab.h,v 1.54 2004/11/01 18:30:17 tdb Exp $
22 pajs 1.1 */
23    
24 tdb 1.50 #ifndef STATGRAB_H
25     #define STATGRAB_H
26    
27 pajs 1.21 #include <sys/types.h>
28    
29 ats 1.33 /* FIXME typedefs for 32/64-bit types */
30     /* FIXME maybe tidy up field names? */
31     /* FIXME comments for less obvious fields */
32    
33     int sg_init(void);
34     int sg_drop_privileges(void);
35 tdb 1.36
36     typedef enum {
37 tdb 1.38 SG_ERROR_NONE = 0,
38 tdb 1.42 SG_ERROR_ASPRINTF,
39     SG_ERROR_DEVSTAT_GETDEVS,
40     SG_ERROR_DEVSTAT_SELECTDEVS,
41     SG_ERROR_ENOENT,
42     SG_ERROR_GETIFADDRS,
43     SG_ERROR_GETMNTINFO,
44     SG_ERROR_GETPAGESIZE,
45     SG_ERROR_KSTAT_DATA_LOOKUP,
46     SG_ERROR_KSTAT_LOOKUP,
47     SG_ERROR_KSTAT_OPEN,
48     SG_ERROR_KSTAT_READ,
49     SG_ERROR_KVM_GETSWAPINFO,
50     SG_ERROR_KVM_OPENFILES,
51 tdb 1.39 SG_ERROR_MALLOC,
52     SG_ERROR_OPEN,
53 tdb 1.42 SG_ERROR_OPENDIR,
54 tdb 1.41 SG_ERROR_PARSE,
55 tdb 1.42 SG_ERROR_SETEGID,
56     SG_ERROR_SETEUID,
57 tdb 1.41 SG_ERROR_SETMNTENT,
58 tdb 1.42 SG_ERROR_SOCKET,
59     SG_ERROR_SWAPCTL,
60     SG_ERROR_SYSCONF,
61     SG_ERROR_SYSCTL,
62     SG_ERROR_SYSCTLBYNAME,
63     SG_ERROR_SYSCTLNAMETOMIB,
64     SG_ERROR_UNAME,
65     SG_ERROR_UNSUPPORTED,
66 tdb 1.54 SG_ERROR_XSW_VER_MISMATCH,
67     SG_ERROR_PSTAT
68 tdb 1.36 } sg_error;
69    
70     void sg_set_error(sg_error code, const char *arg);
71 tdb 1.52 void sg_set_error_with_errno(sg_error code, const char *arg);
72 tdb 1.36 sg_error sg_get_error();
73 ats 1.43 const char *sg_get_error_arg();
74 ats 1.53 int sg_get_error_errno();
75 ats 1.37 const char *sg_str_error(sg_error code);
76 ats 1.33
77     typedef struct {
78     char *os_name;
79     char *os_release;
80     char *os_version;
81     char *platform;
82     char *hostname;
83     time_t uptime;
84     } sg_host_info;
85    
86     sg_host_info *sg_get_host_info();
87    
88     typedef struct {
89 tdb 1.39 long long user;
90     long long kernel;
91     long long idle;
92     long long iowait;
93     long long swap;
94     long long nice;
95     long long total;
96     time_t systime;
97 ats 1.33 } sg_cpu_stats;
98 pajs 1.1
99 ats 1.33 sg_cpu_stats *sg_get_cpu_stats();
100     sg_cpu_stats *sg_get_cpu_stats_diff();
101    
102     typedef struct {
103 tdb 1.39 float user;
104     float kernel;
105     float idle;
106     float iowait;
107     float swap;
108     float nice;
109 pajs 1.1 time_t time_taken;
110 ats 1.33 } sg_cpu_percents;
111    
112     sg_cpu_percents *sg_get_cpu_percents();
113 pajs 1.1
114 ats 1.33 typedef struct {
115 pajs 1.1 long long total;
116     long long free;
117     long long used;
118     long long cache;
119 ats 1.33 } sg_mem_stats;
120    
121     sg_mem_stats *sg_get_mem_stats();
122 pajs 1.1
123 ats 1.33 typedef struct {
124 pajs 1.1 double min1;
125     double min5;
126     double min15;
127 ats 1.33 } sg_load_stats;
128    
129     sg_load_stats *sg_get_load_stats();
130 pajs 1.1
131 ats 1.33 typedef struct {
132 pajs 1.8 char *name_list;
133 pajs 1.1 int num_entries;
134 ats 1.33 } sg_user_stats;
135    
136     sg_user_stats *sg_get_user_stats();
137 pajs 1.1
138 ats 1.33 typedef struct {
139 pajs 1.1 long long total;
140     long long used;
141     long long free;
142 ats 1.33 } sg_swap_stats;
143 pajs 1.1
144 ats 1.33 sg_swap_stats *sg_get_swap_stats();
145 pajs 1.1
146     typedef struct {
147 tdb 1.39 char *device_name;
148 pajs 1.1 char *fs_type;
149 tdb 1.39 char *mnt_point;
150     long long size;
151     long long used;
152     long long avail;
153     long long total_inodes;
154 pajs 1.1 long long used_inodes;
155 tdb 1.39 long long free_inodes;
156 ats 1.33 } sg_fs_stats;
157    
158     sg_fs_stats *sg_get_fs_stats(int *entries);
159 pajs 1.1
160 ats 1.49 int sg_fs_compare_device_name(const void *va, const void *vb);
161     int sg_fs_compare_mnt_point(const void *va, const void *vb);
162    
163 ats 1.33 typedef struct {
164 pajs 1.4 char *disk_name;
165     long long read_bytes;
166     long long write_bytes;
167     time_t systime;
168 ats 1.33 } sg_disk_io_stats;
169 pajs 1.4
170 ats 1.33 sg_disk_io_stats *sg_get_disk_io_stats(int *entries);
171     sg_disk_io_stats *sg_get_disk_io_stats_diff(int *entries);
172 pajs 1.1
173 ats 1.49 int sg_disk_io_compare_name(const void *va, const void *vb);
174    
175 ats 1.33 typedef struct {
176 pajs 1.1 char *interface_name;
177     long long tx;
178     long long rx;
179 tdb 1.28 long long ipackets;
180     long long opackets;
181     long long ierrors;
182     long long oerrors;
183     long long collisions;
184 pajs 1.1 time_t systime;
185 ats 1.33 } sg_network_io_stats;
186    
187     sg_network_io_stats *sg_get_network_io_stats(int *entries);
188     sg_network_io_stats *sg_get_network_io_stats_diff(int *entries);
189 pajs 1.24
190 ats 1.49 int sg_network_io_compare_name(const void *va, const void *vb);
191    
192 ats 1.33 typedef enum {
193     SG_IFACE_DUPLEX_FULL,
194     SG_IFACE_DUPLEX_HALF,
195     SG_IFACE_DUPLEX_UNKNOWN
196     } sg_iface_duplex;
197 pajs 1.24
198 ats 1.33 typedef struct {
199 pajs 1.24 char *interface_name;
200     int speed; /* In megabits/sec */
201 tdb 1.55 sg_iface_duplex duplex;
202     #ifdef SG_ENABLE_DEPRECATED
203 ats 1.33 sg_iface_duplex dup;
204 tdb 1.55 #endif
205 pajs 1.27 int up;
206 ats 1.33 } sg_network_iface_stats;
207    
208     sg_network_iface_stats *sg_get_network_iface_stats(int *entries);
209 pajs 1.1
210 ats 1.49 int sg_network_iface_compare_name(const void *va, const void *vb);
211    
212 ats 1.33 typedef struct {
213 pajs 1.2 long long pages_pagein;
214     long long pages_pageout;
215 pajs 1.1 time_t systime;
216 ats 1.33 } sg_page_stats;
217    
218     sg_page_stats *sg_get_page_stats();
219     sg_page_stats *sg_get_page_stats_diff();
220 pajs 1.29
221 ats 1.33 typedef enum {
222     SG_PROCESS_STATE_RUNNING,
223     SG_PROCESS_STATE_SLEEPING,
224     SG_PROCESS_STATE_STOPPED,
225     SG_PROCESS_STATE_ZOMBIE,
226     SG_PROCESS_STATE_UNKNOWN
227     } sg_process_state;
228 pajs 1.30
229 ats 1.33 typedef struct {
230 pajs 1.29 char *process_name;
231     char *proctitle;
232    
233     pid_t pid;
234     pid_t parent; /* Parent pid */
235     pid_t pgid; /* process id of process group leader */
236    
237     uid_t uid;
238     uid_t euid;
239     gid_t gid;
240     gid_t egid;
241    
242     unsigned long long proc_size; /* in bytes */
243     unsigned long long proc_resident; /* in bytes */
244 tdb 1.31 time_t time_spent; /* time running in seconds */
245 pajs 1.29 double cpu_percent;
246     int nice;
247 ats 1.33 sg_process_state state;
248     } sg_process_stats;
249 pajs 1.29
250 ats 1.33 sg_process_stats *sg_get_process_stats(int *entries);
251 pajs 1.1
252 ats 1.49 int sg_process_compare_name(const void *va, const void *vb);
253 ats 1.48 int sg_process_compare_pid(const void *va, const void *vb);
254     int sg_process_compare_uid(const void *va, const void *vb);
255     int sg_process_compare_gid(const void *va, const void *vb);
256     int sg_process_compare_size(const void *va, const void *vb);
257     int sg_process_compare_res(const void *va, const void *vb);
258     int sg_process_compare_cpu(const void *va, const void *vb);
259     int sg_process_compare_time(const void *va, const void *vb);
260    
261 ats 1.33 typedef struct {
262     int total;
263     int running;
264     int sleeping;
265     int stopped;
266     int zombie;
267     } sg_process_count;
268 pajs 1.14
269 ats 1.33 sg_process_count *sg_get_process_count();
270 tdb 1.35
271     #ifdef SG_ENABLE_DEPRECATED
272     #include <statgrab_deprecated.h>
273     #endif
274 ats 1.18
275 tdb 1.50 #endif