ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/libstatgrab/src/libstatgrab/statgrab.h
Revision: 1.58
Committed: Sat Mar 11 13:11:21 2006 UTC (18 years, 2 months ago) by tdb
Content type: text/plain
Branch: MAIN
CVS Tags: LIBSTATGRAB_0_17, LIBSTATGRAB_0_16, LIBSTATGRAB_0_15, LIBSTATGRAB_0_14, LIBSTATGRAB_0_13
Changes since 1.57: +9 -1 lines
Log Message:
Nasty hack to make inclusion in C++ code easier. We seem to be getting
regular reports of problems with C++, and this should fix them.

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.58 * $Id: statgrab.h,v 1.57 2005/09/24 13:29:22 tdb Exp $
22 pajs 1.1 */
23    
24 tdb 1.50 #ifndef STATGRAB_H
25     #define STATGRAB_H
26    
27 tdb 1.58 #ifdef __cplusplus
28     extern "C" {
29     #endif
30    
31 pajs 1.21 #include <sys/types.h>
32    
33 ats 1.33 /* FIXME typedefs for 32/64-bit types */
34     /* FIXME maybe tidy up field names? */
35     /* FIXME comments for less obvious fields */
36    
37     int sg_init(void);
38 tdb 1.57 int sg_snapshot();
39     int sg_shutdown();
40 ats 1.33 int sg_drop_privileges(void);
41 tdb 1.36
42     typedef enum {
43 tdb 1.38 SG_ERROR_NONE = 0,
44 tdb 1.42 SG_ERROR_ASPRINTF,
45 tdb 1.57 SG_ERROR_DEVICES,
46 tdb 1.42 SG_ERROR_DEVSTAT_GETDEVS,
47     SG_ERROR_DEVSTAT_SELECTDEVS,
48 tdb 1.57 SG_ERROR_DISKINFO,
49 tdb 1.42 SG_ERROR_ENOENT,
50     SG_ERROR_GETIFADDRS,
51     SG_ERROR_GETMNTINFO,
52     SG_ERROR_GETPAGESIZE,
53 tdb 1.57 SG_ERROR_HOST,
54 tdb 1.42 SG_ERROR_KSTAT_DATA_LOOKUP,
55     SG_ERROR_KSTAT_LOOKUP,
56     SG_ERROR_KSTAT_OPEN,
57     SG_ERROR_KSTAT_READ,
58     SG_ERROR_KVM_GETSWAPINFO,
59     SG_ERROR_KVM_OPENFILES,
60 tdb 1.39 SG_ERROR_MALLOC,
61 tdb 1.57 SG_ERROR_MEMSTATUS,
62 tdb 1.39 SG_ERROR_OPEN,
63 tdb 1.42 SG_ERROR_OPENDIR,
64 tdb 1.41 SG_ERROR_PARSE,
65 tdb 1.57 SG_ERROR_PDHADD,
66     SG_ERROR_PDHCOLLECT,
67     SG_ERROR_PDHOPEN,
68     SG_ERROR_PDHREAD,
69     SG_ERROR_PERMISSION,
70     SG_ERROR_PSTAT,
71 tdb 1.42 SG_ERROR_SETEGID,
72     SG_ERROR_SETEUID,
73 tdb 1.41 SG_ERROR_SETMNTENT,
74 tdb 1.42 SG_ERROR_SOCKET,
75     SG_ERROR_SWAPCTL,
76     SG_ERROR_SYSCONF,
77     SG_ERROR_SYSCTL,
78     SG_ERROR_SYSCTLBYNAME,
79     SG_ERROR_SYSCTLNAMETOMIB,
80     SG_ERROR_UNAME,
81     SG_ERROR_UNSUPPORTED,
82 tdb 1.57 SG_ERROR_XSW_VER_MISMATCH
83 tdb 1.36 } sg_error;
84    
85     void sg_set_error(sg_error code, const char *arg);
86 tdb 1.52 void sg_set_error_with_errno(sg_error code, const char *arg);
87 tdb 1.36 sg_error sg_get_error();
88 ats 1.43 const char *sg_get_error_arg();
89 ats 1.53 int sg_get_error_errno();
90 ats 1.37 const char *sg_str_error(sg_error code);
91 ats 1.33
92     typedef struct {
93     char *os_name;
94     char *os_release;
95     char *os_version;
96     char *platform;
97     char *hostname;
98     time_t uptime;
99     } sg_host_info;
100    
101     sg_host_info *sg_get_host_info();
102    
103     typedef struct {
104 tdb 1.39 long long user;
105     long long kernel;
106     long long idle;
107     long long iowait;
108     long long swap;
109     long long nice;
110     long long total;
111     time_t systime;
112 ats 1.33 } sg_cpu_stats;
113 pajs 1.1
114 ats 1.33 sg_cpu_stats *sg_get_cpu_stats();
115     sg_cpu_stats *sg_get_cpu_stats_diff();
116    
117     typedef struct {
118 tdb 1.39 float user;
119     float kernel;
120     float idle;
121     float iowait;
122     float swap;
123     float nice;
124 pajs 1.1 time_t time_taken;
125 ats 1.33 } sg_cpu_percents;
126    
127     sg_cpu_percents *sg_get_cpu_percents();
128 pajs 1.1
129 ats 1.33 typedef struct {
130 pajs 1.1 long long total;
131     long long free;
132     long long used;
133     long long cache;
134 ats 1.33 } sg_mem_stats;
135    
136     sg_mem_stats *sg_get_mem_stats();
137 pajs 1.1
138 ats 1.33 typedef struct {
139 pajs 1.1 double min1;
140     double min5;
141     double min15;
142 ats 1.33 } sg_load_stats;
143    
144     sg_load_stats *sg_get_load_stats();
145 pajs 1.1
146 ats 1.33 typedef struct {
147 pajs 1.8 char *name_list;
148 pajs 1.1 int num_entries;
149 ats 1.33 } sg_user_stats;
150    
151     sg_user_stats *sg_get_user_stats();
152 pajs 1.1
153 ats 1.33 typedef struct {
154 pajs 1.1 long long total;
155     long long used;
156     long long free;
157 ats 1.33 } sg_swap_stats;
158 pajs 1.1
159 ats 1.33 sg_swap_stats *sg_get_swap_stats();
160 pajs 1.1
161     typedef struct {
162 tdb 1.39 char *device_name;
163 pajs 1.1 char *fs_type;
164 tdb 1.39 char *mnt_point;
165     long long size;
166     long long used;
167     long long avail;
168     long long total_inodes;
169 pajs 1.1 long long used_inodes;
170 tdb 1.39 long long free_inodes;
171 tdb 1.56 long long avail_inodes;
172     long long io_size;
173     long long block_size;
174     long long total_blocks;
175     long long free_blocks;
176     long long used_blocks;
177     long long avail_blocks;
178 ats 1.33 } sg_fs_stats;
179    
180     sg_fs_stats *sg_get_fs_stats(int *entries);
181 pajs 1.1
182 ats 1.49 int sg_fs_compare_device_name(const void *va, const void *vb);
183     int sg_fs_compare_mnt_point(const void *va, const void *vb);
184    
185 ats 1.33 typedef struct {
186 pajs 1.4 char *disk_name;
187     long long read_bytes;
188     long long write_bytes;
189     time_t systime;
190 ats 1.33 } sg_disk_io_stats;
191 pajs 1.4
192 ats 1.33 sg_disk_io_stats *sg_get_disk_io_stats(int *entries);
193     sg_disk_io_stats *sg_get_disk_io_stats_diff(int *entries);
194 pajs 1.1
195 ats 1.49 int sg_disk_io_compare_name(const void *va, const void *vb);
196    
197 ats 1.33 typedef struct {
198 pajs 1.1 char *interface_name;
199     long long tx;
200     long long rx;
201 tdb 1.28 long long ipackets;
202     long long opackets;
203     long long ierrors;
204     long long oerrors;
205     long long collisions;
206 pajs 1.1 time_t systime;
207 ats 1.33 } sg_network_io_stats;
208    
209     sg_network_io_stats *sg_get_network_io_stats(int *entries);
210     sg_network_io_stats *sg_get_network_io_stats_diff(int *entries);
211 pajs 1.24
212 ats 1.49 int sg_network_io_compare_name(const void *va, const void *vb);
213    
214 ats 1.33 typedef enum {
215     SG_IFACE_DUPLEX_FULL,
216     SG_IFACE_DUPLEX_HALF,
217     SG_IFACE_DUPLEX_UNKNOWN
218     } sg_iface_duplex;
219 pajs 1.24
220 ats 1.33 typedef struct {
221 pajs 1.24 char *interface_name;
222     int speed; /* In megabits/sec */
223 tdb 1.55 sg_iface_duplex duplex;
224     #ifdef SG_ENABLE_DEPRECATED
225 ats 1.33 sg_iface_duplex dup;
226 tdb 1.55 #endif
227 pajs 1.27 int up;
228 ats 1.33 } sg_network_iface_stats;
229    
230     sg_network_iface_stats *sg_get_network_iface_stats(int *entries);
231 pajs 1.1
232 ats 1.49 int sg_network_iface_compare_name(const void *va, const void *vb);
233    
234 ats 1.33 typedef struct {
235 pajs 1.2 long long pages_pagein;
236     long long pages_pageout;
237 pajs 1.1 time_t systime;
238 ats 1.33 } sg_page_stats;
239    
240     sg_page_stats *sg_get_page_stats();
241     sg_page_stats *sg_get_page_stats_diff();
242 pajs 1.29
243 ats 1.33 typedef enum {
244     SG_PROCESS_STATE_RUNNING,
245     SG_PROCESS_STATE_SLEEPING,
246     SG_PROCESS_STATE_STOPPED,
247     SG_PROCESS_STATE_ZOMBIE,
248     SG_PROCESS_STATE_UNKNOWN
249     } sg_process_state;
250 pajs 1.30
251 ats 1.33 typedef struct {
252 pajs 1.29 char *process_name;
253     char *proctitle;
254    
255     pid_t pid;
256     pid_t parent; /* Parent pid */
257     pid_t pgid; /* process id of process group leader */
258    
259 tdb 1.57 /* Windows does not have uid_t or gid_t types */
260     #ifndef WIN32
261 pajs 1.29 uid_t uid;
262     uid_t euid;
263     gid_t gid;
264     gid_t egid;
265 tdb 1.57 #else
266     int uid;
267     int euid;
268     int gid;
269     int egid;
270     #endif
271 pajs 1.29
272     unsigned long long proc_size; /* in bytes */
273     unsigned long long proc_resident; /* in bytes */
274 tdb 1.31 time_t time_spent; /* time running in seconds */
275 pajs 1.29 double cpu_percent;
276     int nice;
277 ats 1.33 sg_process_state state;
278     } sg_process_stats;
279 pajs 1.29
280 ats 1.33 sg_process_stats *sg_get_process_stats(int *entries);
281 pajs 1.1
282 ats 1.49 int sg_process_compare_name(const void *va, const void *vb);
283 ats 1.48 int sg_process_compare_pid(const void *va, const void *vb);
284     int sg_process_compare_uid(const void *va, const void *vb);
285     int sg_process_compare_gid(const void *va, const void *vb);
286     int sg_process_compare_size(const void *va, const void *vb);
287     int sg_process_compare_res(const void *va, const void *vb);
288     int sg_process_compare_cpu(const void *va, const void *vb);
289     int sg_process_compare_time(const void *va, const void *vb);
290    
291 ats 1.33 typedef struct {
292     int total;
293     int running;
294     int sleeping;
295     int stopped;
296     int zombie;
297     } sg_process_count;
298 pajs 1.14
299 ats 1.33 sg_process_count *sg_get_process_count();
300 tdb 1.35
301     #ifdef SG_ENABLE_DEPRECATED
302     #include <statgrab_deprecated.h>
303 tdb 1.58 #endif
304    
305     #ifdef __cplusplus
306     }
307 tdb 1.35 #endif
308 ats 1.18
309 tdb 1.50 #endif