sl@0: // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of the License "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // e32\include\drivers\resourcecontrol_trace.h sl@0: // sl@0: // WARNING: This file contains some APIs which are internal and are subject sl@0: // to change without notice. Such APIs should therefore not be used sl@0: // outside the Kernel and Hardware Services package. sl@0: // sl@0: sl@0: /** sl@0: @file sl@0: @internalComponent sl@0: */ sl@0: #ifndef __RESOURCECONTROL_TRACE_H__ sl@0: #define __RESOURCECONTROL_TRACE_H__ sl@0: #ifdef BTRACE_RESOURCE_MANAGER sl@0: sl@0: //Function to format the output. sl@0: static void TraceFormatPrint(TDes8& aBuf, const char* aFmt, ...) sl@0: { sl@0: if(aBuf.MaxLength() == 0) sl@0: return; sl@0: VA_LIST list; sl@0: VA_START(list,aFmt); sl@0: Kern::AppendFormat(aBuf,aFmt,list); sl@0: } sl@0: sl@0: //definition of subcategories. sl@0: #define PRM_REGISTER_RESOURCE BTrace::ERegisterResource sl@0: #define PRM_REGISTER_CLIENT BTrace::ERegisterClient sl@0: #define PRM_DEREGISTER_CLIENT BTrace::EDeRegisterClient sl@0: #define PRM_CLIENT_STATE_CHANGE_START BTrace::ESetResourceStateStart sl@0: #define PRM_CLIENT_STATE_CHANGE_END BTrace::ESetResourceStateEnd sl@0: #define PRM_REGISTER_POST_NOTIFICATION BTrace::EPostNotificationRegister sl@0: #define PRM_DEREGISTER_POST_NOTIFICATION BTrace::EPostNotificationDeRegister sl@0: #define PRM_POST_NOTIFICATION_SENT BTrace::EPostNotificationSent sl@0: #define PRM_CALLBACK_COMPLETE BTrace::ECallbackComplete sl@0: #define PRM_MEMORY_USAGE BTrace::EMemoryUsage sl@0: #define PRM_CLIENT_GET_STATE_START BTrace::EGetResourceStateStart sl@0: #define PRM_CLIENT_GET_STATE_END BTrace::EGetResourceStateEnd sl@0: #define PRM_CANCEL_LONG_LATENCY_OPERATION BTrace::ECancelLongLatencyOperation sl@0: #define PRM_BOOTING BTrace::EBooting sl@0: //subcategories used in PSL sl@0: #define PRM_PSL_RESOURCE_CHANGE_STATE_START BTrace::EPslChangeResourceStateStart sl@0: #define PRM_PSL_RESOURCE_CHANGE_STATE_END BTrace::EPslChangeResourceStateEnd sl@0: #define PRM_PSL_RESOURCE_GET_STATE_START BTrace::EPslGetResourceStateStart sl@0: #define PRM_PSL_RESOURCE_GET_STATE_END BTrace::EPslGetResourceStateEnd sl@0: #define PRM_PSL_RESOURCE_CREATE BTrace::EPslResourceCreate sl@0: sl@0: #ifdef PRM_ENABLE_EXTENDED_VERSION sl@0: //definition of subcategories for extended version. sl@0: #define PRM_REGISTER_STATIC_RESOURCE_WITH_DEPENDENCY BTrace::ERegisterStaticResourceWithDependency sl@0: #define PRM_REGISTER_DYNAMIC_RESOURCE BTrace::ERegisterDynamicResource sl@0: #define PRM_DEREGISTER_DYNAMIC_RESOURCE BTrace::EDeRegisterDynamicResource sl@0: #define PRM_REGISTER_RESOURCE_DEPENDENCY BTrace::ERegisterResourceDependency sl@0: #define PRM_DEREGISTER_RESOURCE_DEPENDENCY BTrace::EDeRegisterResourceDependency sl@0: #endif sl@0: //Macro to output resource information sl@0: #define PRM_REGISTER_RESOURCE_TRACE \ sl@0: { \ sl@0: TBuf8<80> printBuf; \ sl@0: printBuf.Zero(); \ sl@0: TraceFormatPrint(printBuf, "%S %d %d %d", pR->iName, pResInfo->iMinLevel, pResInfo->iMaxLevel, \ sl@0: pResInfo->iDefaultLevel); \ sl@0: BTraceContextN(BTrace::EResourceManager, PRM_REGISTER_RESOURCE, resCount+1, pR, printBuf.Ptr(), \ sl@0: printBuf.Length()); \ sl@0: } sl@0: sl@0: //Macro to output client details. Used during client registration sl@0: #define PRM_CLIENT_REGISTER_TRACE \ sl@0: { \ sl@0: BTraceContextN(BTrace::EResourceManager, PRM_REGISTER_CLIENT, aClientId, (TUint)pC, \ sl@0: pC->iName->Ptr(), pC->iName->Length()); \ sl@0: } sl@0: sl@0: //Used during client deregistration sl@0: #define PRM_CLIENT_DEREGISTER_TRACE \ sl@0: { \ sl@0: BTraceContextN(BTrace::EResourceManager, PRM_DEREGISTER_CLIENT, aClientId, \ sl@0: (TUint)pC, pC->iName->Ptr(), pC->iName->Length()); \ sl@0: } sl@0: sl@0: //Used to resource state change operation.Used at the start of the operation. sl@0: #define PRM_CLIENT_CHANGE_STATE_START_TRACE \ sl@0: { \ sl@0: TBuf8<80> printBuf; \ sl@0: printBuf.Zero(); \ sl@0: TraceFormatPrint(printBuf, "%S %S %d", pC->iName, pR->iName, aNewState); \ sl@0: BTraceContextN(BTrace::EResourceManager, PRM_CLIENT_STATE_CHANGE_START, pC->iClientId, \ sl@0: aResourceId, printBuf.Ptr(), printBuf.Length()); \ sl@0: } sl@0: sl@0: //Used to resource state change operation. Used at the end of the operation. sl@0: #define PRM_CLIENT_CHANGE_STATE_END_TRACE \ sl@0: { \ sl@0: TBuf8<80> printBuf; \ sl@0: printBuf.Zero(); \ sl@0: TraceFormatPrint(printBuf, "%S %S %d %d", pC->iName, pR->iName, r, aNewState); \ sl@0: BTraceContextN(BTrace::EResourceManager, PRM_CLIENT_STATE_CHANGE_END, pC->iClientId, \ sl@0: aResourceId, printBuf.Ptr(), printBuf.Length()); \ sl@0: } sl@0: sl@0: //Used during request notificiation sl@0: #define PRM_POSTNOTIFICATION_REGISTER_TRACE \ sl@0: { \ sl@0: TInt printBuf[2]; \ sl@0: printBuf[0] = (TInt)&aN.iCallback; \ sl@0: printBuf[1] = r; \ sl@0: BTraceContextN(BTrace::EResourceManager, PRM_REGISTER_POST_NOTIFICATION, aClientId, \ sl@0: aResourceId, printBuf, sizeof(printBuf)); \ sl@0: } sl@0: sl@0: //Used during cancel notification sl@0: #define PRM_POSTNOTIFICATION_DEREGISTER_TRACE \ sl@0: { \ sl@0: TInt printBuf[2]; \ sl@0: printBuf[0] = (TInt)&aN.iCallback; \ sl@0: printBuf[1] = r; \ sl@0: BTraceContextN(BTrace::EResourceManager, PRM_DEREGISTER_POST_NOTIFICATION, aClientId, \ sl@0: aResourceId, printBuf, sizeof(printBuf)); \ sl@0: } sl@0: sl@0: //Used during when notification is sent. sl@0: #define PRM_POSTNOTIFICATION_SENT_TRACE \ sl@0: { \ sl@0: BTraceContext8(BTrace::EResourceManager, PRM_POST_NOTIFICATION_SENT, aClientId, \ sl@0: pN->iCallback.iResourceId); \ sl@0: } sl@0: sl@0: //Used when callback is completed. sl@0: //Calling TraceFormatPrint just to avoid warning sl@0: #define PRM_CALLBACK_COMPLETION_TRACE \ sl@0: { \ sl@0: TPtr8 zeroDes(NULL, 0); \ sl@0: TraceFormatPrint(zeroDes, "%d", pCb->iClientId); \ sl@0: BTraceContext8(BTrace::EResourceManager, PRM_CALLBACK_COMPLETE, pCb->iClientId, \ sl@0: pCb->iResourceId); \ sl@0: } sl@0: sl@0: //Used to output memory used by resource manager. sl@0: #define PRM_MEMORY_USAGE_TRACE \ sl@0: { \ sl@0: BTraceContext4(BTrace::EResourceManager, PRM_MEMORY_USAGE, size); \ sl@0: } sl@0: sl@0: #define PRM_PSL_RESOURCE_GET_STATE_START_TRACE \ sl@0: { \ sl@0: TBuf8<80> printBuf; \ sl@0: printBuf.Zero(); \ sl@0: TraceFormatPrint(printBuf, "%S ", iName); \ sl@0: BTraceContextN(BTrace::EResourceManager, PRM_PSL_RESOURCE_GET_STATE_START, aRequest.ClientId(), \ sl@0: aRequest.ResourceId(), printBuf.Ptr(), printBuf.Length()); \ sl@0: } sl@0: sl@0: //Used during get resource state operation, used at the start of the operation. sl@0: #define PRM_RESOURCE_GET_STATE_START_TRACE \ sl@0: { \ sl@0: TBuf8<80> printBuf; \ sl@0: printBuf.Zero(); \ sl@0: TraceFormatPrint(printBuf, "%S %S", pC->iName, pR->iName); \ sl@0: BTraceContextN(BTrace::EResourceManager, PRM_CLIENT_GET_STATE_START, pC->iClientId, aResourceId,\ sl@0: printBuf.Ptr(), printBuf.Length());\ sl@0: } sl@0: sl@0: #define PRM_PSL_RESOURCE_GET_STATE_END_TRACE \ sl@0: { \ sl@0: TBuf8<80> printBuf; \ sl@0: printBuf.Zero(); \ sl@0: TraceFormatPrint(printBuf, "%S %d %d", iName, iCurLevel,retVal); \ sl@0: BTraceContextN(BTrace::EResourceManager, PRM_PSL_RESOURCE_GET_STATE_END, aRequest.ClientId(), \ sl@0: aRequest.ResourceId(), printBuf.Ptr(), printBuf.Length()); \ sl@0: } sl@0: sl@0: //Used during get resource state operation, used at the end of the operation. sl@0: #define PRM_RESOURCE_GET_STATE_END_TRACE \ sl@0: { \ sl@0: TBuf8<80> printBuf; \ sl@0: printBuf.Zero(); \ sl@0: TraceFormatPrint(printBuf, "%S %S %d %d", pC->iName, pR->iName, aState, r); \ sl@0: BTraceContextN(BTrace::EResourceManager, PRM_CLIENT_GET_STATE_END, pC->iClientId, aResourceId, \ sl@0: printBuf.Ptr(), printBuf.Length());\ sl@0: } sl@0: sl@0: //Used during cancellation of long latency operation sl@0: #define PRM_RESOURCE_CANCEL_LONGLATENCY_OPERATION_TRACE \ sl@0: { \ sl@0: TBuf8<80> printBuf; \ sl@0: printBuf.Zero(); \ sl@0: TraceFormatPrint(printBuf, "%S %S %d", pC->iName, pR->iName, r); \ sl@0: BTraceContextN(BTrace::EResourceManager, PRM_CANCEL_LONG_LATENCY_OPERATION, pC->iClientId, \ sl@0: aResourceId, printBuf.Ptr(), printBuf.Length()); \ sl@0: } sl@0: sl@0: #define PRM_PSL_RESOURCE_CHANGE_STATE_START_TRACE \ sl@0: { \ sl@0: TBuf8<80> printBuf; \ sl@0: printBuf.Zero(); \ sl@0: TraceFormatPrint(printBuf, "%S %d %d", iName, iCurLevel, aRequest.Level()); \ sl@0: BTraceContextN(BTrace::EResourceManager, PRM_PSL_RESOURCE_CHANGE_STATE_START, aRequest.ClientId(), \ sl@0: aRequest.ResourceId(), printBuf.Ptr(), printBuf.Length()); \ sl@0: } sl@0: sl@0: #define PRM_PSL_RESOURCE_CHANGE_STATE_END_TRACE \ sl@0: { \ sl@0: TBuf8<80> printBuf; \ sl@0: printBuf.Zero(); \ sl@0: TraceFormatPrint(printBuf, "%S %d %d %d", iName, iCurLevel, aRequest.Level(),retVal); \ sl@0: BTraceContextN(BTrace::EResourceManager, PRM_PSL_RESOURCE_CHANGE_STATE_END, aRequest.ClientId(), \ sl@0: aRequest.ResourceId(), printBuf.Ptr(), printBuf.Length()); \ sl@0: } sl@0: sl@0: #define PRM_PSL_RESOURCE_CREATE_TRACE \ sl@0: { \ sl@0: TBuf8<80> printBuf; \ sl@0: printBuf.Zero(); \ sl@0: TraceFormatPrint(printBuf, "%d %d %S", iDefaultLevel, iFlags, iName); \ sl@0: BTraceContextN(BTrace::EResourceManager, PRM_PSL_RESOURCE_CREATE, iMinLevel, iMaxLevel, \ sl@0: printBuf.Ptr(), printBuf.Length()); \ sl@0: } sl@0: sl@0: //Used during booting of resource manager sl@0: //Calling TraceFormatPrint just to avoid warning sl@0: #define PRM_BOOTING_TRACE \ sl@0: { \ sl@0: TPtr8 zeroDes(NULL, 0); \ sl@0: TraceFormatPrint(zeroDes, "%d", aReason); \ sl@0: BTraceContext4(BTrace::EResourceManager, PRM_BOOTING, (TUint)aReason); \ sl@0: } sl@0: sl@0: #ifdef PRM_ENABLE_EXTENDED_VERSION sl@0: //Macro to output static resource with dependency sl@0: #define PRM_REGISTER_STATIC_RESOURCE_WITH_DEPENDENCY_TRACE \ sl@0: { \ sl@0: TBuf8<80> pBuf; \ sl@0: pBuf.Zero(); \ sl@0: TraceFormatPrint(pBuf, "%S %d %d %d", pR->iName, pResInfo->iMinLevel, pResInfo->iMaxLevel, \ sl@0: pResInfo->iDefaultLevel); \ sl@0: BTraceContextN(BTrace::EResourceManager, PRM_REGISTER_STATIC_RESOURCE_WITH_DEPENDENCY, pR->iResourceId, \ sl@0: pR, pBuf.Ptr(), pBuf.Length()); \ sl@0: } sl@0: sl@0: //Macro to output dynamic resource registration. sl@0: #define PRM_REGISTER_DYNAMIC_RESOURCE_TRACE \ sl@0: { \ sl@0: TBuf8<80> printBuf; \ sl@0: printBuf.Zero(); \ sl@0: TraceFormatPrint(printBuf, "%S %S %d", aClientPtr->iName, aPDRes->iName, aPDRes); \ sl@0: BTraceContextN(BTrace::EResourceManager, PRM_REGISTER_DYNAMIC_RESOURCE, aClientPtr->iClientId, \ sl@0: aPDRes->iResourceId, printBuf.Ptr(), printBuf.Length()); \ sl@0: } sl@0: sl@0: //Macro to output dynamic resource deregistration. sl@0: #define PRM_DEREGISTER_DYNAMIC_RESOURCE_TRACE \ sl@0: { \ sl@0: TBuf8<80> printBuf; \ sl@0: printBuf.Zero(); \ sl@0: TraceFormatPrint(printBuf, "%S %S %d %d", aClientPtr->iName, pDR->iName, pDR, level); \ sl@0: BTraceContextN(BTrace::EResourceManager, PRM_DEREGISTER_DYNAMIC_RESOURCE, aClientPtr->iClientId, \ sl@0: pDR->iResourceId, printBuf.Ptr(), printBuf.Length()); \ sl@0: } sl@0: sl@0: //Macro to output registration of resource dependency. sl@0: #define PRM_REGISTER_RESOURCE_DEPENDENCY_TRACE \ sl@0: { \ sl@0: TBuf8<256> printBuf; \ sl@0: printBuf.Zero(); \ sl@0: TraceFormatPrint(printBuf, "%S %S %d %S %d %d", aClientPtr->iName, pR1->iName, pR2->iResourceId, \ sl@0: pR2->iName, pR1, pR2); \ sl@0: BTraceContextN(BTrace::EResourceManager, PRM_REGISTER_RESOURCE_DEPENDENCY, aClientPtr->iClientId, \ sl@0: pR1->iResourceId, printBuf.Ptr(), printBuf.Length()); \ sl@0: } sl@0: sl@0: //Macro to output deregistration of resource dependency. sl@0: #define PRM_DEREGISTER_RESOURCE_DEPENDENCY_TRACE \ sl@0: { \ sl@0: TBuf8<256> printBuf; \ sl@0: printBuf.Zero(); \ sl@0: TraceFormatPrint(printBuf, "%S %S %d %S %d %d", aClientPtr->iName, pDR1->iName, pDR2->iResourceId, \ sl@0: pDR2->iName, pDR1, pDR2); \ sl@0: BTraceContextN(BTrace::EResourceManager, PRM_DEREGISTER_RESOURCE_DEPENDENCY, aClientPtr->iClientId, \ sl@0: pDR1->iResourceId, printBuf.Ptr(), printBuf.Length()); \ sl@0: } sl@0: #endif sl@0: #else sl@0: sl@0: #define PRM_REGISTER_RESOURCE_TRACE sl@0: #define PRM_CLIENT_REGISTER_TRACE sl@0: #define PRM_CLIENT_DEREGISTER_TRACE sl@0: #define PRM_CLIENT_CHANGE_STATE_START_TRACE sl@0: #define PRM_CLIENT_CHANGE_STATE_END_TRACE sl@0: #define PRM_POSTNOTIFICATION_REGISTER_TRACE sl@0: #define PRM_POSTNOTIFICATION_DEREGISTER_TRACE sl@0: #define PRM_POSTNOTIFICATION_SENT_TRACE sl@0: #define PRM_CALLBACK_COMPLETION_TRACE sl@0: #define PRM_MEMORY_USAGE_TRACE sl@0: #define PRM_RESOURCE_GET_STATE_START_TRACE sl@0: #define PRM_RESOURCE_GET_STATE_END_TRACE sl@0: #define PRM_RESOURCE_CANCEL_LONGLATENCY_OPERATION_TRACE sl@0: #define PRM_BOOTING_TRACE ((void)aReason); sl@0: #define PRM_PSL_RESOURCE_GET_STATE_START_TRACE sl@0: #define PRM_PSL_RESOURCE_GET_STATE_END_TRACE sl@0: #define PRM_PSL_RESOURCE_CHANGE_STATE_START_TRACE sl@0: #define PRM_PSL_RESOURCE_CHANGE_STATE_END_TRACE sl@0: sl@0: #ifdef PRM_ENABLE_EXTENDED_VERSION sl@0: #define PRM_REGISTER_STATIC_RESOURCE_WITH_DEPENDENCY_TRACE sl@0: #define PRM_REGISTER_DYNAMIC_RESOURCE_TRACE sl@0: #define PRM_DEREGISTER_DYNAMIC_RESOURCE_TRACE sl@0: #define PRM_REGISTER_RESOURCE_DEPENDENCY_TRACE sl@0: #define PRM_DEREGISTER_RESOURCE_DEPENDENCY_TRACE sl@0: #endif //PRM_ENABLE_EXTENDED_VERSION sl@0: sl@0: #endif //BTRACE_RESOURCE_MANAGER sl@0: sl@0: #endif //__RESOURCECONTROL_TRACE_H__ sl@0: