1/* 2 * Portions Copyright (c) 1999-2003 Apple Computer, Inc. All Rights 3 * Reserved. 4 * 5 * This file contains Original Code and/or Modifications of Original Code 6 * as defined in and that are subject to the Apple Public Source License 7 * Version 2.0 (the 'License'). You may not use this file except in 8 * compliance with the License. Please obtain a copy of the License at 9 * http://www.opensource.apple.com/apsl/ and read it before using this 10 * file. 11 * 12 * The Original Code and all software distributed under the License are 13 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 14 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 15 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 16 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 17 * Please see the License for the specific language governing rights and 18 * limitations under the License. 19*/ 20 21#include <CoreFoundation/CoreFoundation.h> 22#include <IOKit/IOKitLib.h> 23#include <IOKit/storage/IOBlockStorageDriver.h> 24#include <IOKit/storage/IOMedia.h> 25#include <IOKit/IOBSD.h> 26 27/* record types in sadc raw data output */ 28 29#define SAR_NOTSET 0 30#define SAR_RESTART 1 31#define SAR_TIMESTAMP 2 32#define SAR_NETSTATS 3 33#define SAR_DRIVEPATH 4 34#define SAR_DRIVESTATS 5 35#define SAR_VMSTAT 6 36#define SAR_CPU 7 37 38struct record_hdr 39{ 40 int32_t rec_type; 41 int32_t rec_version; 42 int32_t rec_count; 43 int32_t rec_size; 44}; 45 46#define rec_data rec_size 47#define rec_timestamp rec_size 48 49#define MAXDRIVENAME 31 /* largest drive name we allow */ 50 51#define DPSTATE_UNINITIALIZED 0 52#define DPSTATE_NEW 1 53#define DPSTATE_CHANGED 2 54#define DPSTATE_ACTIVE 3 55 56struct drivepath 57{ 58 int32_t drivepath_id; /* compressed table id */ 59 int32_t state; 60 char BSDName[MAXDRIVENAME + 1]; 61 io_string_t ioreg_path; /* unique id, hardware path */ 62}; 63 64 65struct drivestats 66{ 67 io_registry_entry_t driver; 68 69 int32_t drivepath_id; 70 uint64_t blocksize; 71 72 uint64_t Reads; 73 uint64_t BytesRead; 74 75 uint64_t Writes; 76 uint64_t BytesWritten; 77 78 uint64_t LatentReadTime; 79 uint64_t LatentWriteTime; 80 81 uint64_t ReadErrors; 82 uint64_t WriteErrors; 83 84 uint64_t ReadRetries; 85 uint64_t WriteRetries; 86 87 uint64_t TotalReadTime; 88 uint64_t TotalWriteTime; 89}; 90 91 92/* 93 * netstat mode drives the 94 * collection of ppp interface data 95 */ 96 97#define NET_DEV_MODE 0x1 /* Turn on network interface counters */ 98#define NET_EDEV_MODE 0x2 /* Turn on network interface error counters */ 99#define NET_PPP_MODE 0x4 /* Include ppp interface counters - further 100 * modifies NET_DEV_MODE and NET_EDEV_MODE */ 101 102#define MAX_TNAME_SIZE 15 103#define MAX_TNAME_UNIT_SIZE 23 104 105struct netstats 106{ 107 char tname_unit[MAX_TNAME_UNIT_SIZE + 1]; 108 uint32_t gen_counter; /* unit generation counter */ 109 110 uint64_t net_ipackets; 111 uint64_t net_ierrors; 112 uint64_t net_opackets; 113 uint64_t net_oerrors; 114 uint64_t net_collisions; 115 uint64_t net_ibytes; 116 uint64_t net_obytes; 117 uint64_t net_imcasts; 118 uint64_t net_omcasts; 119 uint64_t net_drops; 120}; 121