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

# User Rev Content
1 tdb 1.22 /*
2 pajs 1.1 * i-scream central monitoring system
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 pajs 1.29 * $Id: statgrab.h,v 1.28 2004/03/04 23:38:29 tdb Exp $
22 pajs 1.1 */
23    
24 pajs 1.21 #include <sys/types.h>
25    
26 pajs 1.1 typedef struct{
27 pajs 1.9 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 pajs 1.1 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 pajs 1.8 char *name_list;
62 pajs 1.1 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 pajs 1.4 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 pajs 1.1 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 tdb 1.28 long long ipackets;
112     long long opackets;
113     long long ierrors;
114     long long oerrors;
115     long long collisions;
116 pajs 1.1 time_t systime;
117     }network_stat_t;
118 pajs 1.24
119     typedef enum{
120     FULL_DUPLEX,
121     HALF_DUPLEX,
122 pajs 1.26 UNKNOWN_DUPLEX
123     }statgrab_duplex;
124 pajs 1.24
125     typedef struct{
126     char *interface_name;
127     int speed; /* In megabits/sec */
128 pajs 1.26 statgrab_duplex dup;
129 pajs 1.27 int up;
130 pajs 1.24 }network_iface_stat_t;
131 pajs 1.1
132     typedef struct{
133 pajs 1.2 long long pages_pagein;
134     long long pages_pageout;
135 pajs 1.1 time_t systime;
136     }page_stat_t;
137 pajs 1.29
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 pajs 1.1
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 pajs 1.5 diskio_stat_t *get_diskio_stats(int *entries);
177 pajs 1.7 diskio_stat_t *get_diskio_stats_diff(int *entries);
178 pajs 1.1
179     process_stat_t *get_process_stats();
180    
181     network_stat_t *get_network_stats(int *entries);
182 pajs 1.4 network_stat_t *get_network_stats_diff(int *entries);
183 pajs 1.25
184     network_iface_stat_t *get_network_iface_stats(int *entries);
185 pajs 1.2
186     page_stat_t *get_page_stats();
187 pajs 1.3 page_stat_t *get_page_stats_diff();
188 pajs 1.14
189     int statgrab_init(void);
190 ats 1.18 int statgrab_drop_privileges(void);
191