ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/libstatgrab/src/libstatgrab/statgrab.h
Revision: 1.43
Committed: Wed Apr 7 21:19:26 2004 UTC (20 years, 1 month ago) by ats
Content type: text/plain
Branch: MAIN
Changes since 1.42: +2 -1 lines
Log Message:
Add sg_get_error_arg. It uses a static buffer for storage rather than
sg_update_string because we can't do anything about a malloc failure at
that point.

Remove the default case in the switch, so GCC will give an "unhandled
enum value in switch" warning if we add a new error code without a
string.

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 ats 1.43 * $Id: statgrab.h,v 1.42 2004/04/07 21:08:40 tdb Exp $
22 pajs 1.1 */
23    
24 pajs 1.21 #include <sys/types.h>
25    
26 ats 1.33 /* FIXME typedefs for 32/64-bit types */
27     /* FIXME maybe tidy up field names? */
28     /* FIXME tab/space damage */
29     /* FIXME prefixes for util functions too */
30     /* FIXME comments for less obvious fields */
31    
32     int sg_init(void);
33     int sg_drop_privileges(void);
34 tdb 1.36
35     typedef enum {
36 tdb 1.38 SG_ERROR_NONE = 0,
37 tdb 1.42 SG_ERROR_ASPRINTF,
38     SG_ERROR_DEVSTAT_GETDEVS,
39     SG_ERROR_DEVSTAT_SELECTDEVS,
40     SG_ERROR_ENOENT,
41     SG_ERROR_GETIFADDRS,
42     SG_ERROR_GETMNTINFO,
43     SG_ERROR_GETPAGESIZE,
44     SG_ERROR_KSTAT_DATA_LOOKUP,
45     SG_ERROR_KSTAT_LOOKUP,
46     SG_ERROR_KSTAT_OPEN,
47     SG_ERROR_KSTAT_READ,
48     SG_ERROR_KVM_GETSWAPINFO,
49     SG_ERROR_KVM_OPENFILES,
50 tdb 1.39 SG_ERROR_MALLOC,
51     SG_ERROR_OPEN,
52 tdb 1.42 SG_ERROR_OPENDIR,
53 tdb 1.41 SG_ERROR_PARSE,
54 tdb 1.42 SG_ERROR_SETEGID,
55     SG_ERROR_SETEUID,
56 tdb 1.41 SG_ERROR_SETMNTENT,
57 tdb 1.42 SG_ERROR_SOCKET,
58     SG_ERROR_SWAPCTL,
59     SG_ERROR_SYSCONF,
60     SG_ERROR_SYSCTL,
61     SG_ERROR_SYSCTLBYNAME,
62     SG_ERROR_SYSCTLNAMETOMIB,
63     SG_ERROR_UNAME,
64     SG_ERROR_UNSUPPORTED,
65     SG_ERROR_XSW_VER_MISMATCH
66 tdb 1.36 } sg_error;
67    
68     void sg_set_error(sg_error code, const char *arg);
69     sg_error sg_get_error();
70 ats 1.43 const char *sg_get_error_arg();
71 ats 1.37 const char *sg_str_error(sg_error code);
72 ats 1.33
73     typedef struct {
74     char *os_name;
75     char *os_release;
76     char *os_version;
77     char *platform;
78     char *hostname;
79     time_t uptime;
80     } sg_host_info;
81    
82     sg_host_info *sg_get_host_info();
83    
84     typedef struct {
85 tdb 1.39 long long user;
86     long long kernel;
87     long long idle;
88     long long iowait;
89     long long swap;
90     long long nice;
91     long long total;
92     time_t systime;
93 ats 1.33 } sg_cpu_stats;
94 pajs 1.1
95 ats 1.33 sg_cpu_stats *sg_get_cpu_stats();
96     sg_cpu_stats *sg_get_cpu_stats_diff();
97    
98     typedef struct {
99 tdb 1.39 float user;
100     float kernel;
101     float idle;
102     float iowait;
103     float swap;
104     float nice;
105 pajs 1.1 time_t time_taken;
106 ats 1.33 } sg_cpu_percents;
107    
108     sg_cpu_percents *sg_get_cpu_percents();
109 pajs 1.1
110 ats 1.33 typedef struct {
111 pajs 1.1 long long total;
112     long long free;
113     long long used;
114     long long cache;
115 ats 1.33 } sg_mem_stats;
116    
117     sg_mem_stats *sg_get_mem_stats();
118 pajs 1.1
119 ats 1.33 typedef struct {
120 pajs 1.1 double min1;
121     double min5;
122     double min15;
123 ats 1.33 } sg_load_stats;
124    
125     sg_load_stats *sg_get_load_stats();
126 pajs 1.1
127 ats 1.33 typedef struct {
128 pajs 1.8 char *name_list;
129 pajs 1.1 int num_entries;
130 ats 1.33 } sg_user_stats;
131    
132     sg_user_stats *sg_get_user_stats();
133 pajs 1.1
134 ats 1.33 typedef struct {
135 pajs 1.1 long long total;
136     long long used;
137     long long free;
138 ats 1.33 } sg_swap_stats;
139 pajs 1.1
140 ats 1.33 sg_swap_stats *sg_get_swap_stats();
141 pajs 1.1
142     typedef struct {
143 tdb 1.39 char *device_name;
144 pajs 1.1 char *fs_type;
145 tdb 1.39 char *mnt_point;
146     long long size;
147     long long used;
148     long long avail;
149     long long total_inodes;
150 pajs 1.1 long long used_inodes;
151 tdb 1.39 long long free_inodes;
152 ats 1.33 } sg_fs_stats;
153    
154     sg_fs_stats *sg_get_fs_stats(int *entries);
155 pajs 1.1
156 ats 1.33 typedef struct {
157 pajs 1.4 char *disk_name;
158     long long read_bytes;
159     long long write_bytes;
160     time_t systime;
161 ats 1.33 } sg_disk_io_stats;
162 pajs 1.4
163 ats 1.33 sg_disk_io_stats *sg_get_disk_io_stats(int *entries);
164     sg_disk_io_stats *sg_get_disk_io_stats_diff(int *entries);
165 pajs 1.1
166 ats 1.33 typedef struct {
167 pajs 1.1 char *interface_name;
168     long long tx;
169     long long rx;
170 tdb 1.28 long long ipackets;
171     long long opackets;
172     long long ierrors;
173     long long oerrors;
174     long long collisions;
175 pajs 1.1 time_t systime;
176 ats 1.33 } sg_network_io_stats;
177    
178     sg_network_io_stats *sg_get_network_io_stats(int *entries);
179     sg_network_io_stats *sg_get_network_io_stats_diff(int *entries);
180 pajs 1.24
181 ats 1.33 typedef enum {
182     SG_IFACE_DUPLEX_FULL,
183     SG_IFACE_DUPLEX_HALF,
184     SG_IFACE_DUPLEX_UNKNOWN
185     } sg_iface_duplex;
186 pajs 1.24
187 ats 1.33 typedef struct {
188 pajs 1.24 char *interface_name;
189     int speed; /* In megabits/sec */
190 ats 1.33 sg_iface_duplex dup;
191 pajs 1.27 int up;
192 ats 1.33 } sg_network_iface_stats;
193    
194     sg_network_iface_stats *sg_get_network_iface_stats(int *entries);
195 pajs 1.1
196 ats 1.33 typedef struct {
197 pajs 1.2 long long pages_pagein;
198     long long pages_pageout;
199 pajs 1.1 time_t systime;
200 ats 1.33 } sg_page_stats;
201    
202     sg_page_stats *sg_get_page_stats();
203     sg_page_stats *sg_get_page_stats_diff();
204 pajs 1.29
205 ats 1.33 typedef enum {
206     SG_PROCESS_STATE_RUNNING,
207     SG_PROCESS_STATE_SLEEPING,
208     SG_PROCESS_STATE_STOPPED,
209     SG_PROCESS_STATE_ZOMBIE,
210     SG_PROCESS_STATE_UNKNOWN
211     } sg_process_state;
212 pajs 1.30
213 ats 1.33 typedef struct {
214 pajs 1.29 char *process_name;
215     char *proctitle;
216    
217     pid_t pid;
218     pid_t parent; /* Parent pid */
219     pid_t pgid; /* process id of process group leader */
220    
221     uid_t uid;
222     uid_t euid;
223     gid_t gid;
224     gid_t egid;
225    
226     unsigned long long proc_size; /* in bytes */
227     unsigned long long proc_resident; /* in bytes */
228 tdb 1.31 time_t time_spent; /* time running in seconds */
229 pajs 1.29 double cpu_percent;
230     int nice;
231 ats 1.33 sg_process_state state;
232     } sg_process_stats;
233 pajs 1.29
234 ats 1.33 sg_process_stats *sg_get_process_stats(int *entries);
235 pajs 1.1
236 ats 1.33 typedef struct {
237     int total;
238     int running;
239     int sleeping;
240     int stopped;
241     int zombie;
242     } sg_process_count;
243 pajs 1.14
244 ats 1.33 sg_process_count *sg_get_process_count();
245 tdb 1.35
246     #ifdef SG_ENABLE_DEPRECATED
247     #include <statgrab_deprecated.h>
248     #endif
249 ats 1.18