1/* 2 * Copyright (c) 2014 Apple 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#ifndef _AUDIOTRACEPOINTS_H 24#define _AUDIOTRACEPOINTS_H 25 26 27extern UInt32 gAudioStackDebugFlags; 28 29 30#ifdef __cplusplus 31extern "C" { 32#endif 33 34#define AUDIO_SYSCTL "debug.Audio" 35#define kAudioTypeDebug 'AUDD' 36#define DEBUG_UNUSED( X ) ( void )( X ) 37 38 39 typedef struct AudioSysctlArgs 40 { 41 uint32_t type; 42 uint32_t operation; 43 uint32_t debugFlags; 44 } AudioSysctlArgs; 45 46 enum 47 { 48 kAudioOperationGetFlags = 0, 49 kAudioOperationSetFlags = 1 50 }; 51 52 // the following bits/masks are for use in the audio boot args 53 // e.g. boot-args="audio=1" will turn on Trace Points 54 // the bits can also be set with a sysctl call 55 enum 56 { 57 kAudioEnableTracePointsBit = 0, // bit 0 used to turn on Trace Points when IOAudioFamily first loads (usually via an IOAudioDevice) 58 59 kAudioEnableTracePointsMask = (1 << kAudioEnableTracePointsBit), // 0x0001 60 }; 61 62 63 /* Kernel Tracepoints 64 * 65 * Kernel tracepoints are a logging mechanism reduces the size of a log-laden binary. 66 * Codes are placed into a buffer, from the kernel, and picked up by a userspace 67 * tool that displays a unique log message for each tracepoint. Additionally, each 68 * tracepoint may contain up-to four pointer sized arguments. 69 * 70 * To add a tracepoint, use the code below as an example: 71 * AudioTrace( kAudioTDevice, kTPAudioDeviceStart, (uintptr_t)myArgValue ); 72 * Next, add the corresponding tracepoint code in the audiotracer tool, using 73 * the existing examples. Avoid using confidential information in the log strings. 74 * Some functions have a argument counter, to signify which of the function's tracepoints 75 * are actually being logged. When adding a tracepoint using an existing code, you 76 * must verify that you increment this argument counter properly. 77 * 78 * The trace codes consist of the following: 79 * 80 * ---------------------------------------------------------------------- 81 *| Class (8) | SubClass (8) | AudioGroup(6) | Code (8) |Func | 82 *| DBG_IOKIT | DBG_IOAUDIO | | |Qual(2)| 83 * ---------------------------------------------------------------------- 84 * 85 * DBG_IOKIT(05h) DBG_IOAUDIO(24h) 86 * 87 * See <sys/kdebug.h> and IOTimeStamp.h for more details. 88 */ 89 90 91 // AudioGroup (max of 64) 92 enum 93 { 94 // Family groupings 95 kAudioTAppleHDAHistoric = 0, // historic values from <rdar://12678851> 96 kAudioTIOAudioControl = 1, 97 kAudioTIOAudioControlUserClient = 2, 98 kAudioTIOAudioDevice = 3, 99 kAudioTIOAudioEngine = 4, 100 kAudioTIOAudioEngineUserClient = 5, 101 kAudioTIOAudioLevelControl = 6, 102 kAudioTIOAudioPort = 7, 103 kAudioTIOAudioSelectorControl = 8, 104 kAudioTIOAudioStream = 9, 105 kAudioTIOAudioToggleControl = 10, 106 kAudioTIOAudioTimeIntervalFilter = 11, 107 // reserve 12-19 for future IOAudioFamily codes 108 109 kAudioTAppleHDAController = 20, 110 kAudioTAppleHDADriver = 21, 111 kAudioTAppleHDAEngine = 22, 112 kAudioTAppleHDAPath = 23, 113 kAudioTAppleHDACodecGeneric = 24, 114 kAudioTAppleHDANode = 25, 115 kAudioTAppleHDAFunctionGroup = 26, 116 kAudioTAppleHDAWidget = 27, 117 kAudioTAppleHDAEngineOutputDP = 28, 118 // reserve 29-34 for future AppleHDA codes 119 120 kAudioTAppleUSBAudioDevice = 35, 121 kAudioTAppleUSBAudioDictionary = 36, 122 kAudioTAppleUSBAudioEngine = 37, 123 kAudioTAppleUSBAudioStream = 38, 124 kAudioTAppleUSBAudioPlugin = 39 125 126 }; 127 128 // Tracepoint macros. 129#define AUDIO_TRACE(AudioClass, code) ( ( ( DBG_IOKIT & 0xFF ) << 24) | ( ( DBG_IOAUDIO & 0xFF ) << 16 ) | ( ( AudioClass & 0x3F ) << 10 ) | ( ( code & 0xFF ) << 2 ) ) 130 131#define kTPAllAudio AUDIO_TRACE ( 0, 0 ) 132 133 // these macros are used by the tool to coalesce the various types 134#define AUDIO_IOAUDIOCONTROL_TRACE(code) AUDIO_TRACE( kAudioTIOAudioControl, code ) 135#define AUDIO_IOAUDIOCONTROLUSERCLIENT_TRACE(code) AUDIO_TRACE( kAudioTIOAudioControlUserClient, code ) 136#define AUDIO_IOAUDIODEVICE_TRACE(code) AUDIO_TRACE( kAudioTIOAudioDevice, code ) 137#define AUDIO_IOAUDIOENGINE_TRACE(code) AUDIO_TRACE( kAudioTIOAudioEngine, code ) 138#define AUDIO_IOAUDIOENGINEUSERCLIENT_TRACE(code) AUDIO_TRACE( kAudioTIOAudioEngineUserClient, code ) 139#define AUDIO_IOAUDIOLEVELCONTROL_TRACE(code) AUDIO_TRACE( kAudioTIOAudioLevelControl, code ) 140#define AUDIO_IOAUDIOPORT_TRACE(code) AUDIO_TRACE( kAudioTIOAudioPort, code ) 141#define AUDIO_IOAUDIOSELECTORCONTROL_TRACE(code) AUDIO_TRACE( kAudioTIOAudioSelectorControl, code ) 142#define AUDIO_IOAUDIOSTREAM_TRACE(code) AUDIO_TRACE( kAudioTIOAudioStream, code ) 143#define AUDIO_IOAUDIOTOGGLECONTROL_TRACE(code) AUDIO_TRACE( kAudioTIOAudioToggleControl, code ) 144#define AUDIO_IOAUDIOTIMEINTERVAL_TRACE(code) AUDIO_TRACE( kAudioTIOAudioTimeIntervalFilter, code ) 145 146#define AUDIO_APPLEHDAHISTORIC_TRACE(code) AUDIO_TRACE( kAudioTAppleHDAHistoric, code ) 147#define AUDIO_APPLEHDACONTROLLER_TRACE(code) AUDIO_TRACE( kAudioTAppleHDAController, code ) 148#define AUDIO_APPLEHDADRIVER_TRACE(code) AUDIO_TRACE( kAudioTAppleHDADriver, code ) 149#define AUDIO_APPLEHDAENGINE_TRACE(code) AUDIO_TRACE( kAudioTAppleHDAEngine, code ) 150#define AUDIO_APPLEHDAPATH_TRACE(code) AUDIO_TRACE( kAudioTAppleHDAPath, code ) 151#define AUDIO_APPLEHDACODECGENERIC_TRACE(code) AUDIO_TRACE( kAudioTAppleHDACodecGeneric, code ) 152#define AUDIO_APPLEHDANODE_TRACE(code) AUDIO_TRACE( kAudioTAppleHDANode, code ) 153#define AUDIO_APPLEHDAFUNCTIONGROUP_TRACE(code) AUDIO_TRACE( kAudioTAppleHDAFunctionGroup, code ) 154#define AUDIO_APPLEHDAWIDGET_TRACE(code) AUDIO_TRACE( kAudioTAppleHDAWidget, code ) 155#define AUDIO_APPLEHDAENGINEOUTPUTDP_TRACE(code) AUDIO_TRACE( kAudioTAppleHDAEngineOutputDP, code ) 156 157#define AUDIO_APPLEUSBAUDIODEVICE_TRACE(code) AUDIO_TRACE( kAudioTAppleUSBAudioDevice, code ) 158#define AUDIO_APPLEUSBAUDIODICTIONARY_TRACE(code) AUDIO_TRACE( kAudioTAppleUSBAudioDictionary, code ) 159#define AUDIO_APPLEUSBAUDIOENGINE_TRACE(code) AUDIO_TRACE( kAudioTAppleUSBAudioEngine, code ) 160#define AUDIO_APPLEUSBAUDIOSTREAM_TRACE(code) AUDIO_TRACE( kAudioTAppleUSBAudioStream, code ) 161#define AUDIO_APPLEUSBAUDIOPLUGIN_TRACE(code) AUDIO_TRACE( kAudioTAppleUSBAudioPlugin, code ) 162 163 // These are the Tracepoint Codes (8 bits) that are under each audio group 164 // kAudioTIOAudioControl codes (max 256) 165 enum 166 { 167 kTPIOAudioControlCreateUserClient = 0, 168 kTPIOAudioControlSendChangeNotification = 1, 169 kTPIOAudioControlSendQueuedNotifications = 2, 170 kTPIOAudioControlWithAttributes = 3, 171 kTPIOAudioControlInit = 4, 172 kTPIOAudioControlSetType = 5, 173 kTPIOAudioControlSetSubType = 6, 174 kTPIOAudioControlSetChannelName = 7, 175 kTPIOAudioControlSetUsage = 8, 176 kTPIOAudioControlSetCoreAudioPropertyID = 9, 177 kTPIOAudioControlSetReadOnlyFlags = 10, 178 kTPIOAudioControlFree = 11, 179 kTPIOAudioControlStart = 12, 180 kTPIOAudioControlAttachAndStart = 13, 181 kTPIOAudioControlStop = 14, 182 kTPIOAudioControlSetWorkloop = 15, 183 kTPIOAudioControl_SetValueAction = 16, 184 kTPIOAudioControlSetValueAction = 17, 185 kTPIOAudioControlSetValue = 18, 186 kTPIOAudioControlUpdateValue = 19, 187 kTPIOAudioControl_SetValue = 20, 188 kTPIOAudioControlHardwareValueChanged = 21, 189 kTPIOAudioControlSetValueChangedHandler = 22, 190 kTPIOAudioControlSetValueChangedTarget = 23, 191 kTPIOAudioControlPerformValueChange = 24, 192 kTPIOAudioControlGetIntValue = 25, 193 kTPIOAudioControlGetDataBytes = 26, 194 kTPIOAudioControlGetDataLength = 27, 195 kTPIOAudioControlSendValueChangeNotification = 28, 196 kTPIOAudioControlSetControlID = 29, 197 kTPIOAudioControlSetChannelID = 30, 198 kTPIOAudioControlSetChannelNumber = 31, 199 kTPIOAudioControlNewUserClient = 32, 200 kTPIOAudioControlClientClosed = 33, 201 kTPIOAudioControl_AddUserClientAction = 34, 202 kTPIOAudioControlAddUserClientAction = 35, 203 kTPIOAudioControl_RemoveUserClientAction = 36, 204 kTPIOAudioControlRemoveUserClientAction = 37, 205 kTPIOAudioControlDetachUserClientsAction = 38, 206 kTPIOAudioControlAddUserClient = 39, 207 kTPIOAudioControlRemoveUserClient = 40, 208 kTPIOAudioControlDetachUserClients = 41, 209 kTPIOAudioControlSetCommandGateUsage = 42, 210 kTPIOAudioControlSetProperties = 43 211 }; 212 213 214 215 // These are the Tracepoint Codes (8 bits) that are under each audio group 216 // kAudioTIOAudioControlUserClient codes (max 256) 217 enum 218 { 219 kTPIOAudioControlUserClientInitWithAudioControl = 0, 220 kTPIOAudioControlUserClientSendChangeNotification = 1, 221 kTPIOAudioControlUserClientWithAudioControl = 2, 222 kTPIOAudioControlUserClientFree = 3, 223 kTPIOAudioControlUserClientClientClose = 4, 224 kTPIOAudioControlUserClientClientDied = 5, 225 kTPIOAudioControlUserClientRegisterNotificationPort = 6, 226 kTPIOAudioControlUserClientSendValueChangeNotifiation = 7 227 228 }; 229 230 // These are the Tracepoint Codes (8 bits) that are under each audio group 231 // kAudioTIOAudioDevice codes (max 256) 232 enum 233 { 234 kTPIOAudioDeviceInit = 0, 235 kTPIOAudioDeviceFree = 1, 236 kTPIOAudioDeviceInitHardware = 2, 237 kTPIOAudioDeviceStart = 3, 238 kTPIOAudioDeviceStop = 4, 239 kTPIOAudioDeviceWillTerminate = 5, 240 kTPIOAudioDeviceSetPowerState = 6, 241 kTPIOAudioDevice_SetPowerStateAction = 7, 242 kTPIOAudioDeviceSetPowerStateAction = 8, 243 kTPIOAudioDeviceProtectedSetPowerState = 9, 244 kTPIOAudioDeviceWaitForPendingPowerStateChange = 10, 245 kTPIOAudioDeviceInitiatePowerStateChange = 11, 246 kTPIOAudioDeviceCompletePowerStateChange = 12, 247 kTPIOAudioDeviceCompletePowerStateChangeAction = 13, 248 kTPIOAudioDeviceProtectedCompletePowerStateChange = 14, 249 kTPIOAudioDevicePerformPowerStateChange = 15, 250 kTPIOAudioDeviceAudioEngineStarting = 16, 251 kTPIOAudioDeviceAudioEngineStopped = 17, 252 kTPIOAudioDeviceSetDeviceName = 18, 253 kTPIOAudioDeviceSetDeviceShortName = 19, 254 kTPIOAudioDeviceSetManufacturerName = 20, 255 kTPIOAudioDeviceActivateAudioEngine = 21, 256 kTPIOAudioDeviceDeactivateAllAudioEngines = 22, 257 kTPIOAudioDeviceFlushAudioControls = 23, 258 kTPIOAudioDeviceAddTimerEvent = 24, 259 kTPIOAudioDeviceRemoveTimerEvent = 25, 260 kTPIOAudioDeviceRemoveAllTimerEvents = 26, 261 kTPIOAudioDeviceTimerFired = 27, 262 kTPIOAudioDeviceDispatchTimerEvents = 28, 263 264 }; 265 266 // These are the Tracepoint Codes (8 bits) that are under each audio group 267 // kAudioTIOAudioEngine codes (max 256) 268 enum 269 { 270 kTPIOAudioEngineCreateUserClient = 0, 271 kTPIOAudioEngineSetInputSampleOffset = 1, 272 kTPIOAudioEngineSetOutputSampleOffset = 2, 273 kTPIOAudioEngineConvertInputSamplesVBR = 3, 274 kTPIOAudioEngineSetClockDomain = 4, 275 kTPIOAudioEngineGetStreamForID = 5, 276 kTPIOAudioEngineGetNextStreamID = 6, 277 kTPIOAudioEnginePerformFormatChange = 7, 278 kTPIOAudioEngineGetStatusDescriptor = 8, 279 kTPIOAudioEngineGetNearestStartTime = 9, 280 kTPIOAudioEngineEraseOutputSamples = 10, 281 kTPIOAudioEngineSetMixClipOverhead = 11, 282 kTPIOAudioEngineCompareAudioStreams = 12, 283 kTPIOAudioEngineCreateDictionaryFromSampleRate = 13, 284 kTPIOAudioEngineCreateSampleRateFromDictionary = 14, 285 kTPIOAudioEngineInit = 15, 286 kTPIOAudioEngineFree = 16, 287 kTPIOAudioEngineInitHardware = 17, 288 kTPIOAudioEngineStart = 18, 289 kTPIOAudioEngineStop = 19, 290 kTPIOAudioEngineRegisterService = 20, 291 kTPIOAudioEngineGetGlobalUniqueID = 21, 292 kTPIOAudioEngineGetLocalUniqueID = 22, 293 kTPIOAudioEngineSetIndex = 23, 294 kTPIOAudioEngineSetAudioDevice = 24, 295 kTPIOAudioEngineResetStatusBuffer = 25, 296 kTPIOAudioEngineClearAllSampleBuffers = 26, 297 kTPIOAudioEngineNewUserClient = 27, 298 kTPIOAudioEngineClientClosed = 28, 299 kTPIOAudioEngine_AddUserClientAction = 29, 300 kTPIOAudioEngineAddUserClientAction = 30, 301 kTPIOAudioEngine_RemoveUserClientAction = 31, 302 kTPIOAudioEngineRemoveUserClientAction = 32, 303 kTPIOAudioEngineDetachUserClientsAction = 33, 304 kTPIOAudioEngineAddUserClient = 34, 305 kTPIOAudioEngineRemoveUserClient = 35, 306 kTPIOAudioEngineDetachUserClients = 36, 307 kTPIOAudioEngineStartClient = 37, 308 kTPIOAudioEngineStopClient = 38, 309 kTPIOAudioEngineIncrementActiveUserClients = 39, 310 kTPIOAudioEngineDecrementActiveUserClient = 40, 311 kTPIOAudioEngineAddAudioStream = 41, 312 kTPIOAudioEngineDetachAudioStreams = 42, 313 kTPIOAudioEngineLockAllStreams = 43, 314 kTPIOAudioEngineUnlockAllStreams = 44, 315 kTPIOAudioEngineGetAudioStream = 45, 316 kTPIOAudioEngineUpdateChannelNumbers = 46, 317 kTPIOAudioEngineStartAudioEngine = 47, 318 kTPIOAudioEngineStopAudioEngine = 48, 319 kTPIOAudioEnginePauseAudioEngine = 49, 320 kTPIOAudioEngineResumeAudioEngine = 50, 321 kTPIOAudioEngineGetStatus = 51, 322 kTPIOAudioEngineSetNumSampleFramesPerBuffer = 52, 323 kTPIOAudioEngineGetNumSampleFramesPerBuffer = 53, 324 kTPIOAudioEngineGetState = 54, 325 kTPIOAudioEngineSetState = 55, 326 kTPIOAudioEngineGetSampleRate = 56, 327 kTPIOAudioEngineSetSampleRate = 57, 328 kTPIOAudioEngineHardwareSampleRateChanged = 58, 329 kTPIOAudioEngineSetSampleLatency = 59, 330 kTPIOAudioEngineSetOutputSampleLatency = 60, 331 kTPIOAudioEngineSetInputSampleLatency = 61, 332 kTPIOAudioEngineSetSampleOffset = 62, 333 kTPIOAudioEngineSetRunEraseHead = 63, 334 kTPIOAudioEngineGetRunEraseHead = 64, 335 kTPIOAudioEngineGetTimerInterval = 65, 336 kTPIOAudioEngineTimerCallback = 66, 337 kTPIOAudioEngineTimerFired = 67, 338 kTPIOAudioEnginePerformErase = 68, 339 kTPIOAudioEngineStopEngineAtPosition = 69, 340 kTPIOAudioEnginePerformFlush = 70, 341 kTPIOAudioEngineAddTimer = 71, 342 kTPIOAudioEngineRemoveTimer = 72, 343 kTPIOAudioEngineClipOutputSamples = 73, 344 kTPIOAudioEngineConvertInputSamples = 74, 345 kTPIOAudioEngineTakeTimeStamp = 75, 346 kTPIOAudioEngineGetLoopCountAndTimeStamp = 76, 347 kTPIOAudioEngineCalculateSampleTimeout = 77, 348 kTPIOAudioEngineSendFormatChangeNotification = 78, 349 kTPIOAudioEngineSendNotification = 79, 350 kTPIOAudioEngineBeginConfigurationChange = 80, 351 kTPIOAudioEngineCompleteConfigurationChange = 81, 352 kTPIOAudioEngineCancelConfigurationChange = 82, 353 kTPIOAudioEngineAddDefaultAudioControl = 83, 354 kTPIOAudioEngineRemoveDefaultAudioControl = 84, 355 kTPIOAudioEngineRemoveAllDefaultAudioControls = 85, 356 kTPIOAudioEngineSetWorkloopOnAllAudioControls = 86, 357 kTPIOAudioEngineSetCommandGateUsage = 87, 358 kTPIOAudioEngineWaitForEngineResume = 88, 359 kTPIOAudioEngineMixOutputSamples = 89 360 }; 361 362 363 // These are the Tracepoint Codes (8 bits) that are under each audio group 364 // kAudioTIOAudioEngineUserClient codes (max 256) 365 enum 366 { 367 kTPIOAudioEngineUserClientInitWithAudioEngine = 0, 368 kTPIOAudioEngineUserClientSafeRegisterClientBuffer = 1, 369 kTPIOAudioEngineUserClientSafeRegisterClientBuffer64 = 2, 370 kTPIOAudioEngineUserClientRegisterClientParameterBuffer = 3, 371 kTPIOAudioEngineUserClientFindExtendedInfo = 4, 372 kTPIOAudioEngineUserClientFindExtendedInfo64 = 5, 373 kTPIOAudioEngineUserClientGetNearestStartTime = 6, 374 kTPIOAudioEngineUserClient_GetNearestStartTimeAction = 7, 375 kTPIOAudioEngineUserClientGetNearestStartTimeAction = 8, 376 kTPIOAudioEngineUserClientGetClientNearestStartTime = 9, 377 kTPIOAudioEngineUserClientWithAudioEngine = 10, 378 kTPIOAudioEngineUserClientFree = 11, 379 kTPIOAudioEngineUserClientFreeClientBufferSetList = 12, 380 kTPIOAudioEngineUserClientFreeClientBuffer = 13, 381 kTPIOAudioEngineUserClientStop = 14, 382 kTPIOAudioEngineUserClientClientClose = 15, 383 kTPIOAudioEngineUserClientClientDied = 16, 384 kTPIOAudioEngineUserClient_CloseClientAction = 17, 385 kTPIOAudioEngineUserClientCloseClientAction = 18, 386 kTPIOAudioEngineUserClientCloseClient = 19, 387 kTPIOAudioEngineUserClientSetOnline = 20, 388 kTPIOAudioEngineUserClientLockBuffers = 21, 389 kTPIOAudioEngineUserClientUnlockBuffers = 22, 390 kTPIOAudioEngineUserClientClientMemoryForType = 23, 391 kTPIOAudioEngineUserClientGetExternalMemoryForIndex = 24, 392 kTPIOAudioEngineUserClientGetExternalTrapForIndex = 25, 393 kTPIOAudioEngineUserClientRegisterNotificationPort = 26, 394 kTPIOAudioEngineUserClient_RegisterNotificationAction = 27, 395 kTPIOAudioEngineUserClientRegisterNotificationAction = 28, 396 kTPIOAudioEngineUserClientRegisterNotification = 29, 397 kTPIOAudioEngineUserClientExternalMethod = 30, 398 kTPIOAudioEngineUserClientRegisterBuffer = 31, 399 kTPIOAudioEngineUserClientRegisterBuffer64 = 32, 400 kTPIOAudioEngineUserClientUnregisterBuffer = 33, 401 kTPIOAudioEngineUserClientUnregisterBuffer64 = 34, 402 kTPIOAudioEngineUserClient_RegisterBufferAction = 35, 403 kTPIOAudioEngineUserClientRegisterBufferAction = 36, 404 kTPIOAudioEngineUserClient_UnregisterBufferAction = 37, 405 kTPIOAudioEngineUserClientUnregisterBufferAction = 38, 406 kTPIOAudioEngineUserClientRegisterClientBuffer = 39, 407 kTPIOAudioEngineUserClientRegisterClientBuffer64 = 40, 408 kTPIOAudioEngineUserClientUnregisterClientBuffer = 41, 409 kTPIOAudioEngineUserClientUnregisterClientBuffer64 = 42, 410 kTPIOAudioEngineUserClientFindBufferSet = 43, 411 kTPIOAudioEngineUserClientRemoveBufferSet = 44, 412 kTPIOAudioEngineUserClientPerformClientIO = 45, 413 kTPIOAudioEngineUserClientPerformClientOutput = 46, 414 kTPIOAudioEngineUserClientPerformClientInput = 47, 415 kTPIOAudioEngineUserClientPerformWatchdogOutput = 48, 416 kTPIOAudioEngineUserClientGetConnectionID = 49, 417 kTPIOAudioEngineUserClientClientStart = 50, 418 kTPIOAudioEngineUserClientClientStop = 51, 419 kTPIOAudioEngineUserClient_StartClientAction = 52, 420 kTPIOAudioEngineUserClientStartClientAction = 53, 421 kTPIOAudioEngineUserClient_StopClientAction = 54, 422 kTPIOAudioEngineUserClientStopClientAction = 55, 423 kTPIOAudioEngineUserClientStartClient = 56, 424 kTPIOAudioEngineUserClientStopClient = 57, 425 kTPIOAudioEngineUserClientSendFormatChangeNotification = 58, 426 kTPIOAudioEngineUserClientSendNotification = 59, 427 kTPIOAudioEngineUserClientSetCommandGateUsage = 60 428 429 }; 430 431 // These are the Tracepoint Codes (8 bits) that are under each audio group 432 // kAudioTIOAudioLevelControl codes (max 256) 433 enum 434 { 435 kTPIOAudioLevelControlCreatePassThroughVolumeControl = 0, 436 kTPIOAudioLevelControlSetLinearScale = 1, 437 kTPIOAudioLevelControlCreate = 2, 438 kTPIOAudioLevelControlCreateVolumeControl = 3, 439 kTPIOAudioLevelControlInit = 4, 440 kTPIOAudioLevelControlFree = 5, 441 kTPIOAudioLevelControlSetMinValue = 6, 442 kTPIOAudioLevelControlGetMinValue = 7, 443 kTPIOAudioLevelControlSetMaxValue = 8, 444 kTPIOAudioLevelControlGetMaxValue = 9, 445 kTPIOAudioLevelControlSetMinDB = 10, 446 kTPIOAudioLevelControlGetMinDB = 11, 447 kTPIOAudioLevelControlSetMaxDB = 12, 448 kTPIOAudioLevelControlGetMaxDB = 13, 449 kTPIOAudioLevelControlAddNegativeInfinity = 14, 450 kTPIOAudioLevelControlValidateValue = 15 451 }; 452 453 454 // These are the Tracepoint Codes (8 bits) that are under each audio group 455 // kAudioTIOAudioPort codes (max 256) 456 enum 457 { 458 kTPIOAudioPortWithAttributes = 0, 459 kTPIOAudioPortInitWithAttributes = 1, 460 kTPIOAudioPortFree = 2, 461 kTPIOAudioPortSetType = 3, 462 kTPIOAudioPortSetSubType = 4, 463 kTPIOAudioPortSetName = 5, 464 kTPIOAudioPortStart = 6, 465 kTPIOAudioPortStop = 7, 466 kTPIOAudioPortRegisterService = 8, 467 kTPIOAudioPortGetAudioDevice = 9, 468 kTPIOAudioPortAddAudioControl = 10, 469 kTPIOAudioPortDeactivateAudioControls = 11 470 }; 471 472 473 // These are the Tracepoint Codes (8 bits) that are under each audio group 474 // kAudioTIOAudioSelectorControl codes (max 256) 475 enum 476 { 477 kTPIOAudioSelectorControlCreateOutputClockSelector = 0, 478 kTPIOAudioSelectorControlCreateInputClockSelector = 1, 479 kTPIOAudioSelectorControlCreateOutputSelector = 2, 480 kTPIOAudioSelectorControlRemoveAvailableSelection = 3, 481 kTPIOAudioSelectorControlReplaceAvailableSelection = 4, 482 kTPIOAudioSelectorControlCreate = 5, 483 kTPIOAudioSelectorControlCreateInputSelector = 6, 484 kTPIOAudioSelectorControlInit = 7, 485 kTPIOAudioSelectorControlFree = 8, 486 kTPIOAudioSelectorControlAddAvailableSelection = 9, 487 kTPIOAudioSelectorControlValueExists = 10, 488 kTPIOAudioSelectorControlValidateValue = 11 489 }; 490 491 // These are the Tracepoint Codes (8 bits) that are under each audio group 492 // kAudioTIOAudioStream codes (max 256) 493 enum 494 { 495 kTPIOAudioStreamSafeLogError = 0, 496 kTPIOAudioStreamValidateFormat = 1, 497 kTPIOAudioStreamGetFormatExtension = 2, 498 kTPIOAudioStreamSetFormat = 3, 499 kTPIOAudioStreamAddAvailableFormat = 4, 500 kTPIOAudioStreamSetTerminalType = 5, 501 kTPIOAudioStreamMixOutputSamples = 6, 502 kTPIOAudioStreamSetSampleLatency = 7, 503 kTPIOAudioStreamGetNumSampleFramesRead = 8, 504 kTPIOAudioStreamSetDefaultNumSampleFramesRead = 9, 505 kTPIOAudioStreamInitKeys = 10, 506 kTPIOAudioStreamCreateDictionaryFromFormat = 11, 507 kTPIOAudioStreamCreateFormatFromDictionary = 12, 508 kTPIOAudioStreamInitWithAudioEngine = 13, 509 kTPIOAudioStreamFree = 14, 510 kTPIOAudioStreamStop = 15, 511 kTPIOAudioStreamSetProperties = 16, 512 kTPIOAudioStreamSetDirection = 17, 513 kTPIOAudioStreamGetDirection = 18, 514 kTPIOAudioStreamSetSampleBuffer = 19, 515 kTPIOAudioStreamGetSampleBuffer = 20, 516 kTPIOAudioStreamGetSampleBufferSize = 21, 517 kTPIOAudioStreamSetMixBuffer = 22, 518 kTPIOAudioStreamGetMixBuffer = 23, 519 kTPIOAudioStreamGetMixBufferSize = 24, 520 kTPIOAudioStreamNumSampleFramesPerBufferChanged = 25, 521 kTPIOAudioStreamClearSampleBuffer = 26, 522 kTPIOAudioStreamSetIOFunction = 27, 523 kTPIOAudioStreamSetIOFunctionList = 28, 524 kTPIOAudioStreamGetFormat = 29, 525 kTPIOAudioStream_SetFormatAction = 30, 526 kTPIOAudioStreamSetFormatAction = 31, 527 kTPIOAudioStreamHardwareFormatChanged = 32, 528 kTPIOAudioStreamClearAvailableFormats = 33, 529 kTPIOAudioStreamValidateFormats = 34, 530 kTPIOAudioStreamGetStartingChannelID = 35, 531 kTPIOAudioStreamGetMaxNumChannels = 36, 532 kTPIOAudioStreamSetStartingChannelNumber = 37, 533 kTPIOAudioStreamUpdateNumClients = 38, 534 kTPIOAudioStreamAddClient = 39, 535 kTPIOAudioStreamRemoveClient = 40, 536 kTPIOAudioStreamGetNumClients = 41, 537 kTPIOAudioStreamDumpList = 42, 538 kTPIOAudioStreamValidateList = 43, 539 kTPIOAudioStreamReadInputSamples = 44, 540 kTPIOAudioStreamProcessOutputSamples = 45, 541 kTPIOAudioStreamResetClipInfo = 46, 542 kTPIOAudioStreamClipIfNecessary = 47, 543 kTPIOAudioStreamClipOutputSamples = 48, 544 kTPIOAudioStreamLockStreamForIO = 49, 545 kTPIOAudioStreamUnlockStreamForIO = 50, 546 kTPIOAudioStreamSetStreamAvailable = 51, 547 kTPIOAudioStreamGetStreamAvailable = 52, 548 kTPIOAudioStreamAddDefaultAudioControl = 53, 549 kTPIOAudioStreamRemoveDefaultAudioControls = 54 550 }; 551 552 // These are the Tracepoint Codes (8 bits) that are under each audio group 553 // kAudioTIOAudioToggleControl codes (max 256) 554 enum 555 { 556 kTPIOAudioToggleControlCreatePassThroughMuteControl = 0, 557 kTPIOAudioToggleControlCreate = 1, 558 kTPIOAudioToggleControlCreateMuteControl = 2, 559 kTPIOAudioToggleControlInit = 3 560 }; 561 562 // These are the Tracepoint Codes (8 bits) that are under each audio group 563 // kAudioTIOAudioTimeIntervalFilter codes (max 256) 564 enum 565 { 566 kTPIOAudioTimeIntervalFilterInitFilter = 0, 567 kTPIOAudioTimeIntervalFilterFree = 1, 568 kTPIOAudioTimeIntervalFilterReInitialiseFilter = 2, 569 kTPIOAudioTimeIntervalFilterNewTimePosition = 3, 570 kTPIOAudioTimeIntervalFilterGetMultiIntervalTime = 4, 571 kTPIOAudioTimeIntervalFilterIIRInitFilter = 5, 572 kTPIOAudioTimeIntervalFilterIIRCalculateNewTimePosition = 6, 573 kTPIOAudioTimeIntervalFilterIIR = 7, 574 kTPIOAudioTimeIntervalFilterFIRInitFilter = 8, 575 kTPIOAudioTimeIntervalFilterFIRSetNewFilter = 9, 576 kTPIOAudioTimeIntervalFilterFIRReInitialiseFilter = 10, 577 kTPIOAudioTimeIntervalFilterFIRFree = 11, 578 kTPIOAudioTimeIntervalFilterFIRCalculateNewTimePosition = 12, 579 kTPIOAudioTimeIntervalFilterFIR = 13 580 }; 581 582 583 584#ifdef KERNEL 585 586#include <IOKit/IOTimeStamp.h> 587 588#define AudioTrace(AudioClass, code, a, b, c, d) { \ 589if (__builtin_expect((gAudioStackDebugFlags & kAudioEnableTracePointsMask), 0)) { \ 590 IOTimeStampConstant( AUDIO_TRACE(AudioClass, code), a, b, c, d ); \ 591 } \ 592} 593 594#define AudioTrace_Start(AudioClass, code, a, b, c, d) { \ 595if (__builtin_expect((gAudioStackDebugFlags & kAudioEnableTracePointsMask), 0)) { \ 596 IOTimeStampStartConstant( AUDIO_TRACE(AudioClass, code), a, b, c, d ); \ 597 } \ 598} 599 600#define AudioTrace_End(AudioClass, code, a, b, c, d) { \ 601 if (__builtin_expect((gAudioStackDebugFlags & kAudioEnableTracePointsMask), 0)) {\ 602 IOTimeStampEndConstant( AUDIO_TRACE(AudioClass, code), a, b, c, d ); \ 603 } \ 604} 605 606#endif 607 608#ifdef __cplusplus 609} 610#endif 611 612 613#endif 614