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