os/kernelhwsrv/kerneltest/e32test/system/t_xprot.cpp
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
sl@0
     1
// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     2
// All rights reserved.
sl@0
     3
// This component and the accompanying materials are made available
sl@0
     4
// under the terms of the License "Eclipse Public License v1.0"
sl@0
     5
// which accompanies this distribution, and is available
sl@0
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     7
//
sl@0
     8
// Initial Contributors:
sl@0
     9
// Nokia Corporation - initial contribution.
sl@0
    10
//
sl@0
    11
// Contributors:
sl@0
    12
//
sl@0
    13
// Description:
sl@0
    14
// e32test\system\t_xprot.cpp
sl@0
    15
// 
sl@0
    16
//
sl@0
    17
sl@0
    18
#include <e32test.h>
sl@0
    19
#include "execinfo.h"
sl@0
    20
#include <u32arm.h>
sl@0
    21
sl@0
    22
const TInt KSupervisorAddress=0x80000000;
sl@0
    23
const TInt KGarbageAddress=0xeeddbbcc;
sl@0
    24
sl@0
    25
TInt Handles[MAX_HANDLE];
sl@0
    26
TInt DataArea[1024];
sl@0
    27
TBuf8<1024> Buf8;
sl@0
    28
TBuf<1024> Buf;
sl@0
    29
TPtrC8 PtrC8(Buf8.Ptr(),10);
sl@0
    30
TPtrC8 PtrC(Buf.Ptr(),10);
sl@0
    31
TPtrC8 Ptr8(Buf8.Ptr(),10,1024);
sl@0
    32
TPtrC8 Ptr(Buf.Ptr(),10,1024);
sl@0
    33
TPtrC8 Ptr8N(NULL,10,1024);
sl@0
    34
TPtrC8 PtrN(NULL,10,1024);
sl@0
    35
TPtrC8 Ptr8I((TUint8*)KGarbageAddress,10,1024);
sl@0
    36
TPtrC8 PtrI((TText*)KGarbageAddress,10,1024);
sl@0
    37
TPtrC8 Ptr8S((TUint8*)KSupervisorAddress,10,1024);
sl@0
    38
TPtrC8 PtrS((TText*)KSupervisorAddress,10,1024);
sl@0
    39
TInt MessageHandle;
sl@0
    40
sl@0
    41
TInt Args[4];
sl@0
    42
sl@0
    43
TInt GetHandle(TInt& aState, TInt aHandleType)
sl@0
    44
	{
sl@0
    45
	TInt r;
sl@0
    46
	TInt t=aHandleType?aHandleType-1:ELibrary;
sl@0
    47
	switch(aState)
sl@0
    48
		{
sl@0
    49
		case 0: r=0; break;
sl@0
    50
		case 1: r=0xdeaddead; break;
sl@0
    51
		case 2: r=Handles[EThread]; break;
sl@0
    52
		case 3: r=Handles[t]; break;
sl@0
    53
		case 4: aState=0; return 0;
sl@0
    54
		}
sl@0
    55
	++aState;
sl@0
    56
	return r;
sl@0
    57
	}
sl@0
    58
sl@0
    59
TInt GetAnyInt(TInt& aState)
sl@0
    60
	{
sl@0
    61
	TInt r;
sl@0
    62
	switch(aState)
sl@0
    63
		{
sl@0
    64
		case 0: r=0; break;
sl@0
    65
		case 1: r=1; break;
sl@0
    66
		case 2: r=2; break;
sl@0
    67
		case 3: r=-1; break;
sl@0
    68
		case 4: r=299792458; break;
sl@0
    69
		case 5: aState=0; return 0;
sl@0
    70
		}
sl@0
    71
	++aState;
sl@0
    72
	return r;
sl@0
    73
	}
sl@0
    74
sl@0
    75
TInt GetAnyPtr(TInt& aState)
sl@0
    76
	{
sl@0
    77
	TInt r;
sl@0
    78
	switch(aState)
sl@0
    79
		{
sl@0
    80
		case 0: r=0; break;
sl@0
    81
		case 1: r=KGarbageAddress; break;
sl@0
    82
		case 2: r=KSupervisorAddress; break;
sl@0
    83
		case 3: r=(TInt)DataArea; break;
sl@0
    84
		case 4: aState=0; return 0;
sl@0
    85
		}
sl@0
    86
	++aState;
sl@0
    87
	return r;
sl@0
    88
	}
