#ifndef __IOKIT_IO_FIREWIRE_FAMILY_TRACEPOINTS__
#define __IOKIT_IO_FIREWIRE_FAMILY_TRACEPOINTS__
#include <IOKit/IOTypes.h>
#include <sys/kdebug.h>
#ifdef __cplusplus
extern "C" {
#endif
#define FIREWIRE_SYSCTL "debug.FireWire"
#define kFireWireTypeDebug 'FWDB'
#define DEBUG_UNUSED( X ) ( void )( X )
extern UInt32 gFireWireDebugFlags;
typedef struct FireWireSysctlArgs
{
uint32_t type;
uint32_t operation;
uint32_t debugFlags;
} FireWireSysctlArgs;
enum
{
kFireWireOperationGetFlags = 0,
kFireWireOperationSetFlags = 1
};
enum
{
kFireWireEnableDebugLoggingBit = 0,
kFireWireEnableTracePointsBit = 1,
kFireWireEnableDebugLoggingMask = (1 << kFireWireEnableDebugLoggingBit),
kFireWireEnableTracePointsMask = (1 << kFireWireEnableTracePointsBit),
};
enum
{
kFWTController = 0,
kFWTDevice = 1,
kFWTIsoch = 2,
kFWTUserClient = 3,
kFWTFWIM = 16,
kFWTPowerManager = 17,
kFWTResetBusAction = 58,
kFWTStateChangeAction = 59,
kFWTScheduleResetLinkAction = 60
};
enum
{
kTPControllerStart = 1,
kTPControllerWillChangePowerState = 2,
kTPControllerPoweredStart = 3,
kTPControllerSetPowerState = 4,
kTPControllerResetBus = 5,
kTPControllerDelayedStateChange = 6,
kTPControllerProcessSelfIDs = 7,
kTPControllerStartBusScan = 8,
kTPControllerReadDeviceROM = 9,
kTPControllerReadDeviceROMSubmitCmd = 10,
kTPControllerUpdateDevice = 11,
kTPControllerUpdateDeviceNewDevice = 12,
kTPControllerUpdateDeviceCreateDevice = 13,
kTPControllerFinishedBusScan = 14,
kTPControllerBuildTopology = 15,
kTPControllerUpdatePlane = 16,
kTPControllerAsyncRead = 17,
kTPControllerAsyncWrite = 18,
kTPControllerAsyncLock = 19,
kTPControllerAsyncStreamWrite = 20,
kTPControllerProcessRcvPacket = 21,
kTPControllerProcessRcvPacketWR = 22,
kTPControllerProcessRcvPacketRQ = 23,
kTPControllerProcessRcvPacketRB = 24,
kTPControllerProcessRcvPacketRQR = 25,
kTPControllerProcessRcvPacketRBR = 26,
kTPControllerProcessWriteRequest = 27,
kTPControllerProcessLockRequest = 28,
kTPControllerAsyncLockResponse = 29,
kTPControllerTimeoutQBusReset = 30,
kTPControllerTimeoutQProcessTimeout = 31
};
enum
{
kTPDeviceSetNodeROM = 1,
kTPDeviceProcessROM = 2,
kTPDeviceProcessUnitDirectories = 3
};
enum
{
kTPIsochIRMAllocateIsochResources = 1,
kTPIsochIRMThreadFunc = 2,
kTPIsochAllocateChannelBegin = 11,
kTPIsochReallocBandwidth = 12,
kTPIsochPortUserInitWithUserDCLProgram = 20
};
enum
{
kTPUserClientStart = 1,
kTPUserClientFree = 2,
kTPUserClientClientClose = 3,
kTPUserClientClientDied = 4,
kTPUserClientBusReset = 5
};
enum
{
kTPFWIMStart = 1,
kTPFWIMPoweredStart = 2,
kTPFWIMFinishStart = 3,
kTPFWIMResetLink = 4,
kTPFWIMInitLink = 5,
kTPFWIMHandleBusResetInt = 6,
kTPFWIMHandleSelfIDInt = 7,
kTPFWIMEnterLoggingMode = 8,
kTPFWIMKPF = 9
};
enum
{
kTPPMSetupPowerManagement = 1,
kTPPMHandleLinkOnInterrupt = 2,
kTPPMStartPowerSavingsTimer = 3,
kTPPMHandlePowerSavingsTimer = 4,
kTPPMExitPowerSavings = 5,
kTPPMCancelPowerSavingsTimer = 6,
kTPPMSleep = 7,
kTPPMDoze = 8
};
enum
{
kTPResetSetPowerState = 1,
kTPResetResetStateChangeResetScheduled = 2,
kTPResetDelayedStateChangeWaitingBusReset = 3,
kTPResetProcessSelfIDs = 4,
kTPResetAssignCycleMaster = 5,
kTPResetFinishedBusScan = 6,
kTPResetUpdatePlane = 7,
kTPResetAddUnitDirectory = 8,
kTPResetRemoveUnitDirectory = 9,
kTPResetMakeRoot = 10,
kTPResetFWIMHandleSelfIDInt = 11,
kTPResetFWIMHAABB = 12,
kTPResetFWIMHandleSystemShutDown = 13
};
enum
{
kTPStateChangeResetBus = 1,
kTPStateChangeResetStateChange = 2,
kTPStateChangeProcessSelfIDs = 3,
kTPStateChangeFinishedBusScan = 4,
kTPStateChangeDoBusReset = 5,
kTPStateChangeProcessBusReset = 6
};
enum
{
kTPScheduleReset = 1,
kTPScheduleResetNotifyInvalidSelfIDs = 2,
kTPScheduleResetHandleInterrupts = 3,
kTPScheduleResetHandleSelfIDInt = 4,
kTPScheduleResetWritePhyRegister = 5,
kTPScheduleResetReadPhyRegister = 6,
kTPScheduleResetSetLinkMode = 7,
kTPScheduleResetDCLContextDied = 8,
kTPScheduleResetARxResProcessReceivedPacket = 9,
kTPScheduleResetARxReqCheckForReceivedPackets = 10,
kTPScheduleResetARxReqFilterPhysicalReadRequests = 11,
kTPScheduleResetARxWaitForDMA = 12,
kTPScheduleResetATxHandleCompletedCommand = 13,
kTPScheduleResetATxWaitForDMA = 14,
kTPScheduleResetATxAllocateCommandElement = 15
};
#define FIREWIRE_TRACE(FWClass, code, funcQualifier) ( ( ( DBG_IOKIT & 0xFF ) << 24) | ( ( DBG_IOFIREWIRE & 0xFF ) << 16 ) | ( ( FWClass & 0x3F ) << 10 ) | ( ( code & 0xFF ) << 2 ) | ( funcQualifier & 0x3 ) )
#define FW_CONTROLLER_TRACE(code) FIREWIRE_TRACE ( kFWTController, code, DBG_FUNC_NONE )
#define FW_DEVICE_TRACE(code) FIREWIRE_TRACE ( kFWTDevice, code, DBG_FUNC_NONE )
#define FW_ISOCH_TRACE(code) FIREWIRE_TRACE ( kFWTIsoch, code, DBG_FUNC_NONE )
#define FW_USERCLIENT_TRACE(code) FIREWIRE_TRACE ( kFWTUserClient, code, DBG_FUNC_NONE )
#define FW_FWIM_TRACE(code) FIREWIRE_TRACE ( kFWTFWIM, code, DBG_FUNC_NONE )
#define FW_PM_TRACE(code) FIREWIRE_TRACE ( kFWTPowerManager, code, DBG_FUNC_NONE )
#define FW_RESETBUS_TRACE(code) FIREWIRE_TRACE ( kFWTResetBusAction, code, DBG_FUNC_NONE )
#define FW_STATECHANGE_TRACE(code) FIREWIRE_TRACE ( kFWTStateChangeAction, code, DBG_FUNC_NONE )
#define FW_RESETLINK_TRACE(code) FIREWIRE_TRACE ( kFWTScheduleResetLinkAction, code, DBG_FUNC_NONE )
#ifdef KERNEL
#include <IOKit/IOTimeStamp.h>
#define FWTrace(FWClass, code, a, b, c, d) { \
if (gFireWireDebugFlags & kFireWireEnableTracePointsMask) { \
IOTimeStampConstant( FIREWIRE_TRACE(FWClass, code, DBG_FUNC_NONE), a, b, c, d ); \
} \
}
#define FWTrace_Start(FWClass, code, a, b, c, d) { \
if (gFireWireDebugFlags & kFireWireEnableTracePointsMask) { \
IOTimeStampConstant( FIREWIRE_TRACE(FWClass, code, DBG_FUNC_START), a, b, c, d ); \
} \
}
#define FWTrace_End(FWClass, code, a, b, c, d) { \
if (gFireWireDebugFlags & kFireWireEnableTracePointsMask) { \
IOTimeStampConstant( FIREWIRE_TRACE(FWClass, code, DBG_FUNC_END), a, b, c, d ); \
} \
}
#endif
#ifdef __cplusplus
}
#endif
#endif