ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/libstatgrab/src/libstatgrab/statgrab.h
Revision: 1.36
Committed: Tue Apr 6 21:38:55 2004 UTC (20 years, 1 month ago) by tdb
Content type: text/plain
Branch: MAIN
Changes since 1.35: +9 -1 lines
Log Message:
Some very basic startings of error handling stuff. I've not put much
thought into this yet, it's basically just the idea we've discussed.

Of course, this is the easy task. The hard job is creating a whole list of
different errors and using them across libstatgrab :-)

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.36 * $Id: statgrab.h,v 1.35 2004/04/06 16:37:34 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     SG_ERROR
37     } sg_error;
38    
39     void sg_set_error(sg_error code, const char *arg);
40     sg_error sg_get_error();
41     char *sg_str_error(sg_error code);
42 ats 1.33
43     typedef struct {
44     char *os_name;
45     char *os_release;
46     char *os_version;
47     char *platform;
48     char *hostname;
49     time_t uptime;
50     } sg_host_info;
51    
52     sg_host_info *sg_get_host_info();
53    
54     typedef struct {
55 pajs 1.9 long long user;
56     long long kernel;
57     long long idle;
58     long long iowait;
59     long long swap;
60     long long nice;
61     long long total;
62 pajs 1.1 time_t systime;
63 ats 1.33 } sg_cpu_stats;
64 pajs 1.1
65 ats 1.33 sg_cpu_stats *sg_get_cpu_stats();
66     sg_cpu_stats *sg_get_cpu_stats_diff();
67    
68     typedef struct {
69 pajs 1.1 float user;
70     float kernel;
71     float idle;
72     float iowait;
73     float swap;
74     float nice;
75     time_t time_taken;
76 ats 1.33 } sg_cpu_percents;
77    
78     sg_cpu_percents *sg_get_cpu_percents();
79 pajs 1.1
80 ats 1.33 typedef struct {
81 pajs 1.1 long long total;
82     long long free;
83     long long used;
84     long long cache;
85 ats 1.33 } sg_mem_stats;
86    
87     sg_mem_stats *sg_get_mem_stats();
88 pajs 1.1
89 ats 1.33 typedef struct {
90 pajs 1.1 double min1;
91     double min5;
92     double min15;
93 ats 1.33 } sg_load_stats;
94    
95     sg_load_stats *sg_get_load_stats();
96 pajs 1.1
97 ats 1.33 typedef struct {
98 pajs 1.8 char *name_list;
99 pajs 1.1 int num_entries;
100 ats 1.33 } sg_user_stats;
101    
102     sg_user_stats *sg_get_user_stats();
103 pajs 1.1
104 ats 1.33 typedef struct {
105 pajs 1.1 long long total;
106     long long used;
107     long long free;
108 ats 1.33 } sg_swap_stats;
109 pajs 1.1
110 ats 1.33 sg_swap_stats *sg_get_swap_stats();
111 pajs 1.1
112     typedef struct {
113     char *device_name;
114     char *fs_type;
115     char *mnt_point;
116     long long size;
117     long long used;
118     long long avail;
119     long long total_inodes;
120     long long used_inodes;
121     long long free_inodes;
122 ats 1.33 } sg_fs_stats;
123    
124     sg_fs_stats *sg_get_fs_stats(int *entries);
125 pajs 1.1
126 ats 1.33 typedef struct {
127 pajs 1.4 char *disk_name;
128     long long read_bytes;
129     long long write_bytes;
130     time_t systime;
131 ats 1.33 } sg_disk_io_stats;
132 pajs 1.4
133 ats 1.33 sg_disk_io_stats *sg_get_disk_io_stats(int *entries);
134     sg_disk_io_stats *sg_get_disk_io_stats_diff(int *entries);
135 pajs 1.1
136 ats 1.33 typedef struct {
137 pajs 1.1 char *interface_name;
138     long long tx;
139     long long rx;
140 tdb 1.28 long long ipackets;
141     long long opackets;
142     long long ierrors;
143     long long oerrors;
144     long long collisions;
145 pajs 1.1 time_t systime;
146 ats 1.33 } sg_network_io_stats;
147    
148     sg_network_io_stats *sg_get_network_io_stats(int *entries);
149     sg_network_io_stats *sg_get_network_io_stats_diff(int *entries);
150 pajs 1.24
151 ats 1.33 typedef enum {
152     SG_IFACE_DUPLEX_FULL,
153     SG_IFACE_DUPLEX_HALF,
154     SG_IFACE_DUPLEX_UNKNOWN
155     } sg_iface_duplex;
156 pajs 1.24
157 ats 1.33 typedef struct {
158 pajs 1.24 char *interface_name;
159     int speed; /* In megabits/sec */
160 ats 1.33 sg_iface_duplex dup;
161 pajs 1.27 int up;
162 ats 1.33 } sg_network_iface_stats;
163    
164     sg_network_iface_stats *sg_get_network_iface_stats(int *entries);
165 pajs 1.1
166 ats 1.33 typedef struct {
167 pajs 1.2 long long pages_pagein;
168     long long pages_pageout;
169 pajs 1.1 time_t systime;
170 ats 1.33 } sg_page_stats;
171    
172     sg_page_stats *sg_get_page_stats();
173     sg_page_stats *sg_get_page_stats_diff();
174 pajs 1.29
175 ats 1.33 typedef enum {
176     SG_PROCESS_STATE_RUNNING,
177     SG_PROCESS_STATE_SLEEPING,
178     SG_PROCESS_STATE_STOPPED,
179     SG_PROCESS_STATE_ZOMBIE,
180     SG_PROCESS_STATE_UNKNOWN
181     } sg_process_state;
182 pajs 1.30
183 ats 1.33 typedef struct {
184 pajs 1.29 char *process_name;
185     char *proctitle;
186    
187     pid_t pid;
188     pid_t parent; /* Parent pid */
189     pid_t pgid; /* process id of process group leader */
190    
191     uid_t uid;
192     uid_t euid;
193     gid_t gid;
194     gid_t egid;
195    
196     unsigned long long proc_size; /* in bytes */
197     unsigned long long proc_resident; /* in bytes */
198 tdb 1.31 time_t time_spent; /* time running in seconds */
199 pajs 1.29 double cpu_percent;
200     int nice;
201 ats 1.33 sg_process_state state;
202     } sg_process_stats;
203 pajs 1.29
204 ats 1.33 sg_process_stats *sg_get_process_stats(int *entries);
205 pajs 1.1
206 ats 1.33 typedef struct {
207     int total;
208     int running;
209     int sleeping;
210     int stopped;
211     int zombie;
212     } sg_process_count;
213 pajs 1.14
214 ats 1.33 sg_process_count *sg_get_process_count();
215 tdb 1.35
216     #ifdef SG_ENABLE_DEPRECATED
217     #include <statgrab_deprecated.h>
218     #endif
219 ats 1.18