sl@0
    89
sl@0
    90
TInt GetIntPtr(TInt& aState)
sl@0
    91
	{
sl@0
    92
	TInt r;
sl@0
    93
	switch(aState)
sl@0
    94
		{
sl@0
    95
		case 0: r=0; break;
sl@0
    96
		case 1: r=KGarbageAddress; break;
sl@0
    97
		case 2: r=((TInt)DataArea)+1; break;
sl@0
    98
		case 3: r=KSupervisorAddress; break;
sl@0
    99
		case 4: r=(TInt)DataArea; break;
sl@0
   100
		case 5: aState=0; return 0;
sl@0
   101
		}
sl@0
   102
	++aState;
sl@0
   103
	return r;
sl@0
   104
	}
sl@0
   105
sl@0
   106
TInt GetDes8(TInt& aState)
sl@0
   107
	{
sl@0
   108
	TInt r;
sl@0
   109
	switch(aState)
sl@0
   110
		{
sl@0
   111
		case 0: r=0; break;
sl@0
   112
		case 1: r=KGarbageAddress; break;
sl@0
   113
		case 2: r=KSupervisorAddress; break;
sl@0
   114
		case 3: r=(TInt)&Ptr8N; break;
sl@0
   115
		case 4: r=(TInt)&Ptr8I; break;
sl@0
   116
		case 5: r=(TInt)&Ptr8S; break;
sl@0
   117
		case 6: r=(TInt)&Ptr8; break;
sl@0
   118
		case 7: aState=0; return 0;
sl@0
   119
		}
sl@0
   120
	++aState;
sl@0
   121
	return r;
sl@0
   122
	}
sl@0
   123
sl@0
   124
TInt GetWDes8(TInt& aState)
sl@0
   125
	{
sl@0
   126
	TInt r;
sl@0
   127
	switch(aState)
sl@0
   128
		{
sl@0
   129
		case 0: r=0; break;
sl@0
   130
		case 1: r=KGarbageAddress; break;
sl@0
   131
		case 2: r=KSupervisorAddress; break;
sl@0
   132
		case 3: r=(TInt)&Ptr8N; break;
sl@0
   133
		case 4: r=(TInt)&Ptr8I; break;
sl@0
   134
		case 5: r=(TInt)&Ptr8S; break;
sl@0
   135
		case 6: r=(TInt)&PtrC8; break;
sl@0
   136
		case 7: r=(TInt)&Ptr8; break;
sl@0
   137
		case 8: aState=0; return 0;
sl@0
   138
		}
sl@0
   139
	++aState;
sl@0
   140
	return r;
sl@0
   141
	}
sl@0
   142
sl@0
   143
TInt GetDes(TInt& aState)
sl@0
   144
	{
sl@0
   145
	TInt r;
sl@0
   146
	switch(aState)
sl@0
   147
		{
sl@0
   148
		case 0: r=0; break;
sl@0
   149
		case 1: r=KGarbageAddress; break;
sl@0
   150
		case 2: r=KSupervisorAddress; break;
sl@0
   151
		case 3: r=(TInt)&PtrN; break;
sl@0
   152
		case 4: r=(TInt)&PtrI; break;
sl@0
   153
		case 5: r=(TInt)&PtrS; break;
sl@0
   154
		case 6: r=(TInt)&Ptr; break;
sl@0
   155
		case 7: aState=0; return 0;
sl@0
   156
		}
sl@0
   157
	++aState;
sl@0
   158
	return r;
sl@0
   159
	}
sl@0
   160
sl@0
   161
TInt GetWDes(TInt& aState)
sl@0
   162
	{
sl@0
   163
	TInt r;
sl@0
   164
	switch(aState)
sl@0
   165
		{
sl@0
   166
		case 0: r=0; break;
sl@0
   167
		case 1: r=KGarbageAddress; break;
sl@0
   168
		case 2: r=KSupervisorAddress; break;
sl@0
   169
		case 3: r=(TInt)&PtrN; break;
sl@0
   170
		case 4: r=(TInt)&PtrI; break;
sl@0
   171
		case 5: r=(TInt)&PtrS; break;
sl@0
   172
		case 6: r=(TInt)&PtrC; break;
sl@0
   173
		case 7: r=(TInt)&Ptr; break;
sl@0
   174
		case 8: aState=0; return 0;
sl@0
   175
		}
sl@0
   176
	++aState;
sl@0
   177
	return r;
sl@0
   178
	}
sl@0
   179
sl@0
   180
TInt GetBool(TInt& aState)
sl@0
   181
	{
sl@0
   182
	TInt r;
sl@0
   183
	switch(aState)
sl@0
   184
		{
sl@0
   185
		case 0: r=0; break;
sl@0
   186
		case 1: r=1; break;
sl@0
   187
		case 2: r=299792458; break;
sl@0
   188
		case 3: aState=0; return 0;
sl@0
   189
		}
sl@0
   190
	++aState;
sl@0
   191
	return r;
sl@0
   192
	}
sl@0
   193
sl@0
   194
TInt GetObjectType(TInt& aState)
sl@0
   195
	{
sl@0
   196
	TInt r;
sl@0
   197
	switch(aState)
sl@0
   198
		{
sl@0
   199
		case 0: r=EThread; break;
sl@0
   200
		case 1: r=ELibrary; break;
sl@0
   201
		case 2: r=ENumObjectType; break;
sl@0
   202
		case 3: r=20000; break;
sl@0
   203
		case 4: aState=0; return 0;
sl@0
   204
		}
sl@0
   205
	++aState;
sl@0
   206
	return r;
sl@0
   207
	}
sl@0
   208
sl@0
   209
TInt GetDevUnit(TInt& aState)
sl@0
   210
	{
sl@0
   211
	TInt r;
sl@0
   212
	switch(aState)
sl@0
   213
		{
sl@0
   214
		case 0: r=0; break;
sl@0
   215
		case 1: r=1; break;
sl@0
   216
		case 2: r=20000; break;
sl@0
   217
		case 3: aState=0; return 0;
sl@0
   218
		}
sl@0
   219
	++aState;
sl@0
   220
	return r;
sl@0
   221
	}
sl@0
   222
sl@0
   223
TInt GetMsgHandle(TInt& aState)
sl@0
   224
	{
sl@0
   225
	TInt r;
sl@0
   226
	switch(aState)
sl@0
   227
		{
sl@0
   228
		case 0: r=0; break;
sl@0
   229
		case 1: r=KGarbageAddress; break;
sl@0
   230
		case 2: r=(TInt)DataArea; break;
sl@0
   231
		case 3: r=KSupervisorAddress; break;
sl@0
   232
		case 4: r=MessageHandle; break;
sl@0
   233
		case 5: aState=0; return 0;
sl@0
   234
		}
sl@0
   235
	++aState;
sl@0
   236
	return r;
sl@0
   237
	}
sl@0
   238
sl@0
   239
TInt GetModuleHandle(TInt& aState)
sl@0
   240
	{
sl@0
   241
	TInt r;
sl@0
   242
	switch(aState)
sl@0
   243
		{
sl@0
   244
		case 0: r=0; break;
sl@0
   245
		case 1: r=KGarbageAddress; break;
sl@0
   246
		case 2: r=ModuleHandle; break;
sl@0
   247
		case 3: aState=0; return 0;
sl@0
   248
		}
sl@0
   249
	++aState;
sl@0
   250
	return r;
sl@0
   251
	}
sl@0
   252
sl@0
   253
TInt GetSessionHandlePtr(TInt& aState)
sl@0
   254
	{
sl@0
   255
	TInt r;
sl@0
   256
	switch(aState)
sl@0
   257
		{
sl@0
   258
		case 0: r=0; break;
sl@0
   259
		case 1: r=KGarbageAddress; break;
sl@0
   260
		case 2: r=KSupervisorAddress; break;
sl@0
   261
		case 3: r=(TInt)&Handles[ESession]; break;
sl@0
   262
		case 4: aState=0; return 0;
sl@0
   263
		}
sl@0
   264
	++aState;
sl@0
   265
	return r;
sl@0
   266
	}
sl@0
   267
sl@0
   268
