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

# Content
1 /*
2 * i-scream libstatgrab
3 * http://www.i-scream.org
4 * Copyright (C) 2000-2004 i-scream
5 *
6 * 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 *
11 * This library 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 GNU
14 * Lesser General Public License for more details.
15 *
16 * 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 *
21 * $Id: statgrab.h,v 1.35 2004/04/06 16:37:34 tdb Exp $
22 */
23
24 #include <sys/types.h>
25
26 /* 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
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
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 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 time_t systime;
63 } sg_cpu_stats;
64
65 sg_cpu_stats *sg_get_cpu_stats();
66 sg_cpu_stats *sg_get_cpu_stats_diff();
67
68 typedef struct {
69 float user;
70 float kernel;
71 float idle;
72 float iowait;
73 float swap;
74 float nice;
75 time_t time_taken;
76 } sg_cpu_percents;
77
78 sg_cpu_percents *sg_get_cpu_percents();
79
80 typedef struct {
81 long long total;
82 long long free;
83 long long used;
84 long long cache;
85 } sg_mem_stats;
86
87 sg_mem_stats *sg_get_mem_stats();
88
89 typedef struct {
90 double min1;
91 double min5;
92 double min15;
93 } sg_load_stats;
94
95 sg_load_stats *sg_get_load_stats();
96
97 typedef struct {
98 char *name_list;
99 int num_entries;
100 } sg_user_stats;
101
102 sg_user_stats *sg_get_user_stats();
103
104 typedef struct {
105 long long total;
106 long long used;
107 long long free;
108 } sg_swap_stats;
109
110 sg_swap_stats *sg_get_swap_stats();
111
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 } sg_fs_stats;
123
124 sg_fs_stats *sg_get_fs_stats(int *entries);
125
126 typedef struct {
127 char *disk_name;
128 long long read_bytes;
129 long long write_bytes;
130 time_t systime;
131 } sg_disk_io_stats;
132
133 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
136 typedef struct {
137 char *interface_name;
138 long long tx;
139 long long rx;
140 long long ipackets;
141 long long opackets;
142 long long ierrors;
143 long long oerrors;
144 long long collisions;
145 time_t systime;
146 } 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
151 typedef enum {
152 SG_IFACE_DUPLEX_FULL,
153 SG_IFACE_DUPLEX_HALF,
154 SG_IFACE_DUPLEX_UNKNOWN
155 } sg_iface_duplex;
156
157 typedef struct {
158 char *interface_name;
159 int speed; /* In megabits/sec */
160 sg_iface_duplex dup;
161 int up;
162 } sg_network_iface_stats;
163
164 sg_network_iface_stats *sg_get_network_iface_stats(int *entries);
165
166 typedef struct {
167 long long pages_pagein;
168 long long pages_pageout;
169 time_t systime;
170 } sg_page_stats;
171
172 sg_page_stats *sg_get_page_stats();
173 sg_page_stats *sg_get_page_stats_diff();
174
175 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
183 typedef struct {
184 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 time_t time_spent; /* time running in seconds */
199 double cpu_percent;
200 int nice;
201 sg_process_state state;
202 } sg_process_stats;
203
204 sg_process_stats *sg_get_process_stats(int *entries);
205
206 typedef struct {
207 int total;
208 int running;
209 int sleeping;
210 int stopped;
211 int zombie;
212 } sg_process_count;
213
214 sg_process_count *sg_get_process_count();
215
216 #ifdef SG_ENABLE_DEPRECATED
217 #include <statgrab_deprecated.h>
218 #endif
219