1/* 2 * Copyright (c) 1998-2010 Apple 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#ifndef IOKIT_IOTIMESTAMP_H 29#define IOKIT_IOTIMESTAMP_H 30 31#include <sys/kdebug.h> 32 33static inline void 34IOTimeStampStartConstant(unsigned int csc, 35 uintptr_t a = 0, uintptr_t b = 0, 36 uintptr_t c = 0, uintptr_t d = 0) 37{ 38 KERNEL_DEBUG_CONSTANT(csc | DBG_FUNC_START, a, b, c, d, 0); 39} 40 41static inline void 42IOTimeStampEndConstant(uintptr_t csc, 43 uintptr_t a = 0, uintptr_t b = 0, 44 uintptr_t c = 0, uintptr_t d = 0) 45{ 46 KERNEL_DEBUG_CONSTANT(csc | DBG_FUNC_END, a, b, c, d, 0); 47} 48 49static inline void 50IOTimeStampConstant(uintptr_t csc, 51 uintptr_t a = 0, uintptr_t b = 0, 52 uintptr_t c = 0, uintptr_t d = 0) 53{ 54 KERNEL_DEBUG_CONSTANT(csc | DBG_FUNC_NONE, a, b, c, d, 0); 55} 56 57#if KDEBUG 58 59static inline void 60IOTimeStampStart(uintptr_t csc, 61 uintptr_t a = 0, uintptr_t b = 0, 62 uintptr_t c = 0, uintptr_t d = 0) 63{ 64 KERNEL_DEBUG(csc | DBG_FUNC_START, a, b, c, d, 0); 65} 66 67static inline void 68IOTimeStampEnd(uintptr_t csc, 69 uintptr_t a = 0, uintptr_t b = 0, 70 uintptr_t c = 0, uintptr_t d = 0) 71{ 72 KERNEL_DEBUG(csc | DBG_FUNC_END, a, b, c, d, 0); 73} 74 75static inline void 76IOTimeStamp(uintptr_t csc, 77 uintptr_t a = 0, uintptr_t b = 0, 78 uintptr_t c = 0, uintptr_t d = 0) 79{ 80 KERNEL_DEBUG(csc | DBG_FUNC_NONE, a, b, c, d, 0); 81} 82 83#endif /* KDEBUG */ 84 85#define IODBG_STORAGE(code) (KDBG_CODE(DBG_IOKIT, DBG_IOSTORAGE, code)) 86#define IODBG_NETWORK(code) (KDBG_CODE(DBG_IOKIT, DBG_IONETWORK, code)) 87#define IODBG_KEYBOARD(code) (KDBG_CODE(DBG_IOKIT, DBG_IOKEYBOARD, code)) 88#define IODBG_HID(code) (KDBG_CODE(DBG_IOKIT, DBG_IOHID, code)) 89#define IODBG_AUDIO(code) (KDBG_CODE(DBG_IOKIT, DBG_IOAUDIO, code)) 90#define IODBG_SERIAL(code) (KDBG_CODE(DBG_IOKIT, DBG_IOSERIAL, code)) 91#define IODBG_TTY(code) (KDBG_CODE(DBG_IOKIT, DBG_IOTTY, code)) 92#define IODBG_SAM(code) (KDBG_CODE(DBG_IOKIT, DBG_IOSAM, code)) 93#define IODBG_PARALLELATA(code) (KDBG_CODE(DBG_IOKIT, DBG_IOPARALLELATA, code)) 94#define IODBG_PARALLELSCSI(code) (KDBG_CODE(DBG_IOKIT, DBG_IOPARALLELSCSI, code)) 95#define IODBG_SATA(code) (KDBG_CODE(DBG_IOKIT, DBG_IOSATA, code)) 96#define IODBG_SAS(code) (KDBG_CODE(DBG_IOKIT, DBG_IOSAS, code)) 97#define IODBG_FIBRECHANNEL(code) (KDBG_CODE(DBG_IOKIT, DBG_IOFIBRECHANNEL, code)) 98#define IODBG_USB(code) (KDBG_CODE(DBG_IOKIT, DBG_IOUSB, code)) 99#define IODBG_BLUETOOTH(code) (KDBG_CODE(DBG_IOKIT, DBG_IOBLUETOOTH, code)) 100#define IODBG_FIREWIRE(code) (KDBG_CODE(DBG_IOKIT, DBG_IOFIREWIRE, code)) 101#define IODBG_INFINIBAND(code) (KDBG_CODE(DBG_IOKIT, DBG_IOINFINIBAND, code)) 102 103 104/* Backwards compatibility */ 105#define IODBG_DISK(code) IODBG_STORAGE(code) 106#define IODBG_POINTING(code) IODBG_HID(code) 107 108 109/* IOKit infrastructure subclasses */ 110#define IODBG_INTC(code) (KDBG_CODE(DBG_IOKIT, DBG_IOINTC, code)) 111#define IODBG_WORKLOOP(code) (KDBG_CODE(DBG_IOKIT, DBG_IOWORKLOOP, code)) 112#define IODBG_INTES(code) (KDBG_CODE(DBG_IOKIT, DBG_IOINTES, code)) 113#define IODBG_TIMES(code) (KDBG_CODE(DBG_IOKIT, DBG_IOCLKES, code)) 114#define IODBG_CMDQ(code) (KDBG_CODE(DBG_IOKIT, DBG_IOCMDQ, code)) 115#define IODBG_MCURS(code) (KDBG_CODE(DBG_IOKIT, DBG_IOMCURS, code)) 116#define IODBG_MDESC(code) (KDBG_CODE(DBG_IOKIT, DBG_IOMDESC, code)) 117#define IODBG_POWER(code) (KDBG_CODE(DBG_IOKIT, DBG_IOPOWER, code)) 118#define IODBG_IOSERVICE(code) (KDBG_CODE(DBG_IOKIT, DBG_IOSERVICE, code)) 119 120/* IOKit specific codes - within each subclass */ 121 122/* DBG_IOKIT/DBG_IODISK codes */ 123 124/* DBG_IOKIT/DBG_IONETWORK codes */ 125 126/* DBG_IOKIT/DBG_IOKEYBOARD codes */ 127 128/* DBG_IOKIT/DBG_IOHID codes */ 129 130/* DBG_IOKIT/DBG_IOAUDIO codes */ 131 132/* DBG_IOKIT/DBG_IOSERIAL codes */ 133 134/* DBG_IOKIT/DBG_IOTTY codes */ 135 136/* DBG_IOKIT/DBG_IOINTC codes */ 137#define IOINTC_HANDLER 1 /* 0x05000004 */ 138 139/* DBG_IOKIT/DBG_IOWORKLOOP codes */ 140#define IOWL_CLIENT 1 /* 0x05010004 */ 141#define IOWL_WORK 2 /* 0x05010008 */ 142 143/* DBG_IOKIT/DBG_IOINTES codes */ 144#define IOINTES_CLIENT 1 /* 0x05020004 */ 145#define IOINTES_LAT 2 /* 0x05020008 */ 146#define IOINTES_SEMA 3 /* 0x0502000c */ 147#define IOINTES_INTCTXT 4 /* 0x05020010 */ 148#define IOINTES_INTFLTR 5 /* 0x05020014 */ 149#define IOINTES_ACTION 6 /* 0x05020018 */ 150#define IOINTES_FILTER 7 /* 0x0502001c */ 151 152/* DBG_IOKIT/DBG_IOTIMES codes */ 153#define IOTIMES_CLIENT 1 /* 0x05030004 */ 154#define IOTIMES_LAT 2 /* 0x05030008 */ 155#define IOTIMES_SEMA 3 /* 0x0503000c */ 156#define IOTIMES_ACTION 4 /* 0x05030010 */ 157 158/* DBG_IOKIT/DBG_IOCMDQ codes */ 159#define IOCMDQ_CLIENT 1 /* 0x05040004 */ 160#define IOCMDQ_LAT 2 /* 0x05040008 */ 161#define IOCMDQ_SEMA 3 /* 0x0504000c */ 162#define IOCMDQ_PSEMA 4 /* 0x05040010 */ 163#define IOCMDQ_PLOCK 5 /* 0x05040014 */ 164#define IOCMDQ_ACTION 6 /* 0x05040018 */ 165 166/* DBG_IOKIT/DBG_IOMCURS codes */ 167 168/* DBG_IOKIT/DBG_IOMDESC codes */ 169 170/* DBG_IOKIT/DBG_IOPOWER codes */ 171// See IOKit/pwr_mgt/IOPMlog.h for the power management codes 172 173/* DBG_IOKIT/DBG_IOSERVICE codes */ 174#define IOSERVICE_BUSY 1 /* 0x05080004 */ 175#define IOSERVICE_NONBUSY 2 /* 0x05080008 */ 176#define IOSERVICE_MODULESTALL 3 /* 0x0508000C */ 177#define IOSERVICE_MODULEUNSTALL 4 /* 0x05080010 */ 178 179#define IOSERVICE_TERMINATE_PHASE1 5 /* 0x05080014 */ 180#define IOSERVICE_TERMINATE_REQUEST_OK 6 /* 0x05080018 */ 181#define IOSERVICE_TERMINATE_REQUEST_FAIL 7 /* 0x0508001C */ 182#define IOSERVICE_TERMINATE_SCHEDULE_STOP 8 /* 0x05080020 */ 183#define IOSERVICE_TERMINATE_SCHEDULE_FINALIZE 9 /* 0x05080024 */ 184#define IOSERVICE_TERMINATE_WILL 10 /* 0x05080028 */ 185#define IOSERVICE_TERMINATE_DID 11 /* 0x0508002C */ 186#define IOSERVICE_TERMINATE_DID_DEFER 12 /* 0x05080030 */ 187#define IOSERVICE_TERMINATE_FINALIZE 13 /* 0x05080034 */ 188#define IOSERVICE_TERMINATE_STOP 14 /* 0x05080038 */ 189#define IOSERVICE_TERMINATE_STOP_NOP 15 /* 0x0508003C */ 190#define IOSERVICE_TERMINATE_STOP_DEFER 16 /* 0x05080040 */ 191#define IOSERVICE_TERMINATE_DONE 17 /* 0x05080044 */ 192 193#define IOSERVICE_KEXTD_ALIVE 18 /* 0x05080048 */ 194#define IOSERVICE_KEXTD_READY 19 /* 0x0508004C */ 195#define IOSERVICE_REGISTRY_QUIET 20 /* 0x05080050 */ 196 197#endif /* ! IOKIT_IOTIMESTAMP_H */ 198