os/kernelhwsrv/kerneltest/e32test/realtime/d_latncy.h
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     1 // Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     4 // under the terms of the License "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 //
     8 // Initial Contributors:
     9 // Nokia Corporation - initial contribution.
    10 //
    11 // Contributors:
    12 //
    13 // Description:
    14 // e32test\realtime\d_latncy.h
    15 // 
    16 //
    17 
    18 #if !defined(__D_LATNCY_H__)
    19 #define __D_LATNCY_H__
    20 #include <e32cmn.h>
    21 #ifndef __KERNEL_MODE__
    22 #include <e32std.h>
    23 #endif
    24 
    25 #if defined(__IS_OMAP2420__) || defined(__WAKEUP_3430__)
    26 #include <shared_timer.h>
    27 #endif
    28 
    29 #if !defined(__EPOC32__) || !defined(__CPU_X86)
    30 #if !defined(__SMP__)
    31 #define __CAPTURE_EXTRAS
    32 #endif
    33 #endif
    34 
    35 _LIT(KLatencyLddName,"Latency");
    36 
    37 class TCapsLatencyV01
    38 	{
    39 public:
    40 	TVersion	iVersion;
    41 	};
    42 
    43 struct SLatencyResults
    44 	{
    45 	TUint iIntRetAddr;
    46 	TUint iIntTicks;
    47 	TUint iKernThreadTicks;
    48 	TUint iUserThreadTicks;
    49 	TUint iIntSpsr;
    50 	TUint iIntR14;
    51 	};
    52 
    53 class RLatency : public RBusLogicalChannel
    54 	{
    55 public:
    56 	enum TControl
    57 		{
    58 		EControlStart,
    59 		EControlTicksPerMs,
    60 		EControlGetResults,
    61 		};
    62 public:
    63 	inline TInt Open();
    64 	inline void Start();
    65 	inline TUint TicksPerMs();
    66 	inline TInt GetResults(SLatencyResults& aResults);
    67 	};
    68 
    69 #ifndef __KERNEL_MODE__
    70 inline TInt RLatency::Open()
    71 	{ return DoCreate(KLatencyLddName,TVersion(1,0,1),KNullUnit,NULL,NULL); }
    72 
    73 inline void RLatency::Start()
    74 	{ DoControl(EControlStart); }
    75 
    76 inline TUint RLatency::TicksPerMs()
    77 	{ return (TUint)DoControl(EControlTicksPerMs); }
    78 
    79 inline TInt RLatency::GetResults(SLatencyResults& aResults)
    80 	{ return DoControl(EControlGetResults,&aResults); }
    81 #endif
    82 
    83 #ifdef __KERNEL_MODE__
    84 class DLatencyPowerHandler;
    85 class DLatency : public DLogicalChannelBase
    86 	{
    87 public:
    88 	DLatency();
    89 	~DLatency();
    90 protected:
    91 	virtual TInt DoCreate(TInt aUnit, const TDesC8* anInfo, const TVersion& aVer);
    92 	virtual TInt Request(TInt aFunction, TAny* a1, TAny* a2);
    93 public:
    94 	TInt StartTimer();
    95 	void StopTimer();
    96 	static void MsCallBack(TAny*);
    97 	static void MsDfc(TAny*);
    98 #if defined( __MISA__) || defined(__MCOT__) || defined(__IS_OMAP2420__) || defined(__WAKEUP_3430__)
    99 	inline TUint Ticks();
   100 #elif defined(__EPOC32__) && defined(__CPU_X86)
   101 	static TUint Ticks();
   102 #else
   103 	inline static TUint Ticks();
   104 #endif
   105 
   106 #if defined(__IS_OMAP2420__) || defined(__WAKEUP_3430__)
   107 private:
   108 	void DisableTimer();
   109 	TInt ConfigureTimer();
   110 #endif
   111 public:
   112 	NTimer iMsCallBack;
   113 	TDynamicDfcQue* iRtDfcQ;
   114 	TDfc iMsDfc;
   115 	SLatencyResults iResults;
   116 #if !defined(__SMP__)
   117 	TUint* iIntStackTop;
   118 #endif
   119 	DThread* iClient;
   120 	DLatencyPowerHandler* iPowerHandler;
   121 	TUint8 iOff;
   122 	TUint8 iStarted;
   123 	TUint8 iPad2;
   124 	TUint8 iPad3;
   125 #if defined( __MISA__) || defined(__MCOT__)
   126 	TUint iTickIncrement;
   127 	TUint iTriggerTime;
   128 #endif
   129 #if defined(__IS_OMAP2420__) || defined(__WAKEUP_3430__)
   130 	TUint8 iGPTimerId;
   131 	SOmapTimerInfo iTimerInfo;
   132 	TUint iTimerLoadValue;
   133 #endif
   134 	};
   135 #endif
   136 
   137 #endif