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_IMPL_H
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence#define _ZONESTAT_IMPL_H
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence#include <zonestat.h>
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence#include <sys/list.h>
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence#include <sys/priv_const.h>
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence#ifdef __cplusplus
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrenceextern "C" {
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence#endif
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence#define ZS_VERSION 1
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence#define ZS_PSET_DEFAULT PS_NONE
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence#define ZS_PSET_MULTI PS_MYID
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence#define ZS_PSET_ERROR PS_QUERY
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence#define ZS_DOOR_PATH "/etc/svc/volatile/zonestat_door"
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence#define ZSD_CMD_READ 1
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence#define ZSD_CMD_CONNECT 2
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence#define ZSD_CMD_NEW_ZONE 3
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence/* The following read commands are unimplemented */
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence#define ZSD_CMD_READ_TIME 3
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence#define ZSD_CMD_READ_SET 4
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence#define ZSD_CMD_READ_SET_TIME 5
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence#define ZSD_STATUS_OK 0
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence#define ZSD_STATUS_VERSION_MISMATCH 1
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence#define ZSD_STATUS_PERMISSION 2
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence#define ZSD_STATUS_INTERNAL_ERROR 3
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence#define TIMESTRUC_ADD_NANOSEC(ts, nsec) \
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence { \
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence (ts).tv_sec += (time_t)((nsec) / NANOSEC); \
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence (ts).tv_nsec += (long)((nsec) % NANOSEC); \
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence if ((ts).tv_nsec > NANOSEC) { \
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence (ts).tv_sec += (ts).tv_nsec / NANOSEC; \
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence (ts).tv_nsec = (ts).tv_nsec % NANOSEC; \
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence } \
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence }
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence#define TIMESTRUC_ADD_TIMESTRUC(ts, add) \
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence { \
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence (ts).tv_sec += (add).tv_sec; \
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence (ts).tv_nsec += (add).tv_nsec; \
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence if ((ts).tv_nsec > NANOSEC) { \
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence (ts).tv_sec += (ts).tv_nsec / NANOSEC; \
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence (ts).tv_nsec = (ts).tv_nsec % NANOSEC; \
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence } \
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence }
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence#define TIMESTRUC_DELTA(delta, new, old) \
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence { \
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence (delta).tv_sec = (new).tv_sec - (old).tv_sec; \
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence (delta).tv_nsec = (new).tv_nsec - (old).tv_nsec;\
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence if ((delta).tv_nsec < 0) { \
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence delta.tv_nsec += NANOSEC; \
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence delta.tv_sec -= 1; \
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence } \
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence if ((delta).tv_sec < 0) { \
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence delta.tv_sec = 0; \
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence delta.tv_nsec = 0; \
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence } \
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence }
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrencetypedef struct zs_system {
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zss_ram_total;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zss_ram_kern;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zss_ram_zones;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zss_locked_kern;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zss_locked_zones;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zss_vm_total;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zss_vm_kern;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zss_vm_zones;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zss_swap_total;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zss_swap_used;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence timestruc_t zss_cpu_total_time;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence timestruc_t zss_cpu_usage_kern;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence timestruc_t zss_cpu_usage_zones;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zss_processes_max;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zss_lwps_max;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zss_shm_max;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zss_shmids_max;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zss_semids_max;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zss_msgids_max;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zss_lofi_max;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zss_processes;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zss_lwps;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zss_shm;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zss_shmids;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zss_semids;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zss_msgids;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zss_lofi;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zss_ncpus;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zss_ncpus_online;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence} zs_system_t;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrencestruct zs_pset_zone {
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence list_node_t zspz_next;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence struct zs_pset *zspz_pset;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence struct zs_zone *zspz_zone;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence zoneid_t zspz_zoneid;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence time_t zspz_start;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence hrtime_t zspz_hrstart;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint_t zspz_intervals;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zspz_cpu_shares;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint_t zspz_scheds;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence timestruc_t zspz_cpu_usage;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence};
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrencestruct zs_ctl {
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence int zsctl_door;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zsctl_gen;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence zs_usage_t *zsctl_start;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence};
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrencestruct zs_zone {
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence list_node_t zsz_next;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence struct zs_system *zsz_system;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence char zsz_name[ZS_ZONENAME_MAX];
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence char zsz_pool[ZS_POOLNAME_MAX];
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence char zsz_pset[ZS_PSETNAME_MAX];
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence zoneid_t zsz_id;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint_t zsz_cputype;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint_t zsz_iptype;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence time_t zsz_start;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence hrtime_t zsz_hrstart;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint_t zsz_intervals;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint_t zsz_scheds;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zsz_cpu_shares;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zsz_cpu_cap;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zsz_ram_cap;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zsz_vm_cap;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zsz_locked_cap;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zsz_cpus_online;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence timestruc_t zsz_cpu_usage;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence timestruc_t zsz_pset_time;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence timestruc_t zsz_cap_time;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence timestruc_t zsz_share_time;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zsz_usage_ram;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zsz_usage_locked;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zsz_usage_vm;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zsz_processes_cap;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zsz_lwps_cap;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zsz_shm_cap;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zsz_shmids_cap;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zsz_semids_cap;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zsz_msgids_cap;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zsz_lofi_cap;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zsz_processes;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zsz_lwps;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zsz_shm;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zsz_shmids;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zsz_semids;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zsz_msgids;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zsz_lofi;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence};
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrencestruct zs_pset {
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence list_node_t zsp_next;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence char zsp_name[ZS_PSETNAME_MAX];
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence psetid_t zsp_id;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint_t zsp_cputype;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence time_t zsp_start;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence hrtime_t zsp_hrstart;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint_t zsp_intervals;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zsp_online;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zsp_size;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zsp_min;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zsp_max;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence int64_t zsp_importance;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint_t zsp_scheds;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zsp_cpu_shares;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence timestruc_t zsp_total_time;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence timestruc_t zsp_usage_kern;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence timestruc_t zsp_usage_zones;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint_t zsp_nusage;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence list_t zsp_usage_list;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence};
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrencestruct zs_usage {
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence time_t zsu_start;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence hrtime_t zsu_hrstart;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence time_t zsu_time;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence hrtime_t zsu_hrtime;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zsu_size;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint_t zsu_intervals;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zsu_gen;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence boolean_t zsu_mmap;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint_t zsu_nzones;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint_t zsu_npsets;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence zs_system_t *zsu_system;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence list_t zsu_zone_list;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence list_t zsu_pset_list;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence};
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrencestruct zs_usage_set {
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence struct zs_usage *zsus_total;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence struct zs_usage *zsus_avg;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence struct zs_usage *zsus_high;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint_t zsus_count;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence};
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrencestruct zs_property {
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence int zsp_type;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence int zsp_id;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence union zsp_value_union {
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence char zsv_string[ZS_PSETNAME_MAX];
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence timestruc_t zsv_ts;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence double zsv_double;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zsv_uint64;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence int64_t zsv_int64;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint_t zsv_uint;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence int zsv_int;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence } zsp_v;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence};
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrencetypedef struct zs_usage_cache {
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence int zsuc_ref;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint_t zsuc_size;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence uint64_t zsuc_gen;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence zs_usage_t *zsuc_usage;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence} zs_usage_cache_t;
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence#ifdef __cplusplus
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence}
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence#endif
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence
efd4c9b63ad77503c101fc6c2ed8ba96c9d52964Steve Lawrence#endif /* _ZONESTAT_IMPL_H */