xref: /titanic_52/usr/src/lib/libzonestat/common/zonestat.h (revision efd4c9b63ad77503c101fc6c2ed8ba96c9d52964)
1*efd4c9b6SSteve Lawrence /*
2*efd4c9b6SSteve Lawrence  * CDDL HEADER START
3*efd4c9b6SSteve Lawrence  *
4*efd4c9b6SSteve Lawrence  * The contents of this file are subject to the terms of the
5*efd4c9b6SSteve Lawrence  * Common Development and Distribution License (the "License").
6*efd4c9b6SSteve Lawrence  * You may not use this file except in compliance with the License.
7*efd4c9b6SSteve Lawrence  *
8*efd4c9b6SSteve Lawrence  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*efd4c9b6SSteve Lawrence  * or http://www.opensolaris.org/os/licensing.
10*efd4c9b6SSteve Lawrence  * See the License for the specific language governing permissions
11*efd4c9b6SSteve Lawrence  * and limitations under the License.
12*efd4c9b6SSteve Lawrence  *
13*efd4c9b6SSteve Lawrence  * When distributing Covered Code, include this CDDL HEADER in each
14*efd4c9b6SSteve Lawrence  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*efd4c9b6SSteve Lawrence  * If applicable, add the following below this CDDL HEADER, with the
16*efd4c9b6SSteve Lawrence  * fields enclosed by brackets "[]" replaced with your own identifying
17*efd4c9b6SSteve Lawrence  * information: Portions Copyright [yyyy] [name of copyright owner]
18*efd4c9b6SSteve Lawrence  *
19*efd4c9b6SSteve Lawrence  * CDDL HEADER END
20*efd4c9b6SSteve Lawrence  */
21*efd4c9b6SSteve Lawrence 
22*efd4c9b6SSteve Lawrence /*
23*efd4c9b6SSteve Lawrence  * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
24*efd4c9b6SSteve Lawrence  */
25*efd4c9b6SSteve Lawrence 
26*efd4c9b6SSteve Lawrence #ifndef _ZONESTAT_H
27*efd4c9b6SSteve Lawrence #define	_ZONESTAT_H
28*efd4c9b6SSteve Lawrence 
29*efd4c9b6SSteve Lawrence 
30*efd4c9b6SSteve Lawrence 
31*efd4c9b6SSteve Lawrence #include <limits.h>
32*efd4c9b6SSteve Lawrence #include <sys/types.h>
33*efd4c9b6SSteve Lawrence #include <sys/time.h>
34*efd4c9b6SSteve Lawrence #include <sys/param.h>
35*efd4c9b6SSteve Lawrence #include <sys/pset.h>
36*efd4c9b6SSteve Lawrence #include <sys/zone.h>
37*efd4c9b6SSteve Lawrence 
38*efd4c9b6SSteve Lawrence #ifdef __cplusplus
39*efd4c9b6SSteve Lawrence extern "C" {
40*efd4c9b6SSteve Lawrence #endif
41*efd4c9b6SSteve Lawrence 
42*efd4c9b6SSteve Lawrence #define	ZS_IPTYPE_SHARED	1
43*efd4c9b6SSteve Lawrence #define	ZS_IPTYPE_EXCLUSIVE	2
44*efd4c9b6SSteve Lawrence 
45*efd4c9b6SSteve Lawrence #define	ZS_CPUTYPE_DEFAULT_PSET	1
46*efd4c9b6SSteve Lawrence #define	ZS_CPUTYPE_POOL_PSET	2
47*efd4c9b6SSteve Lawrence #define	ZS_CPUTYPE_PSRSET_PSET	3
48*efd4c9b6SSteve Lawrence #define	ZS_CPUTYPE_DEDICATED	4
49*efd4c9b6SSteve Lawrence 
50*efd4c9b6SSteve Lawrence 
51*efd4c9b6SSteve Lawrence #define	ZS_LIMIT_NONE			(UINT64_MAX)
52*efd4c9b6SSteve Lawrence #define	ZS_PCT_NONE			(UINT_MAX)
53*efd4c9b6SSteve Lawrence #define	ZS_SHARES_UNLIMITED		(UINT16_MAX)
54*efd4c9b6SSteve Lawrence 
55*efd4c9b6SSteve Lawrence #define	ZS_ZONENAME_MAX			ZONENAME_MAX
56*efd4c9b6SSteve Lawrence #define	ZS_PSETNAME_MAX			(1024 + 1)
57*efd4c9b6SSteve Lawrence #define	ZS_POOLNAME_MAX			(1024 + 1)
58*efd4c9b6SSteve Lawrence 
59*efd4c9b6SSteve Lawrence #define	ZS_RESOURCE_TYPE_TIME		1
60*efd4c9b6SSteve Lawrence #define	ZS_RESOURCE_TYPE_COUNT		2
61*efd4c9b6SSteve Lawrence #define	ZS_RESOURCE_TYPE_BYTES		3
62*efd4c9b6SSteve Lawrence 
63*efd4c9b6SSteve Lawrence #define	ZS_LIMIT_TYPE_TIME		1
64*efd4c9b6SSteve Lawrence #define	ZS_LIMIT_TYPE_COUNT		2
65*efd4c9b6SSteve Lawrence #define	ZS_LIMIT_TYPE_BYTES		3
66*efd4c9b6SSteve Lawrence 
67*efd4c9b6SSteve Lawrence #define	ZS_PROP_TYPE_STRING		1
68*efd4c9b6SSteve Lawrence #define	ZS_PROP_TYPE_TIME		2
69*efd4c9b6SSteve Lawrence #define	ZS_PROP_TYPE_UINT64		3
70*efd4c9b6SSteve Lawrence #define	ZS_PROP_TYPE_INT64		4
71*efd4c9b6SSteve Lawrence #define	ZS_PROP_TYPE_UINT		5
72*efd4c9b6SSteve Lawrence #define	ZS_PROP_TYPE_INT		6
73*efd4c9b6SSteve Lawrence #define	ZS_PROP_TYPE_DOUBLE		7
74*efd4c9b6SSteve Lawrence 
75*efd4c9b6SSteve Lawrence #define	ZS_SCHED_TS			0x1
76*efd4c9b6SSteve Lawrence #define	ZS_SCHED_IA			0x2
77*efd4c9b6SSteve Lawrence #define	ZS_SCHED_RT			0x4
78*efd4c9b6SSteve Lawrence #define	ZS_SCHED_FX			0x8
79*efd4c9b6SSteve Lawrence #define	ZS_SCHED_FX_60			0x10
80*efd4c9b6SSteve Lawrence #define	ZS_SCHED_FSS			0x20
81*efd4c9b6SSteve Lawrence #define	ZS_SCHED_CONFLICT		0x40
82*efd4c9b6SSteve Lawrence 
83*efd4c9b6SSteve Lawrence #define	ZS_RESOURCE_PROP_CPU_TOTAL	1
84*efd4c9b6SSteve Lawrence #define	ZS_RESOURCE_PROP_CPU_ONLINE	2
85*efd4c9b6SSteve Lawrence #define	ZS_RESOURCE_PROP_CPU_LOAD_1MIN	3
86*efd4c9b6SSteve Lawrence #define	ZS_RESOURCE_PROP_CPU_LOAD_5MIN	4
87*efd4c9b6SSteve Lawrence #define	ZS_RESOURCE_PROP_CPU_LOAD_15MIN	5
88*efd4c9b6SSteve Lawrence 
89*efd4c9b6SSteve Lawrence #define	ZS_RESOURCE_CPU			1
90*efd4c9b6SSteve Lawrence #define	ZS_RESOURCE_RAM_RSS		2
91*efd4c9b6SSteve Lawrence #define	ZS_RESOURCE_RAM_LOCKED		3
92*efd4c9b6SSteve Lawrence #define	ZS_RESOURCE_VM			4
93*efd4c9b6SSteve Lawrence #define	ZS_RESOURCE_DISK_SWAP		5
94*efd4c9b6SSteve Lawrence #define	ZS_RESOURCE_LWPS		6
95*efd4c9b6SSteve Lawrence #define	ZS_RESOURCE_PROCESSES		7
96*efd4c9b6SSteve Lawrence #define	ZS_RESOURCE_SHM_MEMORY		8
97*efd4c9b6SSteve Lawrence #define	ZS_RESOURCE_SHM_IDS		9
98*efd4c9b6SSteve Lawrence #define	ZS_RESOURCE_SEM_IDS		10
99*efd4c9b6SSteve Lawrence #define	ZS_RESOURCE_MSG_IDS		11
100*efd4c9b6SSteve Lawrence #define	ZS_RESOURCE_LOFI		12
101*efd4c9b6SSteve Lawrence 
102*efd4c9b6SSteve Lawrence #define	ZS_USER_ALL			1
103*efd4c9b6SSteve Lawrence #define	ZS_USER_KERNEL			2
104*efd4c9b6SSteve Lawrence #define	ZS_USER_ZONES			3
105*efd4c9b6SSteve Lawrence #define	ZS_USER_FREE			4
106*efd4c9b6SSteve Lawrence 
107*efd4c9b6SSteve Lawrence #define	ZS_LIMIT_CPU			1
108*efd4c9b6SSteve Lawrence #define	ZS_LIMIT_CPU_SHARES		2
109*efd4c9b6SSteve Lawrence #define	ZS_LIMIT_RAM_RSS		3
110*efd4c9b6SSteve Lawrence #define	ZS_LIMIT_RAM_LOCKED		4
111*efd4c9b6SSteve Lawrence #define	ZS_LIMIT_VM			5
112*efd4c9b6SSteve Lawrence #define	ZS_LIMIT_LWPS			6
113*efd4c9b6SSteve Lawrence #define	ZS_LIMIT_PROCESSES		7
114*efd4c9b6SSteve Lawrence #define	ZS_LIMIT_SHM_MEMORY		8
115*efd4c9b6SSteve Lawrence #define	ZS_LIMIT_SHM_IDS		9
116*efd4c9b6SSteve Lawrence #define	ZS_LIMIT_MSG_IDS		10
117*efd4c9b6SSteve Lawrence #define	ZS_LIMIT_SEM_IDS		11
118*efd4c9b6SSteve Lawrence #define	ZS_LIMIT_LOFI			12
119*efd4c9b6SSteve Lawrence 
120*efd4c9b6SSteve Lawrence #define	ZS_ZONE_PROP_NAME		1
121*efd4c9b6SSteve Lawrence #define	ZS_ZONE_PROP_ID			2
122*efd4c9b6SSteve Lawrence #define	ZS_ZONE_PROP_IPTYPE		3
123*efd4c9b6SSteve Lawrence #define	ZS_ZONE_PROP_CPUTYPE		4
124*efd4c9b6SSteve Lawrence #define	ZS_ZONE_PROP_DEFAULT_SCHED	5
125*efd4c9b6SSteve Lawrence #define	ZS_ZONE_PROP_SCHEDULERS		6
126*efd4c9b6SSteve Lawrence #define	ZS_ZONE_PROP_CPU_SHARES		7
127*efd4c9b6SSteve Lawrence #define	ZS_ZONE_PROP_POOLNAME		8
128*efd4c9b6SSteve Lawrence #define	ZS_ZONE_PROP_PSETNAME		9
129*efd4c9b6SSteve Lawrence #define	ZS_ZONE_PROP_UPTIME		10
130*efd4c9b6SSteve Lawrence #define	ZS_ZONE_PROP_BOOTTIME		11
131*efd4c9b6SSteve Lawrence 
132*efd4c9b6SSteve Lawrence #define	ZS_PSET_PROP_NAME		1
133*efd4c9b6SSteve Lawrence #define	ZS_PSET_PROP_ID			2
134*efd4c9b6SSteve Lawrence #define	ZS_PSET_PROP_CPUTYPE		3
135*efd4c9b6SSteve Lawrence #define	ZS_PSET_PROP_SIZE		4
136*efd4c9b6SSteve Lawrence #define	ZS_PSET_PROP_ONLINE		5
137*efd4c9b6SSteve Lawrence #define	ZS_PSET_PROP_MIN		6
138*efd4c9b6SSteve Lawrence #define	ZS_PSET_PROP_MAX		7
139*efd4c9b6SSteve Lawrence #define	ZS_PSET_PROP_CPU_SHARES		8
140*efd4c9b6SSteve Lawrence #define	ZS_PSET_PROP_SCHEDULERS		9
141*efd4c9b6SSteve Lawrence #define	ZS_PSET_PROP_CREATETIME		10
142*efd4c9b6SSteve Lawrence #define	ZS_PSET_PROP_LOAD_1MIN		11
143*efd4c9b6SSteve Lawrence #define	ZS_PSET_PROP_LOAD_5MIN		12
144*efd4c9b6SSteve Lawrence #define	ZS_PSET_PROP_LOAD_15MIN		13
145*efd4c9b6SSteve Lawrence 
146*efd4c9b6SSteve Lawrence #define	ZS_PZ_PROP_SCHEDULERS	1
147*efd4c9b6SSteve Lawrence #define	ZS_PZ_PROP_CPU_SHARES	2
148*efd4c9b6SSteve Lawrence #define	ZS_PZ_PROP_CPU_CAP	4
149*efd4c9b6SSteve Lawrence 
150*efd4c9b6SSteve Lawrence #define	ZS_COMPUTE_USAGE_INTERVAL	1
151*efd4c9b6SSteve Lawrence #define	ZS_COMPUTE_USAGE_TOTAL		2
152*efd4c9b6SSteve Lawrence #define	ZS_COMPUTE_USAGE_AVERAGE	3
153*efd4c9b6SSteve Lawrence #define	ZS_COMPUTE_USAGE_HIGH		4
154*efd4c9b6SSteve Lawrence 
155*efd4c9b6SSteve Lawrence #define	ZS_COMPUTE_SET_TOTAL		1
156*efd4c9b6SSteve Lawrence #define	ZS_COMPUTE_SET_AVERAGE		2
157*efd4c9b6SSteve Lawrence #define	ZS_COMPUTE_SET_HIGH		3
158*efd4c9b6SSteve Lawrence 
159*efd4c9b6SSteve Lawrence #define	ZS_PZ_PCT_PSET		1
160*efd4c9b6SSteve Lawrence #define	ZS_PZ_PCT_CPU_CAP	2
161*efd4c9b6SSteve Lawrence #define	ZS_PZ_PCT_PSET_SHARES	3
162*efd4c9b6SSteve Lawrence #define	ZS_PZ_PCT_CPU_SHARES	4
163*efd4c9b6SSteve Lawrence 
164*efd4c9b6SSteve Lawrence 
165*efd4c9b6SSteve Lawrence /* Per-client handle to libzonestat */
166*efd4c9b6SSteve Lawrence typedef struct zs_ctl zs_ctl_t;
167*efd4c9b6SSteve Lawrence 
168*efd4c9b6SSteve Lawrence /*
169*efd4c9b6SSteve Lawrence  * These usage structure contains the system's utilization (overall, zones,
170*efd4c9b6SSteve Lawrence  * psets, memory) at a given point in time.
171*efd4c9b6SSteve Lawrence  */
172*efd4c9b6SSteve Lawrence typedef struct zs_usage zs_usage_t;
173*efd4c9b6SSteve Lawrence 
174*efd4c9b6SSteve Lawrence /*
175*efd4c9b6SSteve Lawrence  * The usage set is for computations on multiple usage structures to describe
176*efd4c9b6SSteve Lawrence  * a range of time.
177*efd4c9b6SSteve Lawrence  */
178*efd4c9b6SSteve Lawrence typedef struct zs_usage_set zs_usage_set_t;
179*efd4c9b6SSteve Lawrence 
180*efd4c9b6SSteve Lawrence /*
181*efd4c9b6SSteve Lawrence  * The following structures desribe each zone, pset, and each zone's usage
182*efd4c9b6SSteve Lawrence  * of each pset.  Each usage structure (above) contains lists of these that
183*efd4c9b6SSteve Lawrence  * can be traversed.
184*efd4c9b6SSteve Lawrence  */
185*efd4c9b6SSteve Lawrence typedef struct zs_zone zs_zone_t;
186*efd4c9b6SSteve Lawrence typedef struct zs_pset zs_pset_t;
187*efd4c9b6SSteve Lawrence typedef struct zs_pset_zone zs_pset_zone_t;
188*efd4c9b6SSteve Lawrence 
189*efd4c9b6SSteve Lawrence /*
190*efd4c9b6SSteve Lawrence  * Opaque structure for properties.
191*efd4c9b6SSteve Lawrence  */
192*efd4c9b6SSteve Lawrence typedef struct zs_property zs_property_t;
193*efd4c9b6SSteve Lawrence 
194*efd4c9b6SSteve Lawrence 
195*efd4c9b6SSteve Lawrence /* functions for opening/closing a handle for reading current usage */
196*efd4c9b6SSteve Lawrence zs_ctl_t *zs_open();
197*efd4c9b6SSteve Lawrence void zs_close(zs_ctl_t *);
198*efd4c9b6SSteve Lawrence 
199*efd4c9b6SSteve Lawrence /* function for reading current resource usage */
200*efd4c9b6SSteve Lawrence zs_usage_t *zs_usage_read(zs_ctl_t *);
201*efd4c9b6SSteve Lawrence 
202*efd4c9b6SSteve Lawrence /* functions for manimulating usage data: zs_usage */
203*efd4c9b6SSteve Lawrence zs_usage_t *zs_usage_compute(zs_usage_t *, zs_usage_t *, zs_usage_t *, int);
204*efd4c9b6SSteve Lawrence void zs_usage_free(zs_usage_t *);
205*efd4c9b6SSteve Lawrence 
206*efd4c9b6SSteve Lawrence /* functions for manipulating sets of usage data: zs_usage_set */
207*efd4c9b6SSteve Lawrence zs_usage_set_t *zs_usage_set_alloc();
208*efd4c9b6SSteve Lawrence void zs_usage_set_free(zs_usage_set_t *);
209*efd4c9b6SSteve Lawrence int zs_usage_set_add(zs_usage_set_t *, zs_usage_t *);
210*efd4c9b6SSteve Lawrence int zs_usage_set_count(zs_usage_set_t *);
211*efd4c9b6SSteve Lawrence zs_usage_t *zs_usage_set_compute(zs_usage_set_t *, int);
212*efd4c9b6SSteve Lawrence 
213*efd4c9b6SSteve Lawrence /* functions for overall system resources: zs_resource */
214*efd4c9b6SSteve Lawrence void zs_resource_property(zs_usage_t *, int, int, zs_property_t *);
215*efd4c9b6SSteve Lawrence int zs_resource_type(int);
216*efd4c9b6SSteve Lawrence uint64_t zs_resource_total_uint64(zs_usage_t *, int);
217*efd4c9b6SSteve Lawrence uint64_t zs_resource_used_uint64(zs_usage_t *, int, int);
218*efd4c9b6SSteve Lawrence uint64_t zs_resource_used_zone_uint64(zs_zone_t *, int);
219*efd4c9b6SSteve Lawrence void zs_resource_total_time(zs_usage_t *, int, timestruc_t *);
220*efd4c9b6SSteve Lawrence void zs_resource_used_time(zs_usage_t *, int, int, timestruc_t *);
221*efd4c9b6SSteve Lawrence void zs_resource_used_zone_time(zs_zone_t *, int, timestruc_t *);
222*efd4c9b6SSteve Lawrence uint_t zs_resource_used_pct(zs_usage_t *, int, int);
223*efd4c9b6SSteve Lawrence uint_t zs_resource_used_zone_pct(zs_zone_t *, int);
224*efd4c9b6SSteve Lawrence 
225*efd4c9b6SSteve Lawrence /* functions for individual zone usage: zs_zone */
226*efd4c9b6SSteve Lawrence int zs_zone_list(zs_usage_t *, zs_zone_t **, int);
227*efd4c9b6SSteve Lawrence zs_zone_t *zs_zone_first(zs_usage_t *);
228*efd4c9b6SSteve Lawrence zs_zone_t *zs_zone_next(zs_usage_t *, zs_zone_t *);
229*efd4c9b6SSteve Lawrence void zs_zone_property(zs_zone_t *, int, zs_property_t *);
230*efd4c9b6SSteve Lawrence int zs_zone_limit_type(int);
231*efd4c9b6SSteve Lawrence uint64_t zs_zone_limit_uint64(zs_zone_t *, int);
232*efd4c9b6SSteve Lawrence uint64_t zs_zone_limit_used_uint64(zs_zone_t *, int);
233*efd4c9b6SSteve Lawrence void zs_zone_limit_time(zs_zone_t *, int, timestruc_t *);
234*efd4c9b6SSteve Lawrence void zs_zone_limit_used_time(zs_zone_t *, int, timestruc_t *);
235*efd4c9b6SSteve Lawrence uint_t zs_zone_limit_used_pct(zs_zone_t *, int);
236*efd4c9b6SSteve Lawrence 
237*efd4c9b6SSteve Lawrence /* functions for individual psets: zs_pset_list */
238*efd4c9b6SSteve Lawrence int zs_pset_list(zs_usage_t *, zs_pset_t **, int);
239*efd4c9b6SSteve Lawrence zs_pset_t *zs_pset_first(zs_usage_t *);
240*efd4c9b6SSteve Lawrence zs_pset_t *zs_pset_next(zs_usage_t *, zs_pset_t *);
241*efd4c9b6SSteve Lawrence void zs_pset_property(zs_pset_t *, int, zs_property_t *);
242*efd4c9b6SSteve Lawrence void zs_pset_total_time(zs_pset_t *, timestruc_t *);
243*efd4c9b6SSteve Lawrence uint64_t zs_pset_total_cpus(zs_pset_t *);
244*efd4c9b6SSteve Lawrence void zs_pset_used_time(zs_pset_t *, int, timestruc_t *);
245*efd4c9b6SSteve Lawrence uint64_t zs_pset_used_cpus(zs_pset_t *, int);
246*efd4c9b6SSteve Lawrence uint_t zs_pset_used_pct(zs_pset_t *, int);
247*efd4c9b6SSteve Lawrence 
248*efd4c9b6SSteve Lawrence /* functions for a pset's per-zone usage: zs_pset_zone */
249*efd4c9b6SSteve Lawrence int zs_pset_zone_list(zs_pset_t *, zs_pset_zone_t **, int);
250*efd4c9b6SSteve Lawrence zs_pset_zone_t *zs_pset_zone_first(zs_pset_t *);
251*efd4c9b6SSteve Lawrence zs_pset_zone_t *zs_pset_zone_next(zs_pset_t *, zs_pset_zone_t *);
252*efd4c9b6SSteve Lawrence zs_zone_t *zs_pset_zone_get_zone(zs_pset_zone_t *);
253*efd4c9b6SSteve Lawrence zs_pset_t *zs_pset_zone_get_pset(zs_pset_zone_t *);
254*efd4c9b6SSteve Lawrence void zs_pset_zone_property(zs_pset_zone_t *, int, zs_property_t *);
255*efd4c9b6SSteve Lawrence void zs_pset_zone_used_time(zs_pset_zone_t *, timestruc_t *);
256*efd4c9b6SSteve Lawrence uint64_t zs_pset_zone_used_cpus(zs_pset_zone_t *);
257*efd4c9b6SSteve Lawrence uint_t zs_pset_zone_used_pct(zs_pset_zone_t *, int);
258*efd4c9b6SSteve Lawrence 
259*efd4c9b6SSteve Lawrence /* functions for accessing properties */
260*efd4c9b6SSteve Lawrence zs_property_t *zs_property_alloc();
261*efd4c9b6SSteve Lawrence size_t zs_property_size();
262*efd4c9b6SSteve Lawrence void zs_property_free(zs_property_t *);
263*efd4c9b6SSteve Lawrence int zs_property_type(zs_property_t *);
264*efd4c9b6SSteve Lawrence int zs_property_id(zs_property_t *);
265*efd4c9b6SSteve Lawrence char *zs_property_string(zs_property_t *);
266*efd4c9b6SSteve Lawrence double zs_property_double(zs_property_t *);
267*efd4c9b6SSteve Lawrence void zs_property_time(zs_property_t *, timestruc_t *);
268*efd4c9b6SSteve Lawrence uint64_t zs_property_uint64(zs_property_t *);
269*efd4c9b6SSteve Lawrence int64_t zs_property_int64(zs_property_t *);
270*efd4c9b6SSteve Lawrence uint_t zs_property_uint(zs_property_t *);
271*efd4c9b6SSteve Lawrence int zs_property_int(zs_property_t *);
272*efd4c9b6SSteve Lawrence 
273*efd4c9b6SSteve Lawrence #ifdef __cplusplus
274*efd4c9b6SSteve Lawrence }
275*efd4c9b6SSteve Lawrence #endif
276*efd4c9b6SSteve Lawrence 
277*efd4c9b6SSteve Lawrence #endif	/* _ZONESTAT_H */
278