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