TInt GetArgument(TInt& aState, TInt aArgType)
sl@0
   269
	{
sl@0
   270
	if (aArgType==NO_PAR)
sl@0
   271
		return 0;
sl@0
   272
	if (aArgType<MAX_HANDLE)
sl@0
   273
		return GetHandle(aState,aArgType);
sl@0
   274
	switch (aArgType)
sl@0
   275
		{
sl@0
   276
		case ANY_INT: return GetAnyInt(aState);
sl@0
   277
		case ANY_PTR: return GetAnyPtr(aState);
sl@0
   278
		case INT_PTR: return GetIntPtr(aState);
sl@0
   279
		case DES8: return GetDes8(aState);
sl@0
   280
		case WDES8: return GetWDes8(aState);
sl@0
   281
		case DES: return GetDes(aState);
sl@0
   282
		case WDES: return GetWDes(aState);
sl@0
   283
		case BOOL: return GetBool(aState);
sl@0
   284
		case OBJECT_TYPE: return GetObjectType(aState);
sl@0
   285
		case DEV_UNIT: return GetDevUnit(aState);
sl@0
   286
		case MSG_HANDLE: return GetMsgHandle(aState);
sl@0
   287
		case MODULE_HANDLE: return GetModuleHandle(aState);
sl@0
   288
		case SESSION_HANDLE_PTR: return GetSessionHandlePtr(aState);
sl@0
   289
		}
sl@0
   290
	User::Panic(_L("UNKNOWN ARG TYPE"),aArgType);
sl@0
   291
	}
sl@0
   292
sl@0
   293
#define FAST_EXEC(n)	asm("swi %a0" : : "i" (n|EXECUTIVE_FAST))
sl@0
   294
