1 /*
   2  * CDDL HEADER START
   3  *
   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License (the "License").
   6  * You may not use this file except in compliance with the License.
   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 /*
  22  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
  23  * Use is subject to license terms.
  24  */
  25 
  26 #ifndef _SDBC_STATS_H
  27 #define _SDBC_STATS_H
  28 
  29 #ifdef  __cplusplus
  30 extern "C" {
  31 #endif
  32 
  33 /*
  34  * Internal flags to denote data collection status
  35  */
  36 #define GOT_SET_KSTAT   0x01
  37 #define GOT_IO_KSTAT    0x02
  38 #define GOT_COMPLETE_SDBC       (GOT_SET_KSTAT | GOT_IO_KSTAT)
  39 
  40 #define SDBC_COMPLETE(x)        (((x) & (GOT_COMPLETE_SDBC)) != \
  41                                     (GOT_COMPLETE_SDBC))
  42 
  43 #define SDBC_KBYTES     0x01
  44 #define SDBC_INTAVG     0x02
  45 
  46 #define KILOBYTE        1024
  47 
  48 typedef struct sdbcstat_s
  49 {
  50         kstat_t                 *pre_set;
  51         kstat_t                 *pre_io;
  52         kstat_t                 *cur_set;
  53         kstat_t                 *cur_io;
  54         int                     collected;
  55         struct sdbcstat_s       *next;
  56 } sdbcstat_t;
  57 
  58 typedef struct sdbcvals_t
  59 {
  60         uint32_t        cache_read;
  61         uint32_t        cache_write;
  62         uint32_t        total_cache;
  63 
  64         float           cache_hit;
  65         float           read_hit;
  66         float           write_hit;
  67 
  68         uint32_t        disk_read;
  69         uint32_t        disk_write;
  70         uint32_t        total_disk;
  71 
  72         uint32_t        destaged;
  73         uint32_t        write_cancellations;
  74 
  75         uint32_t        total_reads;
  76         uint32_t        total_writes;
  77 } sdbcvals_t;
  78 
  79 extern kstat_t *sdbc_global;
  80 
  81 /* Prototypes */
  82 int sdbc_discover(kstat_ctl_t *);
  83 int sdbc_update(kstat_ctl_t *);
  84 int sdbc_report();
  85 sdbcstat_t *sdbc_getstat(char *);
  86 int sdbc_getvalues(sdbcstat_t *, sdbcvals_t *, int);
  87 
  88 #ifdef  __cplusplus
  89 }
  90 #endif
  91 
  92 #endif /* _SDBC_STATS_H */