Something went wrong. Try again.
Cider Isn't Darwin Emulation, Really
Something went wrong. Try again.
6.4 kB · 220 lines
C
at android
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221/* * Copyright (c) 2010 Apple Computer, Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License * Version 2.0 (the 'License'). You may not use this file except in * compliance with the License. The rights granted to you under the License * may not be used to create, or enable the creation or redistribution of, * unlawful or unlicensed copies of an Apple operating system, or to * circumvent, violate, or enable the circumvention or violation of, any * terms of an Apple operating system software license agreement. * * Please obtain a copy of the License at * http://www.opensource.apple.com/apsl/ and read it before using this file. * * The Original Code and all software distributed under the License are * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. * Please see the License for the specific language governing rights and * limitations under the License. * * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ */
#ifndef _IOKIT_STATISTICS_H#define _IOKIT_STATISTICS_H
#define IOSTATISTICS_SIG 'IOST'#define IOSTATISTICS_SIG_USERCLIENT 'IOSU'#define IOSTATISTICS_SIG_WORKLOOP 'IOSW'
/* Update when the binary format changes */#define IOSTATISTICS_VER 0x2
enum { kIOStatisticsDriverNameLength = 64, kIOStatisticsClassNameLength = 64, kIOStatisticsProcessNameLength = 20};
enum { kIOStatisticsDerivedEventSourceCounter = 0, kIOStatisticsTimerEventSourceCounter, kIOStatisticsCommandGateCounter, kIOStatisticsCommandQueueCounter, kIOStatisticsInterruptEventSourceCounter, kIOStatisticsFilterInterruptEventSourceCounter};
typedef uint32_t IOStatisticsCounterType;
enum { kIOStatisticsGeneral = 0, kIOStatisticsWorkLoop, kIOStatisticsUserClient};
/* Keep our alignments as intended */
#pragma pack(4)
/* Event Counters */
typedef struct IOStatisticsInterruptEventSources { uint32_t created; uint32_t produced; uint32_t checksForWork; } IOStatisticsInterruptEventSources;
typedef struct IOStatisticsTimerEventSources { uint32_t created; uint32_t openGateCalls; uint32_t closeGateCalls; uint64_t timeOnGate; uint32_t timeouts; uint32_t checksForWork;} IOStatisticsTimerEventSources;
typedef struct IOStatisticsDerivedEventSources { uint32_t created; uint32_t openGateCalls; uint32_t closeGateCalls; uint64_t timeOnGate;} IOStatisticsDerivedEventSources;
typedef struct IOStatisticsCommandGates { uint32_t created; uint32_t openGateCalls; uint32_t closeGateCalls; uint64_t timeOnGate; uint32_t actionCalls;} IOStatisticsCommandGates; typedef struct IOStatisticsCommandQueues { uint32_t created; uint32_t actionCalls;} IOStatisticsCommandQueues; typedef struct IOStatisticsUserClients { uint32_t created; uint32_t clientCalls;} IOStatisticsUserClients;
/* General mode */
typedef struct IOStatisticsHeader { uint32_t sig; /* 'IOST' */ uint32_t ver; /* incremented with every data revision */
uint32_t seq; /* sequence ID */
uint32_t globalStatsOffset; uint32_t kextStatsOffset; uint32_t memoryStatsOffset; uint32_t classStatsOffset; uint32_t counterStatsOffset; uint32_t kextIdentifiersOffset; uint32_t classNamesOffset;
/* struct IOStatisticsGlobal */ /* struct IOStatisticsKext */ /* struct IOStatisticsMemory */ /* struct IOStatisticsClass */ /* struct IOStatisticsCounter */ /* struct IOStatisticsKextIdentifier */ /* struct IOStatisticsClassName */} IOStatisticsHeader;
typedef struct IOStatisticsGlobal { uint32_t kextCount; uint32_t classCount; uint32_t workloops;} IOStatisticsGlobal;
typedef struct IOStatisticsKext { uint32_t loadTag; uint32_t loadSize; uint32_t wiredSize; uint32_t classes; /* Number of classes owned */ uint32_t classIndexes[]; /* Variable length array of owned class indexes */} IOStatisticsKext;
typedef struct IOStatisticsMemory { uint32_t allocatedSize; uint32_t freedSize; uint32_t allocatedAlignedSize; uint32_t freedAlignedSize; uint32_t allocatedContiguousSize; uint32_t freedContiguousSize; uint32_t allocatedPageableSize; uint32_t freedPageableSize;} IOStatisticsMemory;
typedef struct IOStatisticsClass { uint32_t classID; uint32_t superClassID; uint32_t classSize;} IOStatisticsClass;
typedef struct IOStatisticsCounter { uint32_t classID; uint32_t classInstanceCount; struct IOStatisticsUserClients userClientStatistics; struct IOStatisticsInterruptEventSources interruptEventSourceStatistics; struct IOStatisticsInterruptEventSources filterInterruptEventSourceStatistics; struct IOStatisticsTimerEventSources timerEventSourceStatistics; struct IOStatisticsCommandGates commandGateStatistics; struct IOStatisticsCommandQueues commandQueueStatistics; struct IOStatisticsDerivedEventSources derivedEventSourceStatistics;} IOStatisticsCounter;
typedef struct IOStatisticsKextIdentifier { char identifier[kIOStatisticsDriverNameLength];} IOStatisticsKextIdentifier;
typedef struct IOStatisticsClassName { char name[kIOStatisticsClassNameLength];} IOStatisticsClassName;
/* WorkLoop mode */
typedef struct IOStatisticsWorkLoop { uint32_t attachedEventSources; uint64_t timeOnGate; uint32_t kextLoadTag; uint32_t dependentKexts; uint32_t dependentKextLoadTags[];} IOStatisticsWorkLoop;
typedef struct IOStatisticsWorkLoopHeader { uint32_t sig; /* 'IOSW */ uint32_t ver; /* incremented with every data revision */ uint32_t seq; /* sequence ID */ uint32_t workloopCount; struct IOStatisticsWorkLoop workLoopStats;} IOStatisticsWorkLoopHeader;
/* UserClient mode */
typedef struct IOStatisticsUserClientCall { char processName[kIOStatisticsProcessNameLength]; int32_t pid; uint32_t calls;} IOStatisticsUserClientCall;
typedef struct IOStatisticsUserClientHeader { uint32_t sig; /* 'IOSU */ uint32_t ver; /* incremented with every data revision */ uint32_t seq; /* sequence ID */ uint32_t processes; struct IOStatisticsUserClientCall userClientCalls[];} IOStatisticsUserClientHeader;
#pragma pack()
#endif /* _IOKIT_STATISTICS_H */