ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/libstatgrab/src/libstatgrab/statgrab.h
Revision: 1.37
Committed: Tue Apr 6 22:09:22 2004 UTC (20 years, 1 month ago) by ats
Content type: text/plain
Branch: MAIN
Changes since 1.36: +3 -3 lines
Log Message:
Add SG_ERROR_NONE.

Make sg_str_error return const char *.

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.36 2004/04/06 21:38:55 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_NONE = 0
37 } sg_error;
38
39 void sg_set_error(sg_error code, const char *arg);
40 sg_error sg_get_error();
41 const 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