/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. */ #ifndef _ZONESTAT_H #define _ZONESTAT_H #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif #define ZS_IPTYPE_SHARED 1 #define ZS_IPTYPE_EXCLUSIVE 2 #define ZS_CPUTYPE_DEFAULT_PSET 1 #define ZS_CPUTYPE_POOL_PSET 2 #define ZS_CPUTYPE_PSRSET_PSET 3 #define ZS_CPUTYPE_DEDICATED 4 #define ZS_LIMIT_NONE (UINT64_MAX) #define ZS_PCT_NONE (UINT_MAX) #define ZS_SHARES_UNLIMITED (UINT16_MAX) #define ZS_ZONENAME_MAX ZONENAME_MAX #define ZS_PSETNAME_MAX (1024 + 1) #define ZS_POOLNAME_MAX (1024 + 1) #define ZS_RESOURCE_TYPE_TIME 1 #define ZS_RESOURCE_TYPE_COUNT 2 #define ZS_RESOURCE_TYPE_BYTES 3 #define ZS_LIMIT_TYPE_TIME 1 #define ZS_LIMIT_TYPE_COUNT 2 #define ZS_LIMIT_TYPE_BYTES 3 #define ZS_PROP_TYPE_STRING 1 #define ZS_PROP_TYPE_TIME 2 #define ZS_PROP_TYPE_UINT64 3 #define ZS_PROP_TYPE_INT64 4 #define ZS_PROP_TYPE_UINT 5 #define ZS_PROP_TYPE_INT 6 #define ZS_PROP_TYPE_DOUBLE 7 #define ZS_SCHED_TS 0x1 #define ZS_SCHED_IA 0x2 #define ZS_SCHED_RT 0x4 #define ZS_SCHED_FX 0x8 #define ZS_SCHED_FX_60 0x10 #define ZS_SCHED_FSS 0x20 #define ZS_SCHED_CONFLICT 0x40 #define ZS_RESOURCE_PROP_CPU_TOTAL 1 #define ZS_RESOURCE_PROP_CPU_ONLINE 2 #define ZS_RESOURCE_PROP_CPU_LOAD_1MIN 3 #define ZS_RESOURCE_PROP_CPU_LOAD_5MIN 4 #define ZS_RESOURCE_PROP_CPU_LOAD_15MIN 5 #define ZS_RESOURCE_CPU 1 #define ZS_RESOURCE_RAM_RSS 2 #define ZS_RESOURCE_RAM_LOCKED 3 #define ZS_RESOURCE_VM 4 #define ZS_RESOURCE_DISK_SWAP 5 #define ZS_RESOURCE_LWPS 6 #define ZS_RESOURCE_PROCESSES 7 #define ZS_RESOURCE_SHM_MEMORY 8 #define ZS_RESOURCE_SHM_IDS 9 #define ZS_RESOURCE_SEM_IDS 10 #define ZS_RESOURCE_MSG_IDS 11 #define ZS_RESOURCE_LOFI 12 #define ZS_USER_ALL 1 #define ZS_USER_KERNEL 2 #define ZS_USER_ZONES 3 #define ZS_USER_FREE 4 #define ZS_LIMIT_CPU 1 #define ZS_LIMIT_CPU_SHARES 2 #define ZS_LIMIT_RAM_RSS 3 #define ZS_LIMIT_RAM_LOCKED 4 #define ZS_LIMIT_VM 5 #define ZS_LIMIT_LWPS 6 #define ZS_LIMIT_PROCESSES 7 #define ZS_LIMIT_SHM_MEMORY 8 #define ZS_LIMIT_SHM_IDS 9 #define ZS_LIMIT_MSG_IDS 10 #define ZS_LIMIT_SEM_IDS 11 #define ZS_LIMIT_LOFI 12 #define ZS_ZONE_PROP_NAME 1 #define ZS_ZONE_PROP_ID 2 #define ZS_ZONE_PROP_IPTYPE 3 #define ZS_ZONE_PROP_CPUTYPE 4 #define ZS_ZONE_PROP_DEFAULT_SCHED 5 #define ZS_ZONE_PROP_SCHEDULERS 6 #define ZS_ZONE_PROP_CPU_SHARES 7 #define ZS_ZONE_PROP_POOLNAME 8 #define ZS_ZONE_PROP_PSETNAME 9 #define ZS_ZONE_PROP_UPTIME 10 #define ZS_ZONE_PROP_BOOTTIME 11 #define ZS_PSET_PROP_NAME 1 #define ZS_PSET_PROP_ID 2 #define ZS_PSET_PROP_CPUTYPE 3 #define ZS_PSET_PROP_SIZE 4 #define ZS_PSET_PROP_ONLINE 5 #define ZS_PSET_PROP_MIN 6 #define ZS_PSET_PROP_MAX 7 #define ZS_PSET_PROP_CPU_SHARES 8 #define ZS_PSET_PROP_SCHEDULERS 9 #define ZS_PSET_PROP_CREATETIME 10 #define ZS_PSET_PROP_LOAD_1MIN 11 #define ZS_PSET_PROP_LOAD_5MIN 12 #define ZS_PSET_PROP_LOAD_15MIN 13 #define ZS_PZ_PROP_SCHEDULERS 1 #define ZS_PZ_PROP_CPU_SHARES 2 #define ZS_PZ_PROP_CPU_CAP 4 #define ZS_COMPUTE_USAGE_INTERVAL 1 #define ZS_COMPUTE_USAGE_TOTAL 2 #define ZS_COMPUTE_USAGE_AVERAGE 3 #define ZS_COMPUTE_USAGE_HIGH 4 #define ZS_COMPUTE_SET_TOTAL 1 #define ZS_COMPUTE_SET_AVERAGE 2 #define ZS_COMPUTE_SET_HIGH 3 #define ZS_PZ_PCT_PSET 1 #define ZS_PZ_PCT_CPU_CAP 2 #define ZS_PZ_PCT_PSET_SHARES 3 #define ZS_PZ_PCT_CPU_SHARES 4 /* Per-client handle to libzonestat */ typedef struct zs_ctl zs_ctl_t; /* * These usage structure contains the system's utilization (overall, zones, * psets, memory) at a given point in time. */ typedef struct zs_usage zs_usage_t; /* * The usage set is for computations on multiple usage structures to describe * a range of time. */ typedef struct zs_usage_set zs_usage_set_t; /* * The following structures desribe each zone, pset, and each zone's usage * of each pset. Each usage structure (above) contains lists of these that * can be traversed. */ typedef struct zs_zone zs_zone_t; typedef struct zs_pset zs_pset_t; typedef struct zs_pset_zone zs_pset_zone_t; /* * Opaque structure for properties. */ typedef struct zs_property zs_property_t; /* functions for opening/closing a handle for reading current usage */ zs_ctl_t *zs_open(); void zs_close(zs_ctl_t *); /* function for reading current resource usage */ zs_usage_t *zs_usage_read(zs_ctl_t *); /* functions for manimulating usage data: zs_usage */ zs_usage_t *zs_usage_compute(zs_usage_t *, zs_usage_t *, zs_usage_t *, int); void zs_usage_free(zs_usage_t *); /* functions for manipulating sets of usage data: zs_usage_set */ zs_usage_set_t *zs_usage_set_alloc(); void zs_usage_set_free(zs_usage_set_t *); int zs_usage_set_add(zs_usage_set_t *, zs_usage_t *); int zs_usage_set_count(zs_usage_set_t *); zs_usage_t *zs_usage_set_compute(zs_usage_set_t *, int); /* functions for overall system resources: zs_resource */ void zs_resource_property(zs_usage_t *, int, int, zs_property_t *); int zs_resource_type(int); uint64_t zs_resource_total_uint64(zs_usage_t *, int); uint64_t zs_resource_used_uint64(zs_usage_t *, int, int); uint64_t zs_resource_used_zone_uint64(zs_zone_t *, int); void zs_resource_total_time(zs_usage_t *, int, timestruc_t *); void zs_resource_used_time(zs_usage_t *, int, int, timestruc_t *); void zs_resource_used_zone_time(zs_zone_t *, int, timestruc_t *); uint_t zs_resource_used_pct(zs_usage_t *, int, int); uint_t zs_resource_used_zone_pct(zs_zone_t *, int); /* functions for individual zone usage: zs_zone */ int zs_zone_list(zs_usage_t *, zs_zone_t **, int); zs_zone_t *zs_zone_first(zs_usage_t *); zs_zone_t *zs_zone_next(zs_usage_t *, zs_zone_t *); void zs_zone_property(zs_zone_t *, int, zs_property_t *); int zs_zone_limit_type(int); uint64_t zs_zone_limit_uint64(zs_zone_t *, int); uint64_t zs_zone_limit_used_uint64(zs_zone_t *, int); void zs_zone_limit_time(zs_zone_t *, int, timestruc_t *); void zs_zone_limit_used_time(zs_zone_t *, int, timestruc_t *); uint_t zs_zone_limit_used_pct(zs_zone_t *, int); /* functions for individual psets: zs_pset_list */ int zs_pset_list(zs_usage_t *, zs_pset_t **, int); zs_pset_t *zs_pset_first(zs_usage_t *); zs_pset_t *zs_pset_next(zs_usage_t *, zs_pset_t *); void zs_pset_property(zs_pset_t *, int, zs_property_t *); void zs_pset_total_time(zs_pset_t *, timestruc_t *); uint64_t zs_pset_total_cpus(zs_pset_t *); void zs_pset_used_time(zs_pset_t *, int, timestruc_t *); uint64_t zs_pset_used_cpus(zs_pset_t *, int); uint_t zs_pset_used_pct(zs_pset_t *, int); /* functions for a pset's per-zone usage: zs_pset_zone */ int zs_pset_zone_list(zs_pset_t *, zs_pset_zone_t **, int); zs_pset_zone_t *zs_pset_zone_first(zs_pset_t *); zs_pset_zone_t *zs_pset_zone_next(zs_pset_t *, zs_pset_zone_t *); zs_zone_t *zs_pset_zone_get_zone(zs_pset_zone_t *); zs_pset_t *zs_pset_zone_get_pset(zs_pset_zone_t *); void zs_pset_zone_property(zs_pset_zone_t *, int, zs_property_t *); void zs_pset_zone_used_time(zs_pset_zone_t *, timestruc_t *); uint64_t zs_pset_zone_used_cpus(zs_pset_zone_t *); uint_t zs_pset_zone_used_pct(zs_pset_zone_t *, int); /* functions for accessing properties */ zs_property_t *zs_property_alloc(); size_t zs_property_size(); void zs_property_free(zs_property_t *); int zs_property_type(zs_property_t *); int zs_property_id(zs_property_t *); char *zs_property_string(zs_property_t *); double zs_property_double(zs_property_t *); void zs_property_time(zs_property_t *, timestruc_t *); uint64_t zs_property_uint64(zs_property_t *); int64_t zs_property_int64(zs_property_t *); uint_t zs_property_uint(zs_property_t *); int zs_property_int(zs_property_t *); #ifdef __cplusplus } #endif #endif /* _ZONESTAT_H */