ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/libstatgrab/src/libstatgrab/statgrab.h
Revision: 1.31
Committed: Tue Mar 30 22:10:04 2004 UTC (20 years, 1 month ago) by tdb
Content type: text/plain
Branch: MAIN
Changes since 1.30: +2 -2 lines
Log Message:
The startings of the BSD code. Only works on FreeBSD 5 so far.

Doesn't yet do command line arguments, or CPU percentages correctly.

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.30 2004/03/28 18:07:30 pajs 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 enum{
139 RUNNING,
140 SLEEPING,
141 STOPPED,
142 ZOMBIE
143 }process_status;
144
145 typedef struct{
146 char *process_name;
147 char *proctitle;
148
149 pid_t pid;
150 pid_t parent; /* Parent pid */
151 pid_t pgid; /* process id of process group leader */
152
153 uid_t uid;
154 uid_t euid;
155 gid_t gid;
156 gid_t egid;
157
158 unsigned long long proc_size; /* in bytes */
159 unsigned long long proc_resident; /* in bytes */
160 time_t time_spent; /* time running in seconds */
161 double cpu_percent;
162 int nice;
163 process_status state;
164 }proc_state_t;
165
166 int get_proc_snapshot(proc_state_t **proc_state);
167
168 cpu_states_t *get_cpu_totals();
169 cpu_states_t *get_cpu_diff();
170 cpu_percent_t *cpu_percent_usage();
171
172 mem_stat_t *get_memory_stats();
173
174 load_stat_t *get_load_stats();
175
176 user_stat_t *get_user_stats();
177
178 swap_stat_t *get_swap_stats();
179
180 general_stat_t *get_general_stats();
181
182 disk_stat_t *get_disk_stats(int *entries);
183 diskio_stat_t *get_diskio_stats(int *entries);
184 diskio_stat_t *get_diskio_stats_diff(int *entries);
185
186 process_stat_t *get_process_stats();
187
188 network_stat_t *get_network_stats(int *entries);
189 network_stat_t *get_network_stats_diff(int *entries);
190
191 network_iface_stat_t *get_network_iface_stats(int *entries);
192
193 page_stat_t *get_page_stats();
194 page_stat_t *get_page_stats_diff();
195
196 int statgrab_init(void);
197 int statgrab_drop_privileges(void);
198