The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/iokit/IOKit/IOStatistics.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * Copyright (c) 2010 Apple Computer, Inc. All rights reserved.
    3  *
    4  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
    5  * 
    6  * This file contains Original Code and/or Modifications of Original Code
    7  * as defined in and that are subject to the Apple Public Source License
    8  * Version 2.0 (the 'License'). You may not use this file except in
    9  * compliance with the License. The rights granted to you under the License
   10  * may not be used to create, or enable the creation or redistribution of,
   11  * unlawful or unlicensed copies of an Apple operating system, or to
   12  * circumvent, violate, or enable the circumvention or violation of, any
   13  * terms of an Apple operating system software license agreement.
   14  * 
   15  * Please obtain a copy of the License at
   16  * http://www.opensource.apple.com/apsl/ and read it before using this file.
   17  * 
   18  * The Original Code and all software distributed under the License are
   19  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
   20  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
   21  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
   22  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
   23  * Please see the License for the specific language governing rights and
   24  * limitations under the License.
   25  * 
   26  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
   27  */
   28 
   29 #ifndef _IOKIT_STATISTICS_H
   30 #define _IOKIT_STATISTICS_H
   31 
   32 #define IOSTATISTICS_SIG            'IOST'
   33 #define IOSTATISTICS_SIG_USERCLIENT 'IOSU'
   34 #define IOSTATISTICS_SIG_WORKLOOP   'IOSW'
   35 
   36 /* Update when the binary format changes */
   37 #define IOSTATISTICS_VER                        0x2
   38 
   39 enum {
   40         kIOStatisticsDriverNameLength  = 64,
   41         kIOStatisticsClassNameLength   = 64,
   42         kIOStatisticsProcessNameLength = 20
   43 };
   44 
   45 enum {
   46         kIOStatisticsDerivedEventSourceCounter = 0,
   47         kIOStatisticsTimerEventSourceCounter,
   48         kIOStatisticsCommandGateCounter,
   49         kIOStatisticsCommandQueueCounter,
   50         kIOStatisticsInterruptEventSourceCounter,
   51         kIOStatisticsFilterInterruptEventSourceCounter
   52 };
   53 
   54 typedef uint32_t IOStatisticsCounterType;
   55 
   56 enum {
   57         kIOStatisticsGeneral = 0,
   58         kIOStatisticsWorkLoop,
   59         kIOStatisticsUserClient
   60 };
   61 
   62 /* Keep our alignments as intended */
   63 
   64 #pragma pack(4)
   65 
   66 /* Event Counters */ 
   67 
   68 typedef struct IOStatisticsInterruptEventSources {
   69         uint32_t created;
   70         uint32_t produced;
   71         uint32_t checksForWork; 
   72 } IOStatisticsInterruptEventSources;
   73 
   74 typedef struct IOStatisticsTimerEventSources {
   75         uint32_t created;
   76         uint32_t openGateCalls; 
   77         uint32_t closeGateCalls;
   78         uint64_t timeOnGate;
   79         uint32_t timeouts;
   80         uint32_t checksForWork;
   81 } IOStatisticsTimerEventSources;
   82 
   83 typedef struct IOStatisticsDerivedEventSources {
   84         uint32_t created;
   85         uint32_t openGateCalls;
   86         uint32_t closeGateCalls;
   87         uint64_t timeOnGate;
   88 } IOStatisticsDerivedEventSources;
   89 
   90 typedef struct IOStatisticsCommandGates {
   91         uint32_t created;
   92         uint32_t openGateCalls;
   93         uint32_t closeGateCalls;
   94         uint64_t timeOnGate;
   95         uint32_t actionCalls;
   96 } IOStatisticsCommandGates;
   97  
   98 typedef struct IOStatisticsCommandQueues {
   99         uint32_t created;
  100         uint32_t actionCalls;
  101 } IOStatisticsCommandQueues;
  102  
  103 typedef struct IOStatisticsUserClients {
  104         uint32_t created;
  105         uint32_t clientCalls;
  106 } IOStatisticsUserClients;
  107 
  108 /* General mode */
  109 
  110 typedef struct IOStatisticsHeader {
  111         uint32_t sig; /* 'IOST' */
  112         uint32_t ver; /* incremented with every data revision */
  113 
  114         uint32_t seq; /* sequence ID */
  115 
  116         uint32_t globalStatsOffset;
  117         uint32_t kextStatsOffset;
  118         uint32_t memoryStatsOffset;
  119         uint32_t classStatsOffset;
  120         uint32_t counterStatsOffset;
  121         uint32_t kextIdentifiersOffset;
  122         uint32_t classNamesOffset;
  123 
  124         /* struct IOStatisticsGlobal */
  125         /* struct IOStatisticsKext */
  126         /* struct IOStatisticsMemory */
  127         /* struct IOStatisticsClass */
  128         /* struct IOStatisticsCounter */
  129         /* struct IOStatisticsKextIdentifier */
  130         /* struct IOStatisticsClassName */
  131 } IOStatisticsHeader;
  132 
  133 typedef struct IOStatisticsGlobal {
  134         uint32_t kextCount;
  135         uint32_t classCount;
  136         uint32_t workloops;
  137 } IOStatisticsGlobal;
  138 
  139 typedef struct IOStatisticsKext {
  140         uint32_t loadTag;
  141         uint32_t loadSize;
  142         uint32_t wiredSize;
  143         uint32_t classes; /* Number of classes owned */
  144         uint32_t classIndexes[]; /* Variable length array of owned class indexes */
  145 } IOStatisticsKext;
  146 
  147 typedef struct IOStatisticsMemory {
  148         uint32_t allocatedSize;
  149         uint32_t freedSize;
  150         uint32_t allocatedAlignedSize;
  151         uint32_t freedAlignedSize;
  152         uint32_t allocatedContiguousSize;
  153         uint32_t freedContiguousSize;
  154         uint32_t allocatedPageableSize;
  155         uint32_t freedPageableSize;
  156 } IOStatisticsMemory;
  157 
  158 typedef struct IOStatisticsClass {
  159         uint32_t classID;
  160         uint32_t superClassID;
  161         uint32_t classSize;
  162 } IOStatisticsClass;
  163 
  164 typedef struct IOStatisticsCounter {
  165         uint32_t classID;
  166         uint32_t classInstanceCount;
  167         struct IOStatisticsUserClients userClientStatistics;
  168         struct IOStatisticsInterruptEventSources interruptEventSourceStatistics;
  169         struct IOStatisticsInterruptEventSources filterInterruptEventSourceStatistics;
  170         struct IOStatisticsTimerEventSources timerEventSourceStatistics;
  171         struct IOStatisticsCommandGates commandGateStatistics;
  172         struct IOStatisticsCommandQueues commandQueueStatistics;
  173         struct IOStatisticsDerivedEventSources derivedEventSourceStatistics;
  174 } IOStatisticsCounter;
  175 
  176 typedef struct IOStatisticsKextIdentifier {
  177         char identifier[kIOStatisticsDriverNameLength];
  178 } IOStatisticsKextIdentifier;
  179 
  180 typedef struct IOStatisticsClassName {
  181         char name[kIOStatisticsClassNameLength];
  182 } IOStatisticsClassName;
  183 
  184 /* WorkLoop mode */
  185 
  186 typedef struct IOStatisticsWorkLoop {
  187         uint32_t attachedEventSources;
  188         uint64_t timeOnGate;
  189         uint32_t kextLoadTag;
  190         uint32_t dependentKexts;
  191         uint32_t dependentKextLoadTags[];
  192 } IOStatisticsWorkLoop;
  193 
  194 typedef struct IOStatisticsWorkLoopHeader {
  195         uint32_t sig; /* 'IOSW */
  196         uint32_t ver; /* incremented with every data revision */
  197         uint32_t seq; /* sequence ID */
  198         uint32_t workloopCount;
  199         struct IOStatisticsWorkLoop workLoopStats;
  200 } IOStatisticsWorkLoopHeader;
  201 
  202 /* UserClient mode */
  203 
  204 typedef struct IOStatisticsUserClientCall {
  205         char processName[kIOStatisticsProcessNameLength];
  206         int32_t pid;
  207         uint32_t calls;
  208 } IOStatisticsUserClientCall;
  209 
  210 typedef struct IOStatisticsUserClientHeader {
  211         uint32_t sig; /* 'IOSU */
  212         uint32_t ver; /* incremented with every data revision */        
  213         uint32_t seq; /* sequence ID */
  214         uint32_t processes;
  215         struct IOStatisticsUserClientCall userClientCalls[];
  216 } IOStatisticsUserClientHeader;
  217 
  218 #pragma pack()
  219 
  220 #endif /* _IOKIT_STATISTICS_H */

Cache object: b88df30ee82eaae1dc8570fedc969f34


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.