__NAKED__ void DoFastExecCall(TInt /*aExecNum*/)
sl@0
   295
	{
sl@0
   296
	asm("ldr r1, __Args ");
sl@0
   297
	asm("mov ip, lr ");
sl@0
   298
	asm("ldmfd r1, {r0-r3} ");
sl@0
   299
	asm("add pc, pc, r0, lsl #2 ");
sl@0
   300
	asm("nop )";
sl@0
   301
sl@0
   302
	FAST_EXEC(EFastExecWaitForAnyRequest);
sl@0
   303
	FAST_EXEC(EFastExecLanguage);
sl@0
   304
	FAST_EXEC(EFastExecHeap);
sl@0
   305
	FAST_EXEC(EFastExecHeapSwitch);
sl@0
   306
	FAST_EXEC(EFastExecPushTrapFrame);
sl@0
   307
	FAST_EXEC(EFastExecPopTrapFrame);
sl@0
   308
	FAST_EXEC(EFastExecActiveScheduler);
sl@0
   309
	FAST_EXEC(EFastExecSetActiveScheduler);
sl@0
   310
	FAST_EXEC(EFastExecLockPeriod);
sl@0
   311
	FAST_EXEC(EFastExecTrapHandler);
sl@0
   312
	FAST_EXEC(EFastExecSetTrapHandler);
sl@0
   313
	FAST_EXEC(EFastExecLockedInc);
sl@0
   314
	FAST_EXEC(EFastExecLockedDec);
sl@0
   315
	FAST_EXEC(EFastExecDebugMask);
sl@0
   316
	FAST_EXEC(EFastExecSetDebugMask);
sl@0
   317
	FAST_EXEC(EFastExecFastCounter);
sl@0
   318
	FAST_EXEC(EFastExecGetLocaleCharSet);
sl@0
   319
	FAST_EXEC(EFastExecLockRamDrive);
sl@0
   320
	FAST_EXEC(EFastExecUnlockRamDrive);
sl@0
   321
	FAST_EXEC(EFastExecRomHeaderAddress);
sl@0
   322
	FAST_EXEC(EFastExecRomRootDirAddress);
sl@0
   323
	FAST_EXEC(EFastExecJustInTime);
sl@0
   324
	FAST_EXEC(EFastExecSetJustInTime);
sl@0
   325
	FAST_EXEC(EFastExecBlockThreads);
sl@0
   326
	FAST_EXEC(EFastExecKernelStartup);
sl@0
   327
	FAST_EXEC(EFastExecFatUtilityFunctions);
sl@0
   328
	FAST_EXEC(EFastExecSafeInc);
sl@0
   329
	FAST_EXEC(EFastExecSafeDec);
sl@0
   330
sl@0
   331
	asm("__Args: ");
sl@0
   332
	asm(".word Args ");
sl@0
   333
	}
sl@0
   334
sl@0
   335
#define SLOW_EXEC(n)	asm("swi %a0" : : "i" (n))
sl@0
   336
__NAKED__ void DoSlowExecCall(TInt /*aExecNum*/)
sl@0
   337
	{
sl@0
   338
	asm("ldr r1, __Args ");
sl@0
   339
	asm("mov ip, lr ");
sl@0
   340
	asm("ldmfd r1, {r0-r3} ");
sl@0
   341
	asm("add pc, pc, r0, lsl #2 ");
sl@0
   342
	asm("nop )";
sl@0
   343
sl@0
   344
	SLOW_EXEC(EExecObjectNext);
sl@0
   345
	SLOW_EXEC(EExecChunkBase);
sl@0
   346
	SLOW_EXEC(EExecChunkSize);
sl@0
   347
	SLOW_EXEC(EExecChunkMaxSize);
sl@0
   348
	SLOW_EXEC(EExecHandleAttributes);
sl@0
   349
	SLOW_EXEC(EExecTickCount);
sl@0
   350
	SLOW_EXEC(EExecLogicalDeviceGetCaps);
sl@0
   351
	SLOW_EXEC(EExecLogicalDeviceQueryVersionSupported);
sl@0
   352
	SLOW_EXEC(EExecLogicalDeviceIsAvailable);
sl@0
   353
	SLOW_EXEC(EExecDllGlobalAlloc);
sl@0
   354
	SLOW_EXEC(EExecChangeLocale);
sl@0
   355
	SLOW_EXEC(EExecChannelRequest);
sl@0
   356
	SLOW_EXEC(EExecMathRandom);
sl@0
   357
	SLOW_EXEC(EExecChannelControl);
sl@0
   358
	SLOW_EXEC(EExecResetMachine);
sl@0
   359
	SLOW_EXEC(EExecLibraryLookup);
sl@0
   360
	SLOW_EXEC(EExecLibraryEntryPoint);
sl@0
   361
	SLOW_EXEC(EExecLibraryDllRefTable);
sl@0
   362
	SLOW_EXEC(EExecStaticCallList);
sl@0
   363
	SLOW_EXEC(EExecDynamicCallList);
sl@0
   364
	SLOW_EXEC(EExecLibraryCallList);
sl@0
   365
	SLOW_EXEC(EExecLibraryFileName);
sl@0
   366
	SLOW_EXEC(EExecExecuteInSupervisorMode);
sl@0
   367
	SLOW_EXEC(EExecMutexCount);
sl@0
   368
	SLOW_EXEC(EExecMutexWait);
sl@0
   369
	SLOW_EXEC(EExecMutexSignal);
sl@0
   370
	SLOW_EXEC(EExecProcessId);
sl@0
   371
	SLOW_EXEC(EExecDllFileName);
sl@0
   372
	SLOW_EXEC(EExecProcessResume);
sl@0
   373
	SLOW_EXEC(EExecProcessFileName);
sl@0
   374
	SLOW_EXEC(EExecProcessCommandLine);
sl@0
   375
	SLOW_EXEC(EExecProcessExitType);
sl@0
   376
	SLOW_EXEC(EExecProcessExitReason);
sl@0
   377
	SLOW_EXEC(EExecProcessExitCategory);
sl@0
   378
	SLOW_EXEC(EExecProcessPriority);
sl@0
   379
	SLOW_EXEC(EExecProcessSetPriority);
sl@0
   380
	SLOW_EXEC(EExecProcessFlags);
sl@0
   381
	SLOW_EXEC(EExecProcessSetFlags);
sl@0
   382
	SLOW_EXEC(EExecProcessSetOwner);
sl@0
   383
	SLOW_EXEC(EExecDllInitialiseData);
sl@0
   384
	SLOW_EXEC(EExecSemaphoreCount);
sl@0
   385
	SLOW_EXEC(EExecSemaphoreWait);
sl@0
   386
	SLOW_EXEC(EExecSemaphoreSignal1);
sl@0
   387
	SLOW_EXEC(EExecSemaphoreSignalN);
sl@0
   388
	SLOW_EXEC(EExecDllFreeData);
sl@0
   389
	SLOW_EXEC(EExecServerReceive);
sl@0
   390
	SLOW_EXEC(EExecServerCancel);
sl@0
   391
	SLOW_EXEC(EExecSetSessionPtr);
sl@0
   392
	SLOW_EXEC(EExecSessionSend);
sl@0
   393
	SLOW_EXEC(EExecThreadId);
sl@0
   394
	SLOW_EXEC(EExecSessionShare);
sl@0
   395
	SLOW_EXEC(EExecThreadResume);
sl@0
   396
	SLOW_EXEC(EExecThreadSuspend);
sl@0
   397
	SLOW_EXEC(EExecThreadPriority);
sl@0
   398
	SLOW_EXEC(EExecThreadSetPriority);
sl@0
   399
	SLOW_EXEC(EExecThreadProcessPriority);
sl@0
   400
	SLOW_EXEC(EExecThreadSetProcessPriority);
sl@0
   401
	SLOW_EXEC(EExecThreadFlags);
sl@0
   402
	SLOW_EXEC(EExecThreadSetFlags);
sl@0
   403
	SLOW_EXEC(EExecThreadRequestCount);
sl@0
   404
	SLOW_EXEC(EExecThreadExitType);
sl@0
   405
	SLOW_EXEC(EExecThreadExitReason);
sl@0
   406
	SLOW_EXEC(EExecThreadExitCategory);
sl@0
   407
	SLOW_EXEC(EExecThreadGetDesLength);
sl@0
   408
	SLOW_EXEC(EExecThreadGetDesMaxLength);
sl@0
   409
	SLOW_EXEC(EExecThreadRead8);
sl@0
   410
	SLOW_EXEC(EExecThreadRead16);
sl@0
   411
	SLOW_EXEC(EExecThreadWrite8);
sl@0
   412
	SLOW_EXEC(EExecThreadWrite16);
sl@0
   413
	SLOW_EXEC(EExecTimerCancel);
sl@0
   414
	SLOW_EXEC(EExecTimerAfter);
sl@0
   415
	SLOW_EXEC(EExecTimerAt);
sl@0
   416
	SLOW_EXEC(EExecTimerLock);
sl@0
   417
	SLOW_EXEC(EExecChangeNotifierLogon);
sl@0
   418
	SLOW_EXEC(EExecChangeNotifierLogoff);
sl@0
   419
	SLOW_EXEC(EExecRequestSignal);
sl@0
   420
	SLOW_EXEC(EExecMatch8);
sl@0
   421
	SLOW_EXEC(EExecMatch16);
sl@0
   422
	SLOW_EXEC(EExecFind8);
sl@0
   423
	SLOW_EXEC(EExecFind16);
sl@0
   424
	SLOW_EXEC(EExecLocateF8);
sl@0
   425
	SLOW_EXEC(EExecLocateF16);
sl@0
   426
	SLOW_EXEC(EExecHandleName);
sl@0
   427
	SLOW_EXEC(EExecHandleFullName);
sl@0
   428
	SLOW_EXEC(EExecHandleInfo);
sl@0
   429
	SLOW_EXEC(EExecHandleCount);
sl@0
   430
	SLOW_EXEC(EExecAfter);
sl@0
   431
	SLOW_EXEC(EExecAt);
sl@0
   432
	SLOW_EXEC(EExecDayName);
sl@0
   433
	SLOW_EXEC(EExecDayNameAbb);
sl@0
   434
	SLOW_EXEC(EExecMonthName);
sl@0
   435
	SLOW_EXEC(EExecMonthNameAbb);
sl@0
   436
	SLOW_EXEC(EExecSuffix);
sl@0
   437
	SLOW_EXEC(EExecAmPmName);
sl@0
   438
	SLOW_EXEC(EExecCurrencySymbol);
sl@0
   439
	SLOW_EXEC(EExecLocale);
sl@0
   440
	SLOW_EXEC(EExecLocaleSet);
sl@0
   441
	SLOW_EXEC(EExecLocaleMessageText);
sl@0
   442
	SLOW_EXEC(EExecMessageComplete);
sl@0
   443
	SLOW_EXEC(EExecTimeNow);
sl@0
   444
	SLOW_EXEC(EExecSetHomeTime);
sl@0
   445
	SLOW_EXEC(EExecSetMachineConfiguration);
sl@0
   446
	SLOW_EXEC(EExecCaptureEventHook);
sl@0
   447
	SLOW_EXEC(EExecReleaseEventHook);
sl@0
   448
	SLOW_EXEC(EExecRequestEvent);
sl@0
   449
	SLOW_EXEC(EExecRequestEventCancel);
sl@0
   450
	SLOW_EXEC(EExecAddEvent);
sl@0
   451
	SLOW_EXEC(EExecSessionSendSync);
sl@0
   452
	SLOW_EXEC(EExecDllGlobalAllocated);
sl@0
   453
	SLOW_EXEC(EExecDllGlobalRead);
sl@0
   454
	SLOW_EXEC(EExecDllGlobalWrite);
sl@0
   455
	SLOW_EXEC(EExecDllTls);
sl@0
   456
	SLOW_EXEC(EExecHalFunction);
sl@0
   457
	SLOW_EXEC(EExecSessionAttach);
sl@0
   458
	SLOW_EXEC(EExecWsRegisterThread);
sl@0
   459
	SLOW_EXEC(EExecFsRegisterThread);
sl@0
   460
	SLOW_EXEC(EExecProcessCommandLineLength);
sl@0
   461
	SLOW_EXEC(EExecTimerInactivity);
sl@0
   462
	SLOW_EXEC(EExecUserInactivityTime);
sl@0
   463
	SLOW_EXEC(EExecShortDateFormatSpec);
sl@0
   464
	SLOW_EXEC(EExecLongDateFormatSpec);
sl@0
   465
	SLOW_EXEC(EExecTimeFormatSpec);
sl@0
   466
	SLOW_EXEC(EExecResetInactivityTime);
sl@0
   467
	SLOW_EXEC(EExecDebugFunction);
sl@0
   468
	SLOW_EXEC(EExecBreakPoint);
sl@0
   469
	SLOW_EXEC(EExecProfileStart);
sl@0
   470
	SLOW_EXEC(EExecProfileEnd);
sl@0
   471
	SLOW_EXEC(EExecPasswordIsEnabled);
sl@0
   472
	SLOW_EXEC(EExecPasswordIsValid);
sl@0
   473
	SLOW_EXEC(EExecExceptionHandler);
sl@0
   474
	SLOW_EXEC(EExecSetExceptionHandler);
sl@0
   475
	SLOW_EXEC(EExecModifyExceptionMask);
sl@0
   476
	SLOW_EXEC(EExecRaiseException);
sl@0
   477
	SLOW_EXEC(EExecIsExceptionHandled);
sl@0
   478
	SLOW_EXEC(EExecThreadGetRamSizes);
sl@0
   479
	SLOW_EXEC(EExecProcessGetRamSizes);
sl@0
   480
	SLOW_EXEC(EExecLibraryGetRamSizes);
sl@0
   481
	SLOW_EXEC(EExecMachineConfiguration);
sl@0
   482
	SLOW_EXEC(EExecWasChunkSetHeapInfo);
sl@0
   483
	SLOW_EXEC(EExecLibraryType);
sl@0
   484
	SLOW_EXEC(EExecProcessType);
sl@0
   485
	SLOW_EXEC(EExecPasswordSetEnabled);
sl@0
   486
	SLOW_EXEC(EExecPasswordSet);
sl@0
   487
	SLOW_EXEC(EExecSetCurrencySymbol);
sl@0
   488
	SLOW_EXEC(EExecProcessSetType);
sl@0
   489
	SLOW_EXEC(EExecChunkBottom);
sl@0
   490
	SLOW_EXEC(EExecChunkTop);
sl@0
   491
	SLOW_EXEC(EExecThreadContext);
sl@0
   492
	SLOW_EXEC(EExecDllDataInfo);
sl@0
   493
	SLOW_EXEC(EExecThreadCreate);
sl@0
   494
	SLOW_EXEC(EExecProcessCreate);
sl@0
   495
	SLOW_EXEC(EExecProcessLoaded);
sl@0
   496
	SLOW_EXEC(EExecFindHandleOpen);
sl@0
   497
	SLOW_EXEC(EExecHandleClose);
sl@0
   498
	SLOW_EXEC(EExecChunkCreate);
sl@0
   499
	SLOW_EXEC(EExecChunkAdjust);
sl@0
   500
	SLOW_EXEC(EExecOpenNamedObject);
sl@0
   501
	SLOW_EXEC(EExecHandleDuplicate);
sl@0
   502
	SLOW_EXEC(EExecMutexCreate);
sl@0
   503
	SLOW_EXEC(EExecSemaphoreCreate);
sl@0
   504
	SLOW_EXEC(EExecThreadOpenById);
sl@0
   505
	SLOW_EXEC(EExecProcessOpenById);
sl@0
   506
	SLOW_EXEC(EExecThreadKill);
sl@0
   507
	SLOW_EXEC(EExecThreadLogon);
sl@0
   508
	SLOW_EXEC(EExecThreadLogonCancel);
sl@0
   509
	SLOW_EXEC(EExecDllSetTls);
sl@0
   510
	SLOW_EXEC(EExecDllFreeTls);
sl@0
   511
	SLOW_EXEC(EExecThreadRename);
sl@0
   512
	SLOW_EXEC(EExecProcessRename);
sl@0
   513
	SLOW_EXEC(EExecProcessKill);
sl@0
   514
	SLOW_EXEC(EExecProcessOwner);
sl@0
   515
	SLOW_EXEC(EExecProcessLogon);
sl@0
   516
	SLOW_EXEC(EExecProcessLogonCancel);
sl@0
   517
	SLOW_EXEC(EExecThreadSetInitialParameter);
sl@0
   518
	SLOW_EXEC(EExecThreadProcess);
sl@0
   519
	SLOW_EXEC(EExecThreadGetHeap);
sl@0
   520
	SLOW_EXEC(EExecServerCreate);
sl@0
   521
	SLOW_EXEC(EExecSessionCreate);
sl@0
   522
	SLOW_EXEC(EExecLibraryLoadExact);
sl@0
   523
	SLOW_EXEC(EExecLibraryLoaded);
sl@0
   524
	SLOW_EXEC(EExecDeviceLoad);
sl@0
   525
	SLOW_EXEC(EExecDeviceFree);
sl@0
   526
	SLOW_EXEC(EExecChannelCreate);
sl@0
   527
	SLOW_EXEC(EExecTimerCreate);
sl@0
   528
	SLOW_EXEC(EExecDllAddDependency);
sl@0
   529
	SLOW_EXEC(EExecTimerHighRes);
sl@0
   530
	SLOW_EXEC(EExecAfterHighRes);
sl@0
   531
	SLOW_EXEC(EExecChangeNotifierCreate);
sl@0
   532
	SLOW_EXEC(EExecUndertakerCreate);
sl@0
   533
	SLOW_EXEC(EExecUndertakerLogon);
sl@0
   534
	SLOW_EXEC(EExecUndertakerLogonCancel);
sl@0
   535
	SLOW_EXEC(EExecKernelHeapDebug);
sl@0
   536
	SLOW_EXEC(EExecThreadGetCpuTime);
sl@0
   537
	}
sl@0
   538
sl@0
   539
sl@0
   540
void TestExec(const SExecInfo& aInfo, TBool aFast)
sl@0
   541
	{
sl@0
   542
	TInt xn=aInfo.iExecNum;
sl@0
   543
	TInt np=aInfo.iNumParams;
sl@0
   544
	if (np==0)
sl@0
   545
		return;		// no parameters
sl@0
   546
	if (!aFast)
sl@0
   547
		{
sl@0
   548
		// don't do some slow execs
sl@0
   549
		switch (xn)
sl@0
   550
			{
sl@0
   551
			// loader group (could be restricted to F32)
sl@0
   552
			case EExecProcessCreate:
sl@0
   553
			case EExecProcessLoaded:
sl@0
   554
			case EExecLibraryLoadExact:
sl@0
   555
			case EExecLibraryLoaded:
sl@0
   556
			case EExecDllAddDependency:
sl@0
   557
				return;
sl@0
   558
			// descriptor processing (could be moved user side)
sl@0
   559
			case EExecMatch8:
sl@0
   560
			case EExecMatch16:
sl@0
   561
			case EExecLocateF8:
sl@0
   562
			case EExecLocateF16:
sl@0
   563
			case EExecFind8:
sl@0
   564
			case EExecFind16:
sl@0
   565
				return;
sl@0
   566
sl@0
   567
			// we don't want to do this
sl@0
   568
			case EExecResetMachine:
sl@0
   569
				return;
sl@0
   570
			}
sl@0
   571
		}
sl@0
   572
sl@0
   573
	TInt state[4];
sl@0
   574
	Mem::FillZ(state,sizeof(state));
sl@0
   575
	}