|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved. ! 3: * ! 4: * @APPLE_LICENSE_HEADER_START@ ! 5: * ! 6: * The contents of this file constitute Original Code as defined in and ! 7: * are subject to the Apple Public Source License Version 1.1 (the ! 8: * "License"). You may not use this file except in compliance with the ! 9: * License. Please obtain a copy of the License at ! 10: * http://www.apple.com/publicsource and read it before using this file. ! 11: * ! 12: * This 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 OR NON-INFRINGEMENT. Please see the ! 17: * License for the specific language governing rights and limitations ! 18: * under the License. ! 19: * ! 20: * @APPLE_LICENSE_HEADER_END@ ! 21: */ ! 22: /* ! 23: * Copyright (c) 1998 Apple Computer, Inc. All rights reserved. ! 24: * ! 25: * HISTORY ! 26: * ! 27: */ ! 28: ! 29: #include <IOKit/IOKitDebug.h> ! 30: #include <IOKit/IOLib.h> ! 31: #include <IOKit/assert.h> ! 32: #include <IOKit/IODeviceTreeSupport.h> ! 33: #include <IOKit/IOService.h> ! 34: ! 35: #include <libkern/c++/OSContainers.h> ! 36: #include <libkern/c++/OSCPPDebug.h> ! 37: ! 38: extern "C" { ! 39: ! 40: SInt64 gIOKitDebug ! 41: #ifdef IOKITDEBUG ! 42: = IOKITDEBUG ! 43: #endif ! 44: ; ! 45: ! 46: int debug_malloc_size; ! 47: int debug_iomalloc_size; ! 48: int debug_container_malloc_size; ! 49: // int debug_ivars_size; // in OSObject.cpp ! 50: ! 51: void IOPrintPlane( const IORegistryPlane * plane ) ! 52: { ! 53: IORegistryEntry * next; ! 54: IORegistryIterator * iter; ! 55: OSOrderedSet * all; ! 56: char format[] = "%xxxs"; ! 57: IOService * service; ! 58: ! 59: iter = IORegistryIterator::iterateOver( plane ); ! 60: assert( iter ); ! 61: all = iter->iterateAll(); ! 62: if( all) { ! 63: IOLog("Count %d\n", all->getCount() ); ! 64: all->release(); ! 65: } else ! 66: IOLog("Empty\n"); ! 67: ! 68: iter->reset(); ! 69: while( (next = iter->getNextObjectRecursive())) { ! 70: sprintf( format + 1, "%ds", next->getDepth( plane )); ! 71: IOLog( format, ""); ! 72: if( (service = OSDynamicCast(IOService, next))) ! 73: IOLog("<%ld>", service->getBusyState()); ! 74: IOLog( "%s\n", next->getName()); ! 75: } ! 76: iter->release(); ! 77: } ! 78: ! 79: void IOPrintMemory( void ) ! 80: { ! 81: ! 82: // OSMetaClass::printInstanceCounts(); ! 83: ! 84: IOLog("\n" ! 85: "ivar kalloc() 0x%08x\n" ! 86: "malloc() 0x%08x\n" ! 87: "containers kalloc() 0x%08x\n" ! 88: "IOMalloc() 0x%08x\n" ! 89: "----------------------------------------\n", ! 90: debug_ivars_size, ! 91: debug_malloc_size, ! 92: debug_container_malloc_size, ! 93: debug_iomalloc_size ! 94: ); ! 95: } ! 96: ! 97: } /* extern "C" */ ! 98: ! 99: /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ ! 100: ! 101: #define super OSObject ! 102: OSDefineMetaClassAndStructors(IOKitDiagnostics, OSObject) ! 103: ! 104: /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ ! 105: ! 106: OSObject * IOKitDiagnostics::diagnostics( void ) ! 107: { ! 108: IOKitDiagnostics * diags; ! 109: ! 110: diags = new IOKitDiagnostics; ! 111: if( diags && !diags->init()) { ! 112: diags->release(); ! 113: diags = 0; ! 114: } ! 115: ! 116: return( diags ); ! 117: } ! 118: ! 119: void IOKitDiagnostics::updateOffset( OSDictionary * dict, ! 120: UInt32 value, const char * name ) ! 121: { ! 122: OSNumber * off; ! 123: ! 124: off = OSNumber::withNumber( value, 32 ); ! 125: if( !off) ! 126: return; ! 127: ! 128: dict->setObject( name, off ); ! 129: off->release(); ! 130: } ! 131: ! 132: ! 133: bool IOKitDiagnostics::serialize(OSSerialize *s) const ! 134: { ! 135: OSDictionary * dict; ! 136: bool ok; ! 137: ! 138: dict = OSDictionary::withCapacity( 5 ); ! 139: if( !dict) ! 140: return( false ); ! 141: ! 142: updateOffset( dict, debug_ivars_size, "Instance allocation" ); ! 143: updateOffset( dict, debug_container_malloc_size, "Container allocation" ); ! 144: updateOffset( dict, debug_iomalloc_size, "IOMalloc allocation" ); ! 145: ! 146: dict->setObject( "Classes", OSMetaClass::getClassDictionary() ); ! 147: ! 148: ok = dict->serialize( s ); ! 149: ! 150: dict->release(); ! 151: ! 152: return( ok ); ! 153: } ! 154: ! 155: /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.