ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/libstatgrab/src/libstatgrab/statgrab.h
Revision: 1.29
Committed: Sun Mar 28 18:04:14 2004 UTC (20 years, 1 month ago) by pajs
Content type: text/plain
Branch: MAIN
Changes since 1.28: +24 -1 lines
Log Message:
The start of the rework for process_stats to give more information, and
to become a standard proc interface.

File Contents

# Content
1 /*
2 * i-scream central monitoring system
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.28 2004/03/04 23:38:29 tdb Exp $
22 */
23
24 #include <sys/types.h>
25
26 typedef struct{
27 long long user;
28 long long kernel;
29 long long idle;
30 long long iowait;
31 long long swap;
32 long long nice;
33 long long total;
34 time_t systime;
35 }cpu_states_t;
36
37 typedef struct{
38 float user;
39 float kernel;
40 float idle;
41 float iowait;
42 float swap;
43 float nice;
44 time_t time_taken;
45 }cpu_percent_t;
46
47 typedef struct{
48 long long total;
49 long long free;
50 long long used;
51 long long cache;
52 }mem_stat_t;
53
54 typedef struct{
55 double min1;
56 double min5;
57 double min15;
58 }load_stat_t;
59
60 typedef struct{
61 char *name_list;
62 int num_entries;
63 }user_stat_t;
64
65 typedef struct{
66 long long total;
67 long long used;
68 long long free;
69 }swap_stat_t;
70
71 typedef struct{
72 char *os_name;
73 char *os_release;
74 char *os_version;
75 char *platform;
76 char *hostname;
77 time_t uptime;
78 }general_stat_t;
79
80 typedef struct {
81 char *device_name;
82 char *fs_type;
83 char *mnt_point;
84 long long size;
85 long long used;
86 long long avail;
87 long long total_inodes;
88 long long used_inodes;
89 long long free_inodes;
90 }disk_stat_t;
91
92 typedef struct{
93 char *disk_name;
94 long long read_bytes;
95 long long write_bytes;
96 time_t systime;
97 }diskio_stat_t;
98
99 typedef struct{
100 int total;
101 int running;
102 int sleeping;
103 int stopped;
104 int zombie;
105 }process_stat_t;
106
107 typedef struct{
108 char *interface_name;
109 long long tx;
110 long long rx;
111 long long ipackets;
112 long long opackets;
113 long long ierrors;
114 long long oerrors;
115 long long collisions;
116 time_t systime;
117 }network_stat_t;
118
119 typedef enum{
120 FULL_DUPLEX,
121 HALF_DUPLEX,
122 UNKNOWN_DUPLEX
123 }statgrab_duplex;
124
125 typedef struct{
126 char *interface_name;
127 int speed; /* In megabits/sec */
128 statgrab_duplex dup;
129 int up;
130 }network_iface_stat_t;
131
132 typedef struct{
133 long long pages_pagein;
134 long long pages_pageout;
135 time_t systime;
136 }page_stat_t;
137
138 typedef struct{
139 char *process_name;
140 char *proctitle;
141
142 pid_t pid;
143 pid_t parent; /* Parent pid */
144 pid_t pgid; /* process id of process group leader */
145
146 uid_t uid;
147 uid_t euid;
148 gid_t gid;
149 gid_t egid;
150
151 unsigned long long proc_size; /* in bytes */
152 unsigned long long proc_resident; /* in bytes */
153 time_t time_spent;
154 double cpu_percent;
155 int nice;
156 int state;
157 }proc_state_t;
158
159 int get_proc_snapshot(proc_state_t **proc_state);
160
161 cpu_states_t *get_cpu_totals();
162 cpu_states_t *get_cpu_diff();
163 cpu_percent_t *cpu_percent_usage();
164
165 mem_stat_t *get_memory_stats();
166
167 load_stat_t *get_load_stats();
168
169 user_stat_t *get_user_stats();
170
171 swap_stat_t *get_swap_stats();
172
173 general_stat_t *get_general_stats();
174
175 disk_stat_t *get_disk_stats(int *entries);
176 diskio_stat_t *get_diskio_stats(int *entries);
177 diskio_stat_t *get_diskio_stats_diff(int *entries);
178
179 process_stat_t *get_process_stats();
180
181 network_stat_t *get_network_stats(int *entries);
182 network_stat_t *get_network_stats_diff(int *entries);
183
184 network_iface_stat_t *get_network_iface_stats(int *entries);
185
186 page_stat_t *get_page_stats();
187 page_stat_t *get_page_stats_diff();
188
189 int statgrab_init(void);
190 int statgrab_drop_privileges(void);
191