os/kernelhwsrv/kernel/eka/euser/epoc/symc/uc_exec.cpp
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
sl@0
     1
// Copyright (c) 1995-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
// e32\euser\epoc\win32\uc_exec.cpp
sl@0
    15
// 
sl@0
    16
//
sl@0
    17
sl@0
    18
sl@0
    19
//#define __GEN_USER_EXEC_CODE__
sl@0
    20
sl@0
    21
#include "../win32/uc_std.h"
sl@0
    22
#include <e32svr.h>
sl@0
    23
#include <emulator.h>
sl@0
    24
sl@0
    25
//
sl@0
    26
#include <stdlib.h>
sl@0
    27
#include <stdio.h>
sl@0
    28
sl@0
    29
/**
sl@0
    30
Symbian compatibility executive panics
sl@0
    31
*/
sl@0
    32
enum TSymcExecPanic
sl@0
    33
	{
sl@0
    34
	ESymcExecPanicNotSupported,
sl@0
    35
	ESymcExecPanicHeapAlreadyExists,
sl@0
    36
	ESymcExecPanicCreateHeapFailed,
sl@0
    37
	ESymcExecPanicNotUsed
sl@0
    38
	};
sl@0
    39
sl@0
    40
void Panic(TInt aReason)
sl@0
    41
	{
sl@0
    42
	_LIT(KCategory,"SYMC-Exec");
sl@0
    43
	User::Panic(KCategory,aReason);
sl@0
    44
	}
sl@0
    45
sl@0
    46
sl@0
    47
const TInt KTrapStackSize=256;
sl@0
    48
sl@0
    49
/*
sl@0
    50
TODO: should we use CObject?
sl@0
    51
*/
sl@0
    52
class TThread
sl@0
    53
	{
sl@0
    54
public:
sl@0
    55
	
sl@0
    56
public:
sl@0
    57
	RSemaphore iRequestSemaphore;
sl@0
    58
	CActiveScheduler* iActiveScheduler; //Current active scheduler for this thread. Used.
sl@0
    59
	TTrapHandler* iHandler; //This is our cleanup stack. Used.
sl@0
    60
	//No idea why we need that trap stack
sl@0
    61
	//TTrap* iTrapStack[KTrapStackSize];
sl@0
    62
	//TInt iTrapCount;
sl@0
    63
	};
sl@0
    64
sl@0
    65
/*
sl@0
    66
TODO: should we use CObject?
sl@0
    67
Object used to store process globals for our pseudo kernel.
sl@0
    68
That's typically going to be a singleton.
sl@0
    69
*/
sl@0
    70
/*
sl@0
    71
class TProcess
sl@0
    72
	{
sl@0
    73
public:
sl@0
    74
	void CreateHeap();
sl@0
    75
	void Free();
sl@0
    76
sl@0
    77
public:
sl@0
    78
	RHeap* iAllocator;
sl@0
    79
	TAny* iBase;
sl@0
    80
	TThread iThread; //Single thread for now
sl@0
    81
	};
sl@0
    82
sl@0
    83
sl@0
    84
void TProcess::CreateHeap()
sl@0
    85
	{
sl@0
    86
	//iThread.iTrapCount=0;
sl@0
    87
	//Define the size of our heap
sl@0
    88
	const TInt KHeapMaxSize=1024*1024*10; // 10 Mo for now
sl@0
    89
	__ASSERT_ALWAYS(iAllocator==NULL && iBase==NULL,Panic(ESymcExecPanicHeapAlreadyExists));	
sl@0
    90
	iBase=malloc(KHeapMaxSize);
sl@0
    91
	__ASSERT_ALWAYS(iBase!=NULL,Panic(ESymcExecPanicCreateHeapFailed));	
sl@0
    92
	//TODO: is there anyway we could use variable size heap?
sl@0
    93
	iAllocator=UserHeap::FixedHeap(iBase,KHeapMaxSize);
sl@0
    94
	__ASSERT_ALWAYS(iAllocator!=NULL,Panic(ESymcExecPanicCreateHeapFailed));	
sl@0
    95
	}
sl@0
    96
sl@0
    97
void TProcess::Free()
sl@0
    98
	{
sl@0
    99
	free(iBase);
sl@0
   100
	}
sl@0
   101
sl@0
   102
*/
sl@0
   103
sl@0
   104
//TProcess gProcess;
sl@0
   105
sl@0
   106
sl@0
   107
sl@0
   108
//
sl@0
   109
sl@0
   110
sl@0
   111
typedef TInt (__fastcall *TDispatcher)(TInt, TInt*);
sl@0
   112
TInt __fastcall LazyDispatch(TInt aFunction, TInt* aArgs);
sl@0
   113
sl@0
   114
#pragma data_seg(".data2")
sl@0
   115
#ifdef __VC32__
sl@0
   116
#pragma bss_seg(".data2")
sl@0
   117
#endif
sl@0
   118
static TDispatcher TheDispatcher = &LazyDispatch;
sl@0
   119
#pragma data_seg()
sl@0
   120
#ifdef __VC32__
sl@0
   121
#pragma bss_seg()
sl@0
   122
#endif
sl@0
   123
sl@0
   124
TInt __fastcall LazyDispatch(TInt aFunction, TInt* aArgs)
sl@0
   125
	{
sl@0
   126
	//Panic(ESymcExecPanicNotSupported);
sl@0
   127
	//
sl@0
   128
	HINSTANCE kernel = GetModuleHandleA("ekern.exe");
sl@0
   129
	if (kernel)
sl@0
   130
		{
sl@0
   131
		TDispatcher dispatcher = (TDispatcher)Emulator::GetProcAddress(kernel, (LPCSTR)1);
sl@0
   132
		if (dispatcher)
sl@0
   133
			{
sl@0
   134
			TheDispatcher = dispatcher;
sl@0
   135
			return dispatcher(aFunction, aArgs);
sl@0
   136
			}
sl@0
   137
		}
sl@0
   138
	ExitProcess(101);
sl@0
   139
	return 0;
sl@0
   140
	}
sl@0
   141
sl@0
   142
#include <u32exec.h>
sl@0
   143
sl@0
   144
/******************************************************************************
sl@0
   145
 * Slow executive calls with preprocessing or extra arguments
sl@0
   146
 ******************************************************************************/
sl@0
   147
sl@0
   148
__NAKED__ TInt Exec::SessionSend(TInt /*aHandle*/, TInt /*aFunction*/, TAny* /*aPtr*/, TRequestStatus* /*aStatus*/)
sl@0
   149
//
sl@0
   150
// Send a blind message to the server.
sl@0
   151
//
sl@0
   152
	{
sl@0
   153
	__DISPATCH(EExecSessionSend|EXECUTIVE_SLOW)
sl@0
   154
	}
sl@0
   155
sl@0
   156
__NAKED__ TInt Exec::SessionSendSync(TInt /*aHandle*/, TInt /*aFunction*/, TAny* /*aPtr*/, TRequestStatus* /*aStatus*/)
sl@0
   157
//
sl@0
   158
// Send a blind message to the server using thread's dedicated message slot.
sl@0
   159
//
sl@0
   160
	{
sl@0
   161
	__DISPATCH(EExecSessionSendSync|EXECUTIVE_SLOW)
sl@0
   162
	}
sl@0
   163
sl@0
   164
sl@0
   165
__NAKED__ TInt Exec::MessageIpcCopy(TInt /*aHandle*/, TInt /*aParam*/, SIpcCopyInfo& /*aInfo*/, TInt /*anOffset*/)
sl@0
   166
//
sl@0
   167
// Perform a descriptor-to-descriptor IPC copy
sl@0
   168
//
sl@0
   169
	{
sl@0
   170
sl@0
   171
	__DISPATCH(EExecMessageIpcCopy|EXECUTIVE_SLOW)
sl@0
   172
	}
sl@0
   173
sl@0
   174
__NAKED__ TInt Exec::BTraceOut(TUint32 /*a0*/, TUint32 /*a1*/, const BTrace::SExecExtension& /*aExtension*/, TInt /*aDataSize*/)
sl@0
   175
	{
sl@0
   176
	__DISPATCH(EExecBTraceOut|EXECUTIVE_SLOW)
sl@0
   177
	}
sl@0
   178
sl@0
   179
__NAKED__ TInt Exec::BTraceOutBig(TUint32 /*a0*/, TUint32 /*a1*/, const BTrace::SExecExtension& /*aExtension*/, TInt /*aDataSize*/)
sl@0
   180
	{
sl@0
   181
	__DISPATCH(EExecBTraceOutBig|EXECUTIVE_SLOW)
sl@0
   182
	}
sl@0
   183
sl@0
   184
__NAKED__ TInt Exec::UTraceOut(TUint32 /*a0*/, TUint32 /*a1*/, const BTrace::SExecExtension& /*aExtension*/, TInt /*aDataSize*/)
sl@0
   185
	{
sl@0
   186
	__DISPATCH(EExecUTraceOut|EXECUTIVE_SLOW)
sl@0
   187
	}
sl@0
   188
sl@0
   189
EXPORT_C TBool BTrace::Out(TUint32 a0, TUint32 a1, TUint32 a2, TUint32 a3)
sl@0
   190
	{
sl@0
   191
	BTrace::SExecExtension ext;
sl@0
   192
	ext.iA2 = a2;
sl@0
   193
	ext.iA3 = a3;
sl@0
   194
	ext.iPc = (&a0)[-1]; // return address on X86
sl@0
   195
	return Exec::BTraceOut(a0,a1,ext,0);
sl@0
   196
	}
sl@0
   197
sl@0
   198
EXPORT_C TBool BTrace::OutX(TUint32 a0, TUint32 a1, TUint32 a2, TUint32 a3)
sl@0
   199
	{
sl@0
   200
	BTrace::SExecExtension ext;
sl@0
   201
	ext.iA2 = a2;
sl@0
   202
	ext.iA3 = a3;
sl@0
   203
	ext.iPc = (&a0)[-1]; // return address on X86
sl@0
   204
	return Exec::BTraceOut(a0,a1,ext,0);
sl@0
   205
	}
sl@0
   206
sl@0
   207
EXPORT_C TBool BTrace::OutN(TUint32 a0, TUint32 a1, TUint32 a2, const TAny* aData, TInt aDataSize)
sl@0
   208
	{
sl@0
   209
	BTrace::SExecExtension ext;
sl@0
   210
	ext.iA2 = a2;
sl@0
   211
	ext.iA3 = (TUint32)aData;
sl@0
   212
	ext.iPc = (&a0)[-1]; // return address on X86
sl@0
   213
	return Exec::BTraceOut(a0,a1,ext,aDataSize);
sl@0
   214
	}
sl@0
   215
sl@0
   216
EXPORT_C TBool BTrace::OutNX(TUint32 a0, TUint32 a1, TUint32 a2, const TAny* aData, TInt aDataSize)
sl@0
   217
	{
sl@0
   218
	BTrace::SExecExtension ext;
sl@0
   219
	ext.iA2 = a2;
sl@0
   220
	ext.iA3 = (TUint32)aData;
sl@0
   221
	ext.iPc = (&a0)[-1]; // return address on X86
sl@0
   222
	return Exec::BTraceOut(a0,a1,ext,aDataSize);
sl@0
   223
	}
sl@0
   224
sl@0
   225
EXPORT_C TBool BTrace::OutBig(TUint32 a0, TUint32 a1, const TAny* aData, TInt aDataSize)
sl@0
   226
	{
sl@0
   227
	BTrace::SExecExtension ext;
sl@0
   228
	ext.iA2 = 0;
sl@0
   229
	ext.iA3 = (TUint32)aData;
sl@0
   230
	ext.iPc = (&a0)[-1]; // return address on X86
sl@0
   231
sl@0
   232
	if((TUint)aDataSize>8u)
sl@0
   233
		{
sl@0
   234
		if((TUint)aDataSize>KMaxBTraceDataArray+4u)
sl@0
   235
			return Exec::BTraceOutBig(a0,a1,ext,aDataSize);
sl@0
   236
		a0 += 4;
sl@0
   237
		aDataSize -= 4;
sl@0
   238
		ext.iA2 = *((TUint32*&)aData)++;
sl@0
   239
		ext.iA3 = (TUint32)aData;
sl@0
   240
		return Exec::BTraceOut(a0,a1,ext,aDataSize);
sl@0
   241
		}
sl@0
   242
sl@0
   243
	if((TUint)aDataSize>4u)
sl@0
   244
		ext.iA3 = ((TUint32*)aData)[1];
sl@0
   245
	if(aDataSize)
sl@0
   246
		ext.iA2 = ((TUint32*)aData)[0];
sl@0
   247
	a0 += aDataSize;
sl@0
   248
	aDataSize = 0;
sl@0
   249
	return Exec::BTraceOut(a0,a1,ext,aDataSize);
sl@0
   250
	}
sl@0
   251
sl@0
   252
EXPORT_C TBool BTrace::OutFiltered(TUint32 a0, TUint32 a1, TUint32 a2, TUint32 a3)
sl@0
   253
	{
sl@0
   254
	BTrace::SExecExtension ext;
sl@0
   255
	a0 |= EMissingRecord<<BTrace::EFlagsIndex*8; // overload meaning of this flag to indicate filtered trace
sl@0
   256
	ext.iA2 = a2;
sl@0
   257
	ext.iA3 = a3;
sl@0
   258
	ext.iPc = (&a0)[-1]; // return address on X86
sl@0
   259
	return Exec::BTraceOut(a0,a1,ext,0);
sl@0
   260
	}
sl@0
   261
sl@0
   262
EXPORT_C TBool BTrace::OutFilteredX(TUint32 a0, TUint32 a1, TUint32 a2, TUint32 a3)
sl@0
   263
	{
sl@0
   264
	BTrace::SExecExtension ext;
sl@0
   265
	a0 |= EMissingRecord<<BTrace::EFlagsIndex*8; // overload meaning of this flag to indicate filtered trace
sl@0
   266
	ext.iA2 = a2;
sl@0
   267
	ext.iA3 = a3;
sl@0
   268
	ext.iPc = (&a0)[-1]; // return address on X86
sl@0
   269
	return Exec::BTraceOut(a0,a1,ext,0);
sl@0
   270
	}
sl@0
   271
sl@0
   272
EXPORT_C TBool BTrace::OutFilteredN(TUint32 a0, TUint32 a1, TUint32 a2, const TAny* aData, TInt aDataSize)
sl@0
   273
	{
sl@0
   274
	BTrace::SExecExtension ext;
sl@0
   275
	a0 |= EMissingRecord<<BTrace::EFlagsIndex*8; // overload meaning of this flag to indicate filtered trace
sl@0
   276
	ext.iA2 = a2;
sl@0
   277
	ext.iA3 = (TUint32)aData;
sl@0
   278
	ext.iPc = (&a0)[-1]; // return address on X86
sl@0
   279
	return Exec::BTraceOut(a0,a1,ext,aDataSize);
sl@0
   280
	}
sl@0
   281
sl@0
   282
EXPORT_C TBool BTrace::OutFilteredNX(TUint32 a0, TUint32 a1, TUint32 a2, const TAny* aData, TInt aDataSize)
sl@0
   283
	{
sl@0
   284
	BTrace::SExecExtension ext;
sl@0
   285
	a0 |= EMissingRecord<<BTrace::EFlagsIndex*8; // overload meaning of this flag to indicate filtered trace
sl@0
   286
	ext.iA2 = a2;
sl@0
   287
	ext.iA3 = (TUint32)aData;
sl@0
   288
	ext.iPc = (&a0)[-1]; // return address on X86
sl@0
   289
	return Exec::BTraceOut(a0,a1,ext,aDataSize);
sl@0
   290
	}
sl@0
   291
sl@0
   292
EXPORT_C TBool BTrace::OutFilteredBig(TUint32 a0, TUint32 a1, const TAny* aData, TInt aDataSize)
sl@0
   293
	{
sl@0
   294
	BTrace::SExecExtension ext;
sl@0
   295
	a0 |= EMissingRecord<<BTrace::EFlagsIndex*8; // overload meaning of this flag to indicate filtered trace
sl@0
   296
	ext.iA2 = 0;
sl@0
   297
	ext.iA3 = (TUint32)aData;
sl@0
   298
	ext.iPc = (&a0)[-1]; // return address on X86
sl@0
   299
sl@0
   300
	if((TUint)aDataSize>8u)
sl@0
   301
		{
sl@0
   302
		if((TUint)aDataSize>KMaxBTraceDataArray+4u)
sl@0
   303
			return Exec::BTraceOutBig(a0,a1,ext,aDataSize);
sl@0
   304
		a0 += 4;
sl@0
   305
		aDataSize -= 4;
sl@0
   306
		ext.iA2 = *((TUint32*&)aData)++;
sl@0
   307
		ext.iA3 = (TUint32)aData;
sl@0
   308
		return Exec::BTraceOut(a0,a1,ext,aDataSize);
sl@0
   309
		}
sl@0
   310
sl@0
   311
	if((TUint)aDataSize>4u)
sl@0
   312
		ext.iA3 = ((TUint32*)aData)[1];
sl@0
   313
	if(aDataSize)
sl@0
   314
		ext.iA2 = ((TUint32*)aData)[0];
sl@0
   315
	a0 += aDataSize;
sl@0
   316
	aDataSize = 0;
sl@0
   317
	return Exec::BTraceOut(a0,a1,ext,aDataSize);
sl@0
   318
	}
sl@0
   319
sl@0
   320
EXPORT_C TBool BTrace::OutFilteredPcFormatBig(TUint32 aHeader, TUint32 aModuleUid, TUint32 aPc, TUint16 aFormatId, const TAny* aData, TInt aDataSize)
sl@0
   321
	{
sl@0
   322
 	BTrace::SExecExtension ext;
sl@0
   323
	aHeader |= EMissingRecord<<BTrace::EFlagsIndex*8; // overload meaning of this flag to indicate filtered trace
sl@0
   324
	ext.iA2 = aFormatId;
sl@0
   325
	ext.iA3 = (TUint32)aData;
sl@0
   326
	ext.iPc = aPc;
sl@0
   327
sl@0
   328
	if((TUint)aDataSize>KMaxBTraceDataArray)
sl@0
   329
		return Exec::UTraceOut(aHeader,aModuleUid,ext,aDataSize);
sl@0
   330
	aHeader += 4;
sl@0
   331
	return Exec::BTraceOut(aHeader,aModuleUid,ext,aDataSize);
sl@0
   332
	}
sl@0
   333
sl@0
   334
sl@0
   335
/*
sl@0
   336
void ExecRequestComplete(TInt aHandle, TRequestStatus*& aStatus, TInt aReason)
sl@0
   337
	{
sl@0
   338
	//TODO: look up our thread per handle
sl@0
   339
	//
sl@0
   340
	gProcess.iThread.iRequestSemaphore.Signal();   
sl@0
   341
	}
sl@0
   342
*/
sl@0
   343
sl@0
   344
__NAKED__ void ExecRequestComplete(TInt /*aHandle*/, TRequestStatus*& /*aStatus*/, TInt /*aReason*/)
sl@0
   345
	{
sl@0
   346
	_asm mov ecx, [esp+8]			// ecx = TRequestStatus**
sl@0
   347
	_asm xor eax, eax				//
sl@0
   348
	_asm lock xchg eax, [ecx]		// eax=TRequestStatus*, zero TRequestStatus*
sl@0
   349
	_asm cmp eax, 0					//
sl@0
   350
	_asm je ExecRequestComplete_ret
sl@0
   351
	_asm mov ecx, [esp+12]			// ecx = aReason
sl@0
   352
	_asm mov [eax], ecx				// store aReason in request status
sl@0
   353
	__DISPATCH(EExecThreadRequestSignal|EXECUTIVE_SLOW)
sl@0
   354
	_asm ExecRequestComplete_ret: ret
sl@0
   355
	}
sl@0
   356
sl@0
   357
sl@0
   358
sl@0
   359
EXPORT_C void RThread::RequestComplete(TRequestStatus*& aStatus, TInt aReason) const
sl@0
   360
/**
sl@0
   361
Signals this thread that an asynchronous request originating from this thread,
sl@0
   362
is complete.
sl@0
   363
sl@0
   364
The request is associated with the specified request status object supplied
sl@0
   365
by this thread.
sl@0
   366
sl@0
   367
Typically, the caller of this function is the service provider responsible
sl@0
   368
for satisfying the request made by this thread.
sl@0
   369
sl@0
   370
The request is completed with the completion code passed in aReason. This
sl@0
   371
value is copied into this thread's request status, *aStatus, before signalling
sl@0
   372
this thread's request semaphore.
sl@0
   373
sl@0
   374
The meaning of the completion code is a matter of convention to be decided
sl@0
   375
between the service provider and this thread.
sl@0
   376
sl@0
   377
In a client-server situation, completion of a request takes place in the context
sl@0
   378
of the server thread, but the pointer is interpreted in the address space
sl@0
   379
of the client.
sl@0
   380
sl@0
   381
It is often the case in client-server situations that the client and the server
sl@0
   382
are in the same address space (i.e. the same process).
sl@0
   383
sl@0
   384
Setting the pointer to the request status to NULL is a convenience, not all
sl@0
   385
servers need it.
sl@0
   386
sl@0
   387
@param aStatus A reference to a pointer to the request status originally
sl@0
   388
               supplied by this thread. This is a pointer into this thread's
sl@0
   389
               address space, which may be different to the thread currently
sl@0
   390
               executing (this code). On return, the pointer to the request
sl@0
   391
               status is set to NULL.
sl@0
   392
sl@0
   393
@param aReason The completion code of this request.
sl@0
   394
*/
sl@0
   395
	{
sl@0
   396
	ExecRequestComplete(iHandle,aStatus,aReason);
sl@0
   397
	//SL: just change the status not the flag. We do that to please the active scheduler
sl@0
   398
	//That's apparently the expected behavior 
sl@0
   399
	//aStatus->iStatus=aReason;
sl@0
   400
	}
sl@0
   401
sl@0
   402
sl@0
   403
sl@0
   404
/**
sl@0
   405
Signal this threads request semaphore.
sl@0
   406
sl@0
   407
This is similar to RThread::RequestComplete() except that no TRequestStatus object
sl@0
   408
is modified.
sl@0
   409
sl@0
   410
May only be used to signal a thread in the same process as the callers.
sl@0
   411
sl@0
   412
@panic KERN-EXEC 46 if the thread is not in the same process as the callers
sl@0
   413
*/
sl@0
   414
EXPORT_C void RThread::RequestSignal() const
sl@0
   415
	{
sl@0
   416
	Exec::ThreadRequestSignal(iHandle);
sl@0
   417
	}
sl@0
   418
sl@0
   419
sl@0
   420
sl@0
   421
void ExitCurrentThread(TExitType aType, TInt aReason, const TDesC8* aCategory)
sl@0
   422
	{
sl@0
   423
	Exec::ThreadKill(KCurrentThreadHandle, aType, aReason, aCategory);
sl@0
   424
	}
sl@0
   425
sl@0
   426
sl@0
   427
//
sl@0
   428
#ifndef __GEN_USER_EXEC_CODE__
sl@0
   429
sl@0
   430
sl@0
   431
sl@0
   432
__EXECDECL__ void Exec::WaitForAnyRequest()
sl@0
   433
	{
sl@0
   434
	FAST_EXEC0(EFastExecWaitForAnyRequest);
sl@0
   435
	//gProcess.iThread.iRequestSemaphore.Wait();
sl@0
   436
	}
sl@0
   437
sl@0
   438
__EXECDECL__ RAllocator* Exec::Heap()
sl@0
   439
	{	
sl@0
   440
	FAST_EXEC0(EFastExecHeap);
sl@0
   441
	//return gProcess.iAllocator;
sl@0
   442
	}
sl@0
   443
sl@0
   444
__EXECDECL__ RAllocator* Exec::HeapSwitch(RAllocator*)
sl@0
   445
	{
sl@0
   446
	FAST_EXEC1(EFastExecHeapSwitch);
sl@0
   447
	}
sl@0
   448
sl@0
   449
__EXECDECL__ TTrapHandler* Exec::PushTrapFrame(TTrap* aTrap)
sl@0
   450
	{
sl@0
   451
	//Panic(ESymcExecPanicNotUsed);
sl@0
   452
	//return NULL;
sl@0
   453
	FAST_EXEC1(EFastExecPushTrapFrame);
sl@0
   454
	//ASSERT(gProcess.iThread.iTrapCount<=KTrapStackSize);
sl@0
   455
	//gProcess.iThread.iTrapStack[gProcess.iThread.iTrapCount++]=aTrap;
sl@0
   456
	//return gProcess.iThread.iHandler;
sl@0
   457
	}
sl@0
   458
sl@0
   459
__EXECDECL__ TTrap* Exec::PopTrapFrame()
sl@0
   460
	{
sl@0
   461
	//Panic(ESymcExecPanicNotUsed);
sl@0
   462
	//return NULL;
sl@0
   463
	FAST_EXEC0(EFastExecPopTrapFrame);
sl@0
   464
	//ASSERT(gProcess.iThread.iTrapCount>0);
sl@0
   465
	//return gProcess.iThread.iTrapStack[gProcess.iThread.iTrapCount--];
sl@0
   466
	}
sl@0
   467
sl@0
   468
__EXECDECL__ CActiveScheduler* Exec::ActiveScheduler()
sl@0
   469
	{
sl@0
   470
	FAST_EXEC0(EFastExecActiveScheduler);
sl@0
   471
	//return gProcess.iThread.iActiveScheduler;
sl@0
   472
	}
sl@0
   473
sl@0
   474
__EXECDECL__ void Exec::SetActiveScheduler(CActiveScheduler* aActiveScheduler)
sl@0
   475
	{
sl@0
   476
	FAST_EXEC1(EFastExecSetActiveScheduler);
sl@0
   477
	//gProcess.iThread.iActiveScheduler=aActiveScheduler;
sl@0
   478
	}
sl@0
   479
sl@0
   480
__EXECDECL__ TTimerLockSpec Exec::LockPeriod()
sl@0
   481
	{
sl@0
   482
	FAST_EXEC0(EFastExecLockPeriod);
sl@0
   483
	}
sl@0
   484
sl@0
   485
__EXECDECL__ TTrapHandler* Exec::TrapHandler()
sl@0
   486
	{
sl@0
   487
	FAST_EXEC0(EFastExecTrapHandler);
sl@0
   488
	//return gProcess.iThread.iHandler;
sl@0
   489
	}
sl@0
   490
sl@0
   491
__EXECDECL__ TTrapHandler* Exec::SetTrapHandler(TTrapHandler* aHandler)
sl@0
   492
	{	
sl@0
   493
	FAST_EXEC1(EFastExecSetTrapHandler);
sl@0
   494
	//TTrapHandler* prev=gProcess.iThread.iHandler;
sl@0
   495
	//gProcess.iThread.iHandler=aHandler;
sl@0
   496
	//return prev;
sl@0
   497
	}
sl@0
   498
sl@0
   499
__EXECDECL__ TUint32 Exec::DebugMask()
sl@0
   500
	{
sl@0
   501
	FAST_EXEC0(EFastExecDebugMask);
sl@0
   502
	}
sl@0
   503
sl@0
   504
__EXECDECL__ TUint32 Exec::DebugMaskIndex(TUint)
sl@0
   505
	{
sl@0
   506
	FAST_EXEC1(EFastExecDebugMaskIndex);
sl@0
   507
	}
sl@0
   508
sl@0
   509
__EXECDECL__ void Exec::SetDebugMask(TUint32)
sl@0
   510
	{
sl@0
   511
	FAST_EXEC1(EFastExecSetDebugMask);
sl@0
   512
	}
sl@0
   513
sl@0
   514
__EXECDECL__ TUint32 Exec::FastCounter()
sl@0
   515
	{
sl@0
   516
	FAST_EXEC0(EFastExecFastCounter);
sl@0
   517
	}
sl@0
   518
sl@0
   519
__EXECDECL__ TUint32 Exec::NTickCount()
sl@0
   520
	{
sl@0
   521
	FAST_EXEC0(EFastExecNTickCount);
sl@0
   522
	}
sl@0
   523
sl@0
   524
EXPORT_C __EXECDECL__ void UserSvr::LockRamDrive()
sl@0
   525
	{
sl@0
   526
	FAST_EXEC0(EFastExecLockRamDrive);
sl@0
   527
	}
sl@0
   528
sl@0
   529
EXPORT_C __EXECDECL__ void UserSvr::UnlockRamDrive()
sl@0
   530
	{
sl@0
   531
	FAST_EXEC0(EFastExecUnlockRamDrive);
sl@0
   532
	}
sl@0
   533
sl@0
   534
EXPORT_C __EXECDECL__ TLinAddr UserSvr::RomHeaderAddress()
sl@0
   535
	{
sl@0
   536
	FAST_EXEC0(EFastExecRomHeaderAddress);
sl@0
   537
	}
sl@0
   538
sl@0
   539
EXPORT_C __EXECDECL__ TLinAddr UserSvr::RomRootDirectoryAddress()
sl@0
   540
	{
sl@0
   541
	FAST_EXEC0(EFastExecRomRootDirectoryAddress);
sl@0
   542
	}
sl@0
   543
sl@0
   544
__EXECDECL__ void Exec::SetReentryPoint(TLinAddr)
sl@0
   545
	{
sl@0
   546
	FAST_EXEC1(EFastExecSetReentryPoint);
sl@0
   547
	}
sl@0
   548
sl@0
   549
__EXECDECL__ TUint32 Exec::KernelConfigFlags()
sl@0
   550
	{
sl@0
   551
	FAST_EXEC0(EFastExecKernelConfigFlags);
sl@0
   552
	}
sl@0
   553
sl@0
   554
__EXECDECL__ TInt Exec::UTCOffset()
sl@0
   555
	{
sl@0
   556
	FAST_EXEC0(EFastExecUTCOffset);
sl@0
   557
	}
sl@0
   558
sl@0
   559
__EXECDECL__ TInt Exec::GetGlobalUserData(TInt)
sl@0
   560
	{
sl@0
   561
	FAST_EXEC1(EFastExecGetGlobalUserData);
sl@0
   562
	}
sl@0
   563
sl@0
   564
EXPORT_C __EXECDECL__ TBool BTrace::CheckFilter(TUint32)
sl@0
   565
	{
sl@0
   566
	FAST_EXEC1(EFastExecCheckFilter);
sl@0
   567
	}
sl@0
   568
sl@0
   569
__EXECDECL__ TInt Exec::ObjectNext(TObjectType, TBuf8<KMaxFullName>&, TFindHandle&)
sl@0
   570
	{
sl@0
   571
	SLOW_EXEC3(EExecObjectNext);
sl@0
   572
	}
sl@0
   573
sl@0
   574
__EXECDECL__ TUint8* Exec::ChunkBase(TInt)
sl@0
   575
	{
sl@0
   576
	SLOW_EXEC1(EExecChunkBase);
sl@0
   577
	}
sl@0
   578
sl@0
   579
__EXECDECL__ TInt Exec::ChunkSize(TInt)
sl@0
   580
	{
sl@0
   581
	SLOW_EXEC1(EExecChunkSize);
sl@0
   582
	}
sl@0
   583
sl@0
   584
__EXECDECL__ TInt Exec::ChunkMaxSize(TInt)
sl@0
   585
	{
sl@0
   586
	SLOW_EXEC1(EExecChunkMaxSize);
sl@0
   587
	}
sl@0
   588
sl@0
   589
__EXECDECL__ TUint Exec::HandleAttributes(TInt)
sl@0
   590
	{
sl@0
   591
	SLOW_EXEC1(EExecHandleAttributes);
sl@0
   592
	}
sl@0
   593
sl@0
   594
__EXECDECL__ TUint Exec::TickCount()
sl@0
   595
	{
sl@0
   596
	SLOW_EXEC0(EExecTickCount);
sl@0
   597
	}
sl@0
   598
sl@0
   599
__EXECDECL__ void Exec::LogicalDeviceGetCaps(TInt, TDes8&)
sl@0
   600
	{
sl@0
   601
	SLOW_EXEC2(EExecLogicalDeviceGetCaps);
sl@0
   602
	}
sl@0
   603
sl@0
   604
__EXECDECL__ TBool Exec::LogicalDeviceQueryVersionSupported(TInt, const TVersion&)
sl@0
   605
	{
sl@0
   606
	SLOW_EXEC2(EExecLogicalDeviceQueryVersionSupported);
sl@0
   607
	}
sl@0
   608
sl@0
   609
__EXECDECL__ TBool Exec::LogicalDeviceIsAvailable(TInt, TInt, const TDesC8*, const TDesC8*)
sl@0
   610
	{
sl@0
   611
	SLOW_EXEC4(EExecLogicalDeviceIsAvailable);
sl@0
   612
	}
sl@0
   613
sl@0
   614
EXPORT_C __EXECDECL__ TInt E32Loader::LocaleExports(TAny*, TLibraryFunction*)
sl@0
   615
	{
sl@0
   616
	SLOW_EXEC2(EExecLocaleExports);
sl@0
   617
	}
sl@0
   618
sl@0
   619
__EXECDECL__ TInt Exec::ChannelRequest(TInt, TInt, TAny*, TAny*)
sl@0
   620
	{
sl@0
   621
	SLOW_EXEC4(EExecChannelRequest);
sl@0
   622
	}
sl@0
   623
sl@0
   624
__EXECDECL__ TUint32 Exec::MathRandom()
sl@0
   625
	{
sl@0
   626
	SLOW_EXEC0(EExecMathRandom);
sl@0
   627
	}
sl@0
   628
sl@0
   629
__EXECDECL__ void Exec::IMB_Range(TAny*, TUint)
sl@0
   630
	{
sl@0
   631
	SLOW_EXEC2(EExecIMBRange);
sl@0
   632
	}
sl@0
   633
sl@0
   634
__EXECDECL__ TInt Exec::ResetMachine(TMachineStartupType)
sl@0
   635
	{
sl@0
   636
	SLOW_EXEC1(EExecResetMachine);
sl@0
   637
	}
sl@0
   638
sl@0
   639
__EXECDECL__ TLibraryFunction Exec::LibraryLookup(TInt, TInt)
sl@0
   640
	{
sl@0
   641
	SLOW_EXEC2(EExecLibraryLookup);
sl@0
   642
	}
sl@0
   643
sl@0
   644
__EXECDECL__ void Exec::LibraryFileName(TInt, TDes8&)
sl@0
   645
	{
sl@0
   646
	SLOW_EXEC2(EExecLibraryFileName);
sl@0
   647
	}
sl@0
   648
sl@0
   649
EXPORT_C __EXECDECL__ TInt UserSvr::ExecuteInSupervisorMode(TSupervisorFunction, TAny*)
sl@0
   650
	{
sl@0
   651
	SLOW_EXEC2(EExecExecuteInSupervisorMode);
sl@0
   652
	}
sl@0
   653
sl@0
   654
__EXECDECL__ void Exec::MutexWait(TInt)
sl@0
   655
	{
sl@0
   656
	SLOW_EXEC1(EExecMutexWait);
sl@0
   657
	}
sl@0
   658
sl@0
   659
__EXECDECL__ void Exec::MutexSignal(TInt)
sl@0
   660
	{
sl@0
   661
	SLOW_EXEC1(EExecMutexSignal);
sl@0
   662
	}
sl@0
   663
sl@0
   664
__EXECDECL__ TInt Exec::ProcessId(TInt)
sl@0
   665
	{
sl@0
   666
	SLOW_EXEC1(EExecProcessId);
sl@0
   667
	}
sl@0
   668
sl@0
   669
__EXECDECL__ void Exec::DllFileName(TInt, TDes8&)
sl@0
   670
	{
sl@0
   671
	SLOW_EXEC2(EExecDllFileName);
sl@0
   672
	}
sl@0
   673
sl@0
   674
__EXECDECL__ void Exec::ProcessResume(TInt)
sl@0
   675
	{
sl@0
   676
	SLOW_EXEC1(EExecProcessResume);
sl@0
   677
	}
sl@0
   678
sl@0
   679
__EXECDECL__ void Exec::ProcessFileName(TInt, TDes8&)
sl@0
   680
	{
sl@0
   681
	SLOW_EXEC2(EExecProcessFileName);
sl@0
   682
	}
sl@0
   683
sl@0
   684
__EXECDECL__ void Exec::ProcessCommandLine(TInt, TDes8&)
sl@0
   685
	{
sl@0
   686
	SLOW_EXEC2(EExecProcessCommandLine);
sl@0
   687
	}
sl@0
   688
sl@0
   689
__EXECDECL__ TExitType Exec::ProcessExitType(TInt)
sl@0
   690
	{
sl@0
   691
	SLOW_EXEC1(EExecProcessExitType);
sl@0
   692
	}
sl@0
   693
sl@0
   694
__EXECDECL__ TInt Exec::ProcessExitReason(TInt)
sl@0
   695
	{
sl@0
   696
	SLOW_EXEC1(EExecProcessExitReason);
sl@0
   697
	}
sl@0
   698
sl@0
   699
__EXECDECL__ void Exec::ProcessExitCategory(TInt, TDes8&)
sl@0
   700
	{
sl@0
   701
	SLOW_EXEC2(EExecProcessExitCategory);
sl@0
   702
	}
sl@0
   703
sl@0
   704
__EXECDECL__ TProcessPriority Exec::ProcessPriority(TInt)
sl@0
   705
	{
sl@0
   706
	SLOW_EXEC1(EExecProcessPriority);
sl@0
   707
	}
sl@0
   708
sl@0
   709
__EXECDECL__ TInt Exec::ProcessSetPriority(TInt, TProcessPriority)
sl@0
   710
	{
sl@0
   711
	SLOW_EXEC2(EExecProcessSetPriority);
sl@0
   712
	}
sl@0
   713
sl@0
   714
__EXECDECL__ TUint Exec::ProcessFlags(TInt)
sl@0
   715
	{
sl@0
   716
	SLOW_EXEC1(EExecProcessFlags);
sl@0
   717
	}
sl@0
   718
sl@0
   719
__EXECDECL__ void Exec::ProcessSetFlags(TInt, TUint, TUint)
sl@0
   720
	{
sl@0
   721
	SLOW_EXEC3(EExecProcessSetFlags);
sl@0
   722
	}
sl@0
   723
sl@0
   724
__EXECDECL__ TInt Exec::SemaphoreWait(TInt aHandle, TInt aTimeout)
sl@0
   725
	{
sl@0
   726
	SLOW_EXEC2(EExecSemaphoreWait);
sl@0
   727
		/*
sl@0
   728
#ifdef WIN32
sl@0
   729
      DWORD dwMilliseconds=INFINITE;
sl@0
   730
      if (aTimeout!=0) //0 means infinite apparently on symbian
sl@0
   731
         {
sl@0
   732
         //Timeout is not infinite convert it from micro to milliseconds
sl@0
   733
         dwMilliseconds=aTimeout/1000;
sl@0
   734
         }
sl@0
   735
sl@0
   736
      //Issues win32 wait
sl@0
   737
      WaitForSingleObject((HANDLE)aHandle,dwMilliseconds);
sl@0
   738
#else
sl@0
   739
#error "Platform not supported"
sl@0
   740
#endif
sl@0
   741
   
sl@0
   742
      //Returned value is not even checked in RSemaphore::Wait
sl@0
   743
   return KErrNone; 
sl@0
   744
   */
sl@0
   745
	}
sl@0
   746
sl@0
   747
__EXECDECL__ void Exec::SemaphoreSignal1(TInt aHandle)
sl@0
   748
	{
sl@0
   749
/*
sl@0
   750
#ifdef WIN32
sl@0
   751
   ReleaseSemaphore((HANDLE)aHandle,1,NULL);
sl@0
   752
#else
sl@0
   753
#error "Platform not supported"
sl@0
   754
#endif
sl@0
   755
*/
sl@0
   756
	SLOW_EXEC1(EExecSemaphoreSignal1);
sl@0
   757
	}
sl@0
   758
sl@0
   759
__EXECDECL__ void Exec::SemaphoreSignalN(TInt aHandle, TInt aCount)
sl@0
   760
	{
sl@0
   761
/*
sl@0
   762
#ifdef WIN32
sl@0
   763
      ReleaseSemaphore((HANDLE)aHandle,aCount,NULL);
sl@0
   764
#else
sl@0
   765
#error "Platform not supported"
sl@0
   766
#endif
sl@0
   767
*/
sl@0
   768
	SLOW_EXEC2(EExecSemaphoreSignalN);
sl@0
   769
	}
sl@0
   770
sl@0
   771
__EXECDECL__ void Exec::ServerReceive(TInt, TRequestStatus&, TAny*)
sl@0
   772
	{
sl@0
   773
	SLOW_EXEC3(EExecServerReceive);
sl@0
   774
	}
sl@0
   775
sl@0
   776
__EXECDECL__ void Exec::ServerCancel(TInt)
sl@0
   777
	{
sl@0
   778
	SLOW_EXEC1(EExecServerCancel);
sl@0
   779
	}
sl@0
   780
sl@0
   781
__EXECDECL__ void Exec::SetSessionPtr(TInt, const TAny*)
sl@0
   782
	{
sl@0
   783
	SLOW_EXEC2(EExecSetSessionPtr);
sl@0
   784
	}
sl@0
   785
sl@0
   786
__EXECDECL__ TInt Exec::ThreadId(TInt)
sl@0
   787
	{
sl@0
   788
	SLOW_EXEC1(EExecThreadId);
sl@0
   789
	}
sl@0
   790
sl@0
   791
__EXECDECL__ TInt Exec::SessionShare(TInt&, TInt)
sl@0
   792
	{
sl@0
   793
	SLOW_EXEC2(EExecSessionShare);
sl@0
   794
	}
sl@0
   795
sl@0
   796
__EXECDECL__ void Exec::ThreadResume(TInt)
sl@0
   797
	{
sl@0
   798
	SLOW_EXEC1(EExecThreadResume);
sl@0
   799
	}
sl@0
   800
sl@0
   801
__EXECDECL__ void Exec::ThreadSuspend(TInt)
sl@0
   802
	{
sl@0
   803
	SLOW_EXEC1(EExecThreadSuspend);
sl@0
   804
	}
sl@0
   805
sl@0
   806
__EXECDECL__ TThreadPriority Exec::ThreadPriority(TInt)
sl@0
   807
	{
sl@0
   808
	SLOW_EXEC1(EExecThreadPriority);
sl@0
   809
	}
sl@0
   810
sl@0
   811
__EXECDECL__ void Exec::ThreadSetPriority(TInt, TThreadPriority)
sl@0
   812
	{
sl@0
   813
	SLOW_EXEC2(EExecThreadSetPriority);
sl@0
   814
	}
sl@0
   815
sl@0
   816
__EXECDECL__ TProcessPriority Exec::ThreadProcessPriority(TInt)
sl@0
   817
	{
sl@0
   818
	SLOW_EXEC1(EExecThreadProcessPriority);
sl@0
   819
	}
sl@0
   820
sl@0
   821
__EXECDECL__ void Exec::ThreadSetProcessPriority(TInt, TProcessPriority)
sl@0
   822
	{
sl@0
   823
	SLOW_EXEC2(EExecThreadSetProcessPriority);
sl@0
   824
	}
sl@0
   825
sl@0
   826
__EXECDECL__ TUint Exec::ThreadFlags(TInt)
sl@0
   827
	{
sl@0
   828
	SLOW_EXEC1(EExecThreadFlags);
sl@0
   829
	}
sl@0
   830
sl@0
   831
__EXECDECL__ void Exec::ThreadSetFlags(TInt, TUint, TUint)
sl@0
   832
	{
sl@0
   833
	SLOW_EXEC3(EExecThreadSetFlags);
sl@0
   834
	}
sl@0
   835
sl@0
   836
__EXECDECL__ TInt Exec::ThreadRequestCount(TInt)
sl@0
   837
	{
sl@0
   838
	SLOW_EXEC1(EExecThreadRequestCount);
sl@0
   839
	}
sl@0
   840
sl@0
   841
__EXECDECL__ TExitType Exec::ThreadExitType(TInt)
sl@0
   842
	{
sl@0
   843
	SLOW_EXEC1(EExecThreadExitType);
sl@0
   844
	}
sl@0
   845
sl@0
   846
__EXECDECL__ TInt Exec::ThreadExitReason(TInt)
sl@0
   847
	{
sl@0
   848
	SLOW_EXEC1(EExecThreadExitReason);
sl@0
   849
	}
sl@0
   850
sl@0
   851
__EXECDECL__ void Exec::ThreadExitCategory(TInt, TDes8&)
sl@0
   852
	{
sl@0
   853
	SLOW_EXEC2(EExecThreadExitCategory);
sl@0
   854
	}
sl@0
   855
sl@0
   856
__EXECDECL__ void Exec::TimerCancel(TInt)
sl@0
   857
	{
sl@0
   858
	SLOW_EXEC1(EExecTimerCancel);
sl@0
   859
	}
sl@0
   860
sl@0
   861
__EXECDECL__ void Exec::TimerAfter(TInt, TRequestStatus&, TInt)
sl@0
   862
	{
sl@0
   863
	SLOW_EXEC3(EExecTimerAfter);
sl@0
   864
	}
sl@0
   865
sl@0
   866
__EXECDECL__ void Exec::TimerAt(TInt, TRequestStatus&, TUint32, TUint32)
sl@0
   867
	{
sl@0
   868
	SLOW_EXEC4(EExecTimerAt);
sl@0
   869
	}
sl@0
   870
sl@0
   871
__EXECDECL__ void Exec::TimerLock(TInt, TRequestStatus&, TTimerLockSpec)
sl@0
   872
	{
sl@0
   873
	SLOW_EXEC3(EExecTimerLock);
sl@0
   874
	}
sl@0
   875
sl@0
   876
__EXECDECL__ TInt Exec::ChangeNotifierLogon(TInt, TRequestStatus&)
sl@0
   877
	{
sl@0
   878
	SLOW_EXEC2(EExecChangeNotifierLogon);
sl@0
   879
	}
sl@0
   880
sl@0
   881
__EXECDECL__ TInt Exec::ChangeNotifierLogoff(TInt)
sl@0
   882
	{
sl@0
   883
	SLOW_EXEC1(EExecChangeNotifierLogoff);
sl@0
   884
	}
sl@0
   885
sl@0
   886
__EXECDECL__ void Exec::RequestSignal(TInt)
sl@0
   887
	{
sl@0
   888
	SLOW_EXEC1(EExecRequestSignal);
sl@0
   889
	}
sl@0
   890
sl@0
   891
__EXECDECL__ void Exec::HandleName(TInt, TDes8&)
sl@0
   892
	{
sl@0
   893
	SLOW_EXEC2(EExecHandleName);
sl@0
   894
	}
sl@0
   895
sl@0
   896
__EXECDECL__ void Exec::HandleFullName(TInt, TDes8&)
sl@0
   897
	{
sl@0
   898
	SLOW_EXEC2(EExecHandleFullName);
sl@0
   899
	}
sl@0
   900
sl@0
   901
__EXECDECL__ void Exec::HandleInfo(TInt, THandleInfo*)
sl@0
   902
	{
sl@0
   903
	SLOW_EXEC2(EExecHandleInfo);
sl@0
   904
	}
sl@0
   905
sl@0
   906
__EXECDECL__ void Exec::HandleCount(TInt, TInt&, TInt&)
sl@0
   907
	{
sl@0
   908
	SLOW_EXEC3(EExecHandleCount);
sl@0
   909
	}
sl@0
   910
sl@0
   911
__EXECDECL__ void Exec::After(TInt, TRequestStatus&)
sl@0
   912
	{
sl@0
   913
	SLOW_EXEC2(EExecAfter);
sl@0
   914
	}
sl@0
   915
sl@0
   916
__EXECDECL__ void Exec::At(const EXEC_TIME&, TRequestStatus&)
sl@0
   917
	{
sl@0
   918
	SLOW_EXEC2(EExecAt);
sl@0
   919
	}
sl@0
   920
sl@0
   921
__EXECDECL__ void Exec::MessageComplete(TInt, TInt)
sl@0
   922
	{
sl@0
   923
	SLOW_EXEC2(EExecMessageComplete);
sl@0
   924
	}
sl@0
   925
sl@0
   926
__EXECDECL__ void Exec::MessageCompleteWithHandle(TInt, TInt)
sl@0
   927
	{
sl@0
   928
	SLOW_EXEC2(EExecMessageCompleteWithHandle);
sl@0
   929
	}
sl@0
   930
sl@0
   931
__EXECDECL__ void Exec::TransferSession(TInt, TInt)
sl@0
   932
	{
sl@0
   933
	SLOW_EXEC2(EExecTransferSession);
sl@0
   934
	}
sl@0
   935
sl@0
   936
__EXECDECL__ TInt Exec::TimeNow(EXEC_TIME&, TInt&)
sl@0
   937
	{
sl@0
   938
	SLOW_EXEC2(EExecTimeNow);
sl@0
   939
	}
sl@0
   940
sl@0
   941
__EXECDECL__ TInt Exec::TimeNowSecure(EXEC_TIME&, TInt&)
sl@0
   942
	{
sl@0
   943
	SLOW_EXEC2(EExecTimeNowSecure);
sl@0
   944
	}
sl@0
   945
sl@0
   946
__EXECDECL__ TInt Exec::SetUTCTimeAndOffset(const EXEC_TIME&, TInt, TUint, TUint)
sl@0
   947
	{
sl@0
   948
	SLOW_EXEC4(EExecSetUTCTimeAndOffset);
sl@0
   949
	}
sl@0
   950
sl@0
   951
__EXECDECL__ TInt Exec::SetMachineConfiguration(const TDesC8&)
sl@0
   952
	{
sl@0
   953
	SLOW_EXEC1(EExecSetMachineConfiguration);
sl@0
   954
	}
sl@0
   955
sl@0
   956
__EXECDECL__ void Exec::CaptureEventHook()
sl@0
   957
	{
sl@0
   958
	SLOW_EXEC0(EExecCaptureEventHook);
sl@0
   959
	}
sl@0
   960
sl@0
   961
__EXECDECL__ void Exec::ReleaseEventHook()
sl@0
   962
	{
sl@0
   963
	SLOW_EXEC0(EExecReleaseEventHook);
sl@0
   964
	}
sl@0
   965
sl@0
   966
__EXECDECL__ void Exec::RequestEvent(TRawEventBuf&, TRequestStatus&)
sl@0
   967
	{
sl@0
   968
	SLOW_EXEC2(EExecRequestEvent);
sl@0
   969
	}
sl@0
   970
sl@0
   971
__EXECDECL__ void Exec::RequestEventCancel()
sl@0
   972
	{
sl@0
   973
	SLOW_EXEC0(EExecRequestEventCancel);
sl@0
   974
	}
sl@0
   975
sl@0
   976
__EXECDECL__ TInt Exec::AddEvent(const TRawEvent&)
sl@0
   977
	{
sl@0
   978
	SLOW_EXEC1(EExecAddEvent);
sl@0
   979
	}
sl@0
   980
sl@0
   981
__EXECDECL__ TAny* Exec::DllTls(TInt aHandle, TInt aDllUid)
sl@0
   982
	{
sl@0
   983
	SLOW_EXEC2(EExecDllTls);
sl@0
   984
	/*
sl@0
   985
	if (aHandle==-1 && aDllUid==-1)
sl@0
   986
		{
sl@0
   987
		//No TGlobalDestructorFunc ATM
sl@0
   988
		return NULL;
sl@0
   989
		}
sl@0
   990
	else
sl@0
   991
		{
sl@0
   992
		//No sure what to do here
sl@0
   993
		__BREAKPOINT();
sl@0
   994
		}
sl@0
   995
	*/
sl@0
   996
	}
sl@0
   997
sl@0
   998
__EXECDECL__ TInt Exec::HalFunction(TInt, TInt, TAny*, TAny*)
sl@0
   999
	{
sl@0
  1000
	SLOW_EXEC4(EExecHalFunction);
sl@0
  1001
	}
sl@0
  1002
sl@0
  1003
__EXECDECL__ void Exec::WsRegisterThread()
sl@0
  1004
	{
sl@0
  1005
	SLOW_EXEC0(EExecWsRegisterThread);
sl@0
  1006
	}
sl@0
  1007
sl@0
  1008
__EXECDECL__ void Exec::FsRegisterThread()
sl@0
  1009
	{
sl@0
  1010
	SLOW_EXEC0(EExecFsRegisterThread);
sl@0
  1011
	}
sl@0
  1012
sl@0
  1013
__EXECDECL__ TInt Exec::ProcessCommandLineLength(TInt)
sl@0
  1014
	{
sl@0
  1015
	SLOW_EXEC1(EExecProcessCommandLineLength);
sl@0
  1016
	}
sl@0
  1017
sl@0
  1018
__EXECDECL__ void Exec::TimerInactivity(TInt, TRequestStatus&, TInt)
sl@0
  1019
	{
sl@0
  1020
	SLOW_EXEC3(EExecTimerInactivity);
sl@0
  1021
	}
sl@0
  1022
sl@0
  1023
__EXECDECL__ TInt Exec::UserInactivityTime()
sl@0
  1024
	{
sl@0
  1025
	SLOW_EXEC0(EExecUserInactivityTime);
sl@0
  1026
	}
sl@0
  1027
sl@0
  1028
__EXECDECL__ void Exec::ResetInactivityTime()
sl@0
  1029
	{
sl@0
  1030
	SLOW_EXEC0(EExecResetInactivityTime);
sl@0
  1031
	}
sl@0
  1032
sl@0
  1033
__EXECDECL__ void Exec::DebugPrint(TAny*, TInt)
sl@0
  1034
	{
sl@0
  1035
	SLOW_EXEC2(EExecDebugPrint);
sl@0
  1036
	}
sl@0
  1037
sl@0
  1038
__EXECDECL__ TInt Exec::BreakPoint()
sl@0
  1039
	{
sl@0
  1040
	SLOW_EXEC0(EExecBreakPoint);
sl@0
  1041
	}
sl@0
  1042
sl@0
  1043
__EXECDECL__ TInt Exec::ProfileStart(TInt)
sl@0
  1044
	{
sl@0
  1045
	SLOW_EXEC1(EExecProfileStart);
sl@0
  1046
	}
sl@0
  1047
sl@0
  1048
__EXECDECL__ TInt Exec::ProfileEnd(TInt)
sl@0
  1049
	{
sl@0
  1050
	SLOW_EXEC1(EExecProfileEnd);
sl@0
  1051
	}
sl@0
  1052
sl@0
  1053
__EXECDECL__ TExceptionHandler Exec::ExceptionHandler(TInt)
sl@0
  1054
	{
sl@0
  1055
	SLOW_EXEC1(EExecExceptionHandler);
sl@0
  1056
	}
sl@0
  1057
sl@0
  1058
__EXECDECL__ TInt Exec::SetExceptionHandler(TInt, TExceptionHandler, TUint32)
sl@0
  1059
	{
sl@0
  1060
	SLOW_EXEC3(EExecSetExceptionHandler);
sl@0
  1061
	}
sl@0
  1062
sl@0
  1063
__EXECDECL__ void Exec::ModifyExceptionMask(TInt, TUint32, TUint32)
sl@0
  1064
	{
sl@0
  1065
	SLOW_EXEC3(EExecModifyExceptionMask);
sl@0
  1066
	}
sl@0
  1067
sl@0
  1068
__EXECDECL__ TInt Exec::RaiseException(TInt, TExcType)
sl@0
  1069
	{
sl@0
  1070
	SLOW_EXEC2(EExecRaiseException);
sl@0
  1071
	}
sl@0
  1072
sl@0
  1073
__EXECDECL__ TInt Exec::IsExceptionHandled(TInt, TExcType, TBool)
sl@0
  1074
	{
sl@0
  1075
	SLOW_EXEC3(EExecIsExceptionHandled);
sl@0
  1076
	}
sl@0
  1077
sl@0
  1078
__EXECDECL__ TInt Exec::ProcessGetMemoryInfo(TInt, TModuleMemoryInfo&)
sl@0
  1079
	{
sl@0
  1080
	SLOW_EXEC2(EExecProcessGetMemoryInfo);
sl@0
  1081
	}
sl@0
  1082
sl@0
  1083
__EXECDECL__ TInt Exec::LibraryGetMemoryInfo(TInt, TModuleMemoryInfo&)
sl@0
  1084
	{
sl@0
  1085
	SLOW_EXEC2(EExecLibraryGetMemoryInfo);
sl@0
  1086
	}
sl@0
  1087
sl@0
  1088
__EXECDECL__ TInt Exec::MachineConfiguration(TDes8&, TInt&)
sl@0
  1089
	{
sl@0
  1090
	SLOW_EXEC2(EExecMachineConfiguration);
sl@0
  1091
	}
sl@0
  1092
sl@0
  1093
__EXECDECL__ TInt Exec::SetMemoryThresholds(TInt, TInt)
sl@0
  1094
	{
sl@0
  1095
	SLOW_EXEC2(EExecSetMemoryThresholds);
sl@0
  1096
	}
sl@0
  1097
sl@0
  1098
__EXECDECL__ void Exec::LibraryType(TInt, TUidType&)
sl@0
  1099
	{
sl@0
  1100
	SLOW_EXEC2(EExecLibraryType);
sl@0
  1101
	}
sl@0
  1102
sl@0
  1103
__EXECDECL__ void Exec::ProcessType(TInt, TUidType&)
sl@0
  1104
	{
sl@0
  1105
	SLOW_EXEC2(EExecProcessType);
sl@0
  1106
	}
sl@0
  1107
sl@0
  1108
__EXECDECL__ TInt Exec::ChunkBottom(TInt)
sl@0
  1109
	{
sl@0
  1110
	SLOW_EXEC1(EExecChunkBottom);
sl@0
  1111
	}
sl@0
  1112
sl@0
  1113
__EXECDECL__ TInt Exec::ChunkTop(TInt)
sl@0
  1114
	{
sl@0
  1115
	SLOW_EXEC1(EExecChunkTop);
sl@0
  1116
	}
sl@0
  1117
sl@0
  1118
__EXECDECL__ void Exec::ThreadContext(TInt, TDes8&)
sl@0
  1119
	{
sl@0
  1120
	SLOW_EXEC2(EExecThreadContext);
sl@0
  1121
	}
sl@0
  1122
sl@0
  1123
__EXECDECL__ TInt Exec::ThreadCreate(const TDesC8&, TOwnerType, SThreadCreateInfo8&)
sl@0
  1124
	{
sl@0
  1125
	SLOW_EXEC3(EExecThreadCreate);
sl@0
  1126
	}
sl@0
  1127
sl@0
  1128
__EXECDECL__ TInt Exec::FindHandleOpen(TOwnerType, const TFindHandle&)
sl@0
  1129
	{
sl@0
  1130
	SLOW_EXEC2(EExecFindHandleOpen);
sl@0
  1131
	}
sl@0
  1132
sl@0
  1133
__EXECDECL__ TInt Exec::HandleClose(TInt)
sl@0
  1134
	{
sl@0
  1135
	SLOW_EXEC1(EExecHandleClose);
sl@0
  1136
	}
sl@0
  1137
sl@0
  1138
__EXECDECL__ TInt Exec::ChunkCreate(TOwnerType, const TDesC8*, TChunkCreate&)
sl@0
  1139
	{
sl@0
  1140
	SLOW_EXEC3(EExecChunkCreate);
sl@0
  1141
	}
sl@0
  1142
sl@0
  1143
__EXECDECL__ TInt Exec::ChunkAdjust(TInt, TInt, TInt, TInt)
sl@0
  1144
	{
sl@0
  1145
	SLOW_EXEC4(EExecChunkAdjust);
sl@0
  1146
	}
sl@0
  1147
sl@0
  1148
__EXECDECL__ TInt Exec::OpenObject(TObjectType, const TDesC8&, TOwnerType)
sl@0
  1149
	{
sl@0
  1150
	SLOW_EXEC3(EExecOpenObject);
sl@0
  1151
	}
sl@0
  1152
sl@0
  1153
__EXECDECL__ TInt Exec::HandleDuplicate(TInt, TOwnerType, TInt&)
sl@0
  1154
	{
sl@0
  1155
	SLOW_EXEC3(EExecHandleDuplicate);
sl@0
  1156
	}
sl@0
  1157
sl@0
  1158
__EXECDECL__ TInt Exec::MutexCreate(const TDesC8*, TOwnerType)
sl@0
  1159
	{
sl@0
  1160
	SLOW_EXEC2(EExecMutexCreate);
sl@0
  1161
	}
sl@0
  1162
sl@0
  1163
__EXECDECL__ TInt Exec::SemaphoreCreate(const TDesC8* aName, TInt aCount, TOwnerType aType)
sl@0
  1164
	{
sl@0
  1165
	//__asm lea	edx, [esp + 0x4]
sl@0
  1166
	//__asm mov	ecx, (EExecSemaphoreCreate)	
sl@0
  1167
	//__asm jmp  [TheDispatcher]
sl@0
  1168
sl@0
  1169
	SLOW_EXEC3(EExecSemaphoreCreate);
sl@0
  1170
sl@0
  1171
	/*
sl@0
  1172
#ifdef _WINDOWS
sl@0
  1173
	HANDLE semaphore = CreateSemaphore( 
sl@0
  1174
		NULL,								// default security attributes
sl@0
  1175
		aCount,
sl@0
  1176
		KMaxTInt,
sl@0
  1177
		//TODO: use the name
sl@0
  1178
		NULL);								// unnamed mutex
sl@0
  1179
sl@0
  1180
	if (semaphore)
sl@0
  1181
		{
sl@0
  1182
		//success
sl@0
  1183
		return (TInt)semaphore;
sl@0
  1184
		}
sl@0
  1185
sl@0
  1186
	//failure
sl@0
  1187
	return NULL;
sl@0
  1188
#else
sl@0
  1189
	//TODO: pthread implementation
sl@0
  1190
	Panic(ESymcExecPanicNotSupported);
sl@0
  1191
#endif
sl@0
  1192
	*/
sl@0
  1193
	}
sl@0
  1194
sl@0
  1195
__EXECDECL__ TInt Exec::ThreadOpenById(TUint, TOwnerType)
sl@0
  1196
	{
sl@0
  1197
	SLOW_EXEC2(EExecThreadOpenById);
sl@0
  1198
	}
sl@0
  1199
sl@0
  1200
__EXECDECL__ TInt Exec::ProcessOpenById(TUint, TOwnerType)
sl@0
  1201
	{
sl@0
  1202
	SLOW_EXEC2(EExecProcessOpenById);
sl@0
  1203
	}
sl@0
  1204
sl@0
  1205
__EXECDECL__ void Exec::ThreadKill(TInt aThreadHandle, TExitType aType, TInt aReason, const TDesC8* aCategory)
sl@0
  1206
	{
sl@0
  1207
	SLOW_EXEC4(EExecThreadKill);
sl@0
  1208
/*
sl@0
  1209
	if (aThreadHandle!=KCurrentThreadHandle)
sl@0
  1210
		{
sl@0
  1211
		//Not sure how to do that yet
sl@0
  1212
		__BREAKPOINT();
sl@0
  1213
		return;
sl@0
  1214
		}
sl@0
  1215
sl@0
  1216
	if (aType==EExitPanic)
sl@0
  1217
		{
sl@0
  1218
		//Display message
sl@0
  1219
#ifdef _WINDOWS
sl@0
  1220
		TBuf8<256> buf;
sl@0
  1221
		buf.Copy(*aCategory);	
sl@0
  1222
		char errstr[256]; sprintf(errstr, "Category: %s\nReason: %d",buf.PtrZ(),aReason);
sl@0
  1223
		MessageBoxA(NULL,errstr, "PANIC", MB_OK | MB_ICONERROR);	
sl@0
  1224
#endif
sl@0
  1225
		__BREAKPOINT();
sl@0
  1226
		}
sl@0
  1227
	
sl@0
  1228
	exit(aType);
sl@0
  1229
*/
sl@0
  1230
	}
sl@0
  1231
sl@0
  1232
__EXECDECL__ void Exec::ThreadLogon(TInt, TRequestStatus*, TBool)
sl@0
  1233
	{
sl@0
  1234
	SLOW_EXEC3(EExecThreadLogon);
sl@0
  1235
	}
sl@0
  1236
sl@0
  1237
__EXECDECL__ TInt Exec::ThreadLogonCancel(TInt, TRequestStatus*, TBool)
sl@0
  1238
	{
sl@0
  1239
	SLOW_EXEC3(EExecThreadLogonCancel);
sl@0
  1240
	}
sl@0
  1241
sl@0
  1242
__EXECDECL__ TInt Exec::DllSetTls(TInt, TInt, TAny*)
sl@0
  1243
	{
sl@0
  1244
	SLOW_EXEC3(EExecDllSetTls);
sl@0
  1245
	}
sl@0
  1246
sl@0
  1247
__EXECDECL__ void Exec::DllFreeTls(TInt)
sl@0
  1248
	{
sl@0
  1249
	SLOW_EXEC1(EExecDllFreeTls);
sl@0
  1250
	}
sl@0
  1251
sl@0
  1252
__EXECDECL__ TInt Exec::ThreadRename(TInt, const TDesC8&)
sl@0
  1253
	{
sl@0
  1254
	SLOW_EXEC2(EExecThreadRename);
sl@0
  1255
	}
sl@0
  1256
sl@0
  1257
__EXECDECL__ TInt Exec::ProcessRename(TInt, const TDesC8&)
sl@0
  1258
	{
sl@0
  1259
	SLOW_EXEC2(EExecProcessRename);
sl@0
  1260
	}
sl@0
  1261
sl@0
  1262
__EXECDECL__ void Exec::ProcessKill(TInt, TExitType, TInt, const TDesC8*)
sl@0
  1263
	{
sl@0
  1264
	SLOW_EXEC4(EExecProcessKill);
sl@0
  1265
	}
sl@0
  1266
sl@0
  1267
__EXECDECL__ void Exec::ProcessLogon(TInt, TRequestStatus*, TBool)
sl@0
  1268
	{
sl@0
  1269
	SLOW_EXEC3(EExecProcessLogon);
sl@0
  1270
	}
sl@0
  1271
sl@0
  1272
__EXECDECL__ TInt Exec::ProcessLogonCancel(TInt, TRequestStatus*, TBool)
sl@0
  1273
	{
sl@0
  1274
	SLOW_EXEC3(EExecProcessLogonCancel);
sl@0
  1275
	}
sl@0
  1276
sl@0
  1277
__EXECDECL__ TInt Exec::ThreadProcess(TInt)
sl@0
  1278
	{
sl@0
  1279
	SLOW_EXEC1(EExecThreadProcess);
sl@0
  1280
	}
sl@0
  1281
sl@0
  1282
__EXECDECL__ TInt Exec::ServerCreate(const TDesC8*, TInt)
sl@0
  1283
	{
sl@0
  1284
	SLOW_EXEC2(EExecServerCreate);
sl@0
  1285
	}
sl@0
  1286
sl@0
  1287
__EXECDECL__ TInt Exec::ServerCreateWithOptions(const TDesC8*, TInt, TInt, TInt)
sl@0
  1288
	{
sl@0
  1289
	SLOW_EXEC4(EExecServerCreateWithOptions);
sl@0
  1290
	}
sl@0
  1291
sl@0
  1292
__EXECDECL__ TInt Exec::SessionCreate(const TDesC8&, TInt, const TSecurityPolicy*, TInt)
sl@0
  1293
	{
sl@0
  1294
	SLOW_EXEC4(EExecSessionCreate);
sl@0
  1295
	}
sl@0
  1296
sl@0
  1297
__EXECDECL__ TInt Exec::SessionCreateFromHandle(TInt, TInt, const TSecurityPolicy*, TInt)
sl@0
  1298
	{
sl@0
  1299
	SLOW_EXEC4(EExecSessionCreateFromHandle);
sl@0
  1300
	}
sl@0
  1301
sl@0
  1302
EXPORT_C __EXECDECL__ TInt E32Loader::DeviceLoad(TAny*, TInt)
sl@0
  1303
	{
sl@0
  1304
	SLOW_EXEC2(EExecDeviceLoad);
sl@0
  1305
	}
sl@0
  1306
sl@0
  1307
__EXECDECL__ TInt Exec::DeviceFree(const TDesC8&, TInt)
sl@0
  1308
	{
sl@0
  1309
	SLOW_EXEC2(EExecDeviceFree);
sl@0
  1310
	}
sl@0
  1311
sl@0
  1312
__EXECDECL__ TInt Exec::ChannelCreate(const TDesC8&, TChannelCreateInfo8&, TInt)
sl@0
  1313
	{
sl@0
  1314
	SLOW_EXEC3(EExecChannelCreate);
sl@0
  1315
	}
sl@0
  1316
sl@0
  1317
__EXECDECL__ TInt Exec::TimerCreate()
sl@0
  1318
	{
sl@0
  1319
	SLOW_EXEC0(EExecTimerCreate);
sl@0
  1320
	}
sl@0
  1321
sl@0
  1322
__EXECDECL__ void Exec::TimerHighRes(TInt, TRequestStatus&, TInt)
sl@0
  1323
	{
sl@0
  1324
	SLOW_EXEC3(EExecTimerHighRes);
sl@0
  1325
	}
sl@0
  1326
sl@0
  1327
__EXECDECL__ void Exec::AfterHighRes(TInt, TRequestStatus&)
sl@0
  1328
	{
sl@0
  1329
	SLOW_EXEC2(EExecAfterHighRes);
sl@0
  1330
	}
sl@0
  1331
sl@0
  1332
__EXECDECL__ TInt Exec::ChangeNotifierCreate(TOwnerType)
sl@0
  1333
	{
sl@0
  1334
	SLOW_EXEC1(EExecChangeNotifierCreate);
sl@0
  1335
	}
sl@0
  1336
sl@0
  1337
__EXECDECL__ TInt Exec::UndertakerCreate(TOwnerType)
sl@0
  1338
	{
sl@0
  1339
	SLOW_EXEC1(EExecUndertakerCreate);
sl@0
  1340
	}
sl@0
  1341
sl@0
  1342
__EXECDECL__ TInt Exec::UndertakerLogon(TInt, TRequestStatus&, TInt&)
sl@0
  1343
	{
sl@0
  1344
	SLOW_EXEC3(EExecUndertakerLogon);
sl@0
  1345
	}
sl@0
  1346
sl@0
  1347
__EXECDECL__ TInt Exec::UndertakerLogonCancel(TInt)
sl@0
  1348
	{
sl@0
  1349
	SLOW_EXEC1(EExecUndertakerLogonCancel);
sl@0
  1350
	}
sl@0
  1351
sl@0
  1352
__EXECDECL__ void Exec::KernelHeapDebug(TInt, TInt, TAny*)
sl@0
  1353
	{
sl@0
  1354
	SLOW_EXEC3(EExecKernelHeapDebug);
sl@0
  1355
	}
sl@0
  1356
sl@0
  1357
__EXECDECL__ TInt Exec::ThreadGetCpuTime(TInt, EXEC_INT64&)
sl@0
  1358
	{
sl@0
  1359
	SLOW_EXEC2(EExecThreadGetCpuTime);
sl@0
  1360
	}
sl@0
  1361
sl@0
  1362
EXPORT_C __EXECDECL__ TInt E32Loader::CodeSegCreate(TCodeSegCreateInfo&)
sl@0
  1363
	{
sl@0
  1364
	SLOW_EXEC1(EExecCodeSegCreate);
sl@0
  1365
	}
sl@0
  1366
sl@0
  1367
EXPORT_C __EXECDECL__ TInt E32Loader::CodeSegLoaded(TCodeSegCreateInfo&)
sl@0
  1368
	{
sl@0
  1369
	SLOW_EXEC1(EExecCodeSegLoaded);
sl@0
  1370
	}
sl@0
  1371
sl@0
  1372
EXPORT_C __EXECDECL__ TInt E32Loader::LibraryCreate(TLibraryCreateInfo&)
sl@0
  1373
	{
sl@0
  1374
	SLOW_EXEC1(EExecLibraryCreate);
sl@0
  1375
	}
sl@0
  1376
sl@0
  1377
EXPORT_C __EXECDECL__ TInt E32Loader::CodeSegOpen(TAny*, TInt)
sl@0
  1378
	{
sl@0
  1379
	SLOW_EXEC2(EExecCodeSegOpen);
sl@0
  1380
	}
sl@0
  1381
sl@0
  1382
EXPORT_C __EXECDECL__ void E32Loader::CodeSegClose(TAny*)
sl@0
  1383
	{
sl@0
  1384
	SLOW_EXEC1(EExecCodeSegClose);
sl@0
  1385
	}
sl@0
  1386
sl@0
  1387
EXPORT_C __EXECDECL__ void E32Loader::CodeSegNext(TAny*&, const TFindCodeSeg&)
sl@0
  1388
	{
sl@0
  1389
	SLOW_EXEC2(EExecCodeSegNext);
sl@0
  1390
	}
sl@0
  1391
sl@0
  1392
EXPORT_C __EXECDECL__ void E32Loader::CodeSegInfo(TAny*, TCodeSegCreateInfo&)
sl@0
  1393
	{
sl@0
  1394
	SLOW_EXEC2(EExecCodeSegInfo);
sl@0
  1395
	}
sl@0
  1396
sl@0
  1397
EXPORT_C __EXECDECL__ TInt E32Loader::CodeSegAddDependency(TAny*, TAny*)
sl@0
  1398
	{
sl@0
  1399
	SLOW_EXEC2(EExecCodeSegAddDependency);
sl@0
  1400
	}
sl@0
  1401
sl@0
  1402
EXPORT_C __EXECDECL__ void E32Loader::CodeSegDeferDeletes()
sl@0
  1403
	{
sl@0
  1404
	SLOW_EXEC0(EExecCodeSegDeferDeletes);
sl@0
  1405
	}
sl@0
  1406
sl@0
  1407
EXPORT_C __EXECDECL__ void E32Loader::CodeSegEndDeferDeletes()
sl@0
  1408
	{
sl@0
  1409
	SLOW_EXEC0(EExecCodeSegEndDeferDeletes);
sl@0
  1410
	}
sl@0
  1411
sl@0
  1412
EXPORT_C __EXECDECL__ TInt E32Loader::ProcessCreate(TProcessCreateInfo&, const TDesC8*)
sl@0
  1413
	{
sl@0
  1414
	SLOW_EXEC2(EExecProcessCreate);
sl@0
  1415
	}
sl@0
  1416
sl@0
  1417
EXPORT_C __EXECDECL__ TInt E32Loader::ProcessLoaded(TProcessCreateInfo&)
sl@0
  1418
	{
sl@0
  1419
	SLOW_EXEC1(EExecProcessLoaded);
sl@0
  1420
	}
sl@0
  1421
sl@0
  1422
EXPORT_C __EXECDECL__ TInt E32Loader::CheckClientState(TInt)
sl@0
  1423
	{
sl@0
  1424
	SLOW_EXEC1(EExecCheckLoaderClientState);
sl@0
  1425
	}
sl@0
  1426
sl@0
  1427
EXPORT_C __EXECDECL__ TAny* E32Loader::ThreadProcessCodeSeg(TInt)
sl@0
  1428
	{
sl@0
  1429
	SLOW_EXEC1(EExecThreadProcessCodeSeg);
sl@0
  1430
	}
sl@0
  1431
sl@0
  1432
EXPORT_C __EXECDECL__ void E32Loader::ReadExportDir(TAny*, TLinAddr*)
sl@0
  1433
	{
sl@0
  1434
	SLOW_EXEC2(EExecCodeSegReadExportDir);
sl@0
  1435
	}
sl@0
  1436
sl@0
  1437
__EXECDECL__ TInt E32Loader::WaitDllLock()
sl@0
  1438
	{
sl@0
  1439
	SLOW_EXEC0(EExecWaitDllLock);
sl@0
  1440
	}
sl@0
  1441
sl@0
  1442
__EXECDECL__ TInt E32Loader::ReleaseDllLock()
sl@0
  1443
	{
sl@0
  1444
	SLOW_EXEC0(EExecReleaseDllLock);
sl@0
  1445
	}
sl@0
  1446
sl@0
  1447
__EXECDECL__ TInt E32Loader::LibraryAttach(TInt, TInt&, TLinAddr*)
sl@0
  1448
	{
sl@0
  1449
	SLOW_EXEC3(EExecLibraryAttach);
sl@0
  1450
	}
sl@0
  1451
sl@0
  1452
__EXECDECL__ TInt E32Loader::LibraryAttached(TInt)
sl@0
  1453
	{
sl@0
  1454
	SLOW_EXEC1(EExecLibraryAttached);
sl@0
  1455
	}
sl@0
  1456
sl@0
  1457
__EXECDECL__ TInt E32Loader::StaticCallList(TInt& /*aEntryPointCount*/, TLinAddr* /*aUnused*/)
sl@0
  1458
	{
sl@0
  1459
	SLOW_EXEC2(EExecStaticCallList);
sl@0
  1460
	//SL: We hijack this function for initializing our process see User::InitProcess
sl@0
  1461
	//aEntryPointCount=0; //Tell the caller we don't have any DLL entry point
sl@0
  1462
	//gProcess.CreateHeap();
sl@0
  1463
	//return KErrNone;
sl@0
  1464
	}
sl@0
  1465
sl@0
  1466
__EXECDECL__ TInt E32Loader::LibraryDetach(TInt&, TLinAddr*)
sl@0
  1467
	{
sl@0
  1468
	SLOW_EXEC2(EExecLibraryDetach);
sl@0
  1469
	}
sl@0
  1470
sl@0
  1471
__EXECDECL__ TInt E32Loader::LibraryDetached()
sl@0
  1472
	{
sl@0
  1473
	SLOW_EXEC0(EExecLibraryDetached);
sl@0
  1474
	}
sl@0
  1475
sl@0
  1476
__EXECDECL__ TInt Exec::LastThreadHandle()
sl@0
  1477
	{
sl@0
  1478
	SLOW_EXEC0(EExecLastThreadHandle);
sl@0
  1479
	//Not sure what to do with that returning 0 seams appropriate for now
sl@0
  1480
	//return 0;
sl@0
  1481
	}
sl@0
  1482
sl@0
  1483
__EXECDECL__ void Exec::ThreadRendezvous(TInt)
sl@0
  1484
	{
sl@0
  1485
	SLOW_EXEC1(EExecThreadRendezvous);
sl@0
  1486
	}
sl@0
  1487
sl@0
  1488
__EXECDECL__ void Exec::ProcessRendezvous(TInt)
sl@0
  1489
	{
sl@0
  1490
	SLOW_EXEC1(EExecProcessRendezvous);
sl@0
  1491
	}
sl@0
  1492
sl@0
  1493
__EXECDECL__ TInt Exec::MessageGetDesLength(TInt, TInt)
sl@0
  1494
	{
sl@0
  1495
	SLOW_EXEC2(EExecMessageGetDesLength);
sl@0
  1496
	}
sl@0
  1497
sl@0
  1498
__EXECDECL__ TInt Exec::MessageGetDesMaxLength(TInt, TInt)
sl@0
  1499
	{
sl@0
  1500
	SLOW_EXEC2(EExecMessageGetDesMaxLength);
sl@0
  1501
	}
sl@0
  1502
sl@0
  1503
__EXECDECL__ TInt Exec::MessageClient(TInt, TOwnerType)
sl@0
  1504
	{
sl@0
  1505
	SLOW_EXEC2(EExecMessageClient);
sl@0
  1506
	}
sl@0
  1507
sl@0
  1508
__EXECDECL__ TInt Exec::MessageSetProcessPriority(TInt, TProcessPriority)
sl@0
  1509
	{
sl@0
  1510
	SLOW_EXEC2(EExecMessageSetProcessPriority);
sl@0
  1511
	}
sl@0
  1512
sl@0
  1513
__EXECDECL__ void Exec::MessageConstructFromPtr(TInt, TAny*)
sl@0
  1514
	{
sl@0
  1515
	SLOW_EXEC2(EExecMessageConstructFromPtr);
sl@0
  1516
	}
sl@0
  1517
sl@0
  1518
__EXECDECL__ void Exec::MessageKill(TInt, TExitType, TInt, const TDesC8*)
sl@0
  1519
	{
sl@0
  1520
	SLOW_EXEC4(EExecMessageKill);
sl@0
  1521
	}
sl@0
  1522
sl@0
  1523
__EXECDECL__ TInt Exec::MessageOpenObject(TInt, TObjectType, TInt, TOwnerType)
sl@0
  1524
	{
sl@0
  1525
	SLOW_EXEC4(EExecMessageOpenObject);
sl@0
  1526
	}
sl@0
  1527
sl@0
  1528
__EXECDECL__ void Exec::ProcessSecurityInfo(TInt, SSecurityInfo&)
sl@0
  1529
	{
sl@0
  1530
	SLOW_EXEC2(EExecProcessSecurityInfo);
sl@0
  1531
	}
sl@0
  1532
sl@0
  1533
__EXECDECL__ void Exec::ThreadSecurityInfo(TInt, SSecurityInfo&)
sl@0
  1534
	{
sl@0
  1535
	SLOW_EXEC2(EExecThreadSecurityInfo);
sl@0
  1536
	}
sl@0
  1537
sl@0
  1538
__EXECDECL__ void Exec::MessageSecurityInfo(TInt, SSecurityInfo&)
sl@0
  1539
	{
sl@0
  1540
	SLOW_EXEC2(EExecMessageSecurityInfo);
sl@0
  1541
	}
sl@0
  1542
sl@0
  1543
__EXECDECL__ void Exec::CreatorSecurityInfo(SSecurityInfo&)
sl@0
  1544
	{
sl@0
  1545
	SLOW_EXEC1(EExecCreatorSecurityInfo);
sl@0
  1546
	}
sl@0
  1547
sl@0
  1548
__EXECDECL__ void Exec::DisabledCapabilities(SCapabilitySet&)
sl@0
  1549
	{
sl@0
  1550
	SLOW_EXEC1(EExecDisabledCapabilities);
sl@0
  1551
	}
sl@0
  1552
sl@0
  1553
__EXECDECL__ TInt Exec::ChunkSetRestrictions(TInt, TUint)
sl@0
  1554
	{
sl@0
  1555
	SLOW_EXEC2(EExecChunkSetRestrictions);
sl@0
  1556
	}
sl@0
  1557
sl@0
  1558
__EXECDECL__ TInt Exec::MsgQueueCreate(const TDesC8*, TInt, TInt, TOwnerType)
sl@0
  1559
	{
sl@0
  1560
	SLOW_EXEC4(EExecMsgQueueCreate);
sl@0
  1561
	}
sl@0
  1562
sl@0
  1563
__EXECDECL__ TInt Exec::MsgQueueSend(TInt, const TAny*, TInt)
sl@0
  1564
	{
sl@0
  1565
	SLOW_EXEC3(EExecMsgQueueSend);
sl@0
  1566
	}
sl@0
  1567
sl@0
  1568
__EXECDECL__ TInt Exec::MsgQueueReceive(TInt, TAny*, TInt)
sl@0
  1569
	{
sl@0
  1570
	SLOW_EXEC3(EExecMsgQueueReceive);
sl@0
  1571
	}
sl@0
  1572
sl@0
  1573
__EXECDECL__ void Exec::MsgQueueNotifySpaceAvailable(TInt, TRequestStatus&)
sl@0
  1574
	{
sl@0
  1575
	SLOW_EXEC2(EExecMsgQueueNotifySpaceAvailable);
sl@0
  1576
	}
sl@0
  1577
sl@0
  1578
__EXECDECL__ void Exec::MsgQueueCancelSpaceAvailable(TInt)
sl@0
  1579
	{
sl@0
  1580
	SLOW_EXEC1(EExecMsgQueueCancelSpaceAvailable);
sl@0
  1581
	}
sl@0
  1582
sl@0
  1583
__EXECDECL__ void Exec::MsgQueueNotifyDataAvailable(TInt, TRequestStatus&)
sl@0
  1584
	{
sl@0
  1585
	SLOW_EXEC2(EExecMsgQueueNotifyDataAvailable);
sl@0
  1586
	}
sl@0
  1587
sl@0
  1588
__EXECDECL__ void Exec::MsgQueueCancelDataAvailable(TInt)
sl@0
  1589
	{
sl@0
  1590
	SLOW_EXEC1(EExecMsgQueueCancelDataAvailable);
sl@0
  1591
	}
sl@0
  1592
sl@0
  1593
__EXECDECL__ TInt Exec::MsgQueueSize(TInt)
sl@0
  1594
	{
sl@0
  1595
	SLOW_EXEC1(EExecMsgQueueSize);
sl@0
  1596
	}
sl@0
  1597
sl@0
  1598
__EXECDECL__ TInt Exec::PropertyDefine(TUint, TUint, TPropertyInfo*)
sl@0
  1599
	{
sl@0
  1600
	SLOW_EXEC3(EExecPropertyDefine);
sl@0
  1601
	}
sl@0
  1602
sl@0
  1603
__EXECDECL__ TInt Exec::PropertyDelete(TUint, TUint)
sl@0
  1604
	{
sl@0
  1605
	SLOW_EXEC2(EExecPropertyDelete);
sl@0
  1606
	}
sl@0
  1607
sl@0
  1608
__EXECDECL__ TInt Exec::PropertyAttach(TUint, TUint, TOwnerType)
sl@0
  1609
	{
sl@0
  1610
	SLOW_EXEC3(EExecPropertyAttach);
sl@0
  1611
	}
sl@0
  1612
sl@0
  1613
__EXECDECL__ void Exec::PropertySubscribe(TInt, TRequestStatus*)
sl@0
  1614
	{
sl@0
  1615
	SLOW_EXEC2(EExecPropertySubscribe);
sl@0
  1616
	}
sl@0
  1617
sl@0
  1618
__EXECDECL__ void Exec::PropertyCancel(TInt)
sl@0
  1619
	{
sl@0
  1620
	SLOW_EXEC1(EExecPropertyCancel);
sl@0
  1621
	}
sl@0
  1622
sl@0
  1623
__EXECDECL__ TInt Exec::PropertyGetI(TInt, TInt*)
sl@0
  1624
	{
sl@0
  1625
	SLOW_EXEC2(EExecPropertyGetI);
sl@0
  1626
	}
sl@0
  1627
sl@0
  1628
__EXECDECL__ TInt Exec::PropertyGetB(TInt, TUint8*, TInt)
sl@0
  1629
	{
sl@0
  1630
	SLOW_EXEC3(EExecPropertyGetB);
sl@0
  1631
	}
sl@0
  1632
sl@0
  1633
__EXECDECL__ TInt Exec::PropertySetI(TInt, TInt)
sl@0
  1634
	{
sl@0
  1635
	SLOW_EXEC2(EExecPropertySetI);
sl@0
  1636
	}
sl@0
  1637
sl@0
  1638
__EXECDECL__ TInt Exec::PropertySetB(TInt, const TUint8*, TInt)
sl@0
  1639
	{
sl@0
  1640
	SLOW_EXEC3(EExecPropertySetB);
sl@0
  1641
	}
sl@0
  1642
sl@0
  1643
__EXECDECL__ TInt Exec::PropertyFindGetI(TUint, TUint, TInt*)
sl@0
  1644
	{
sl@0
  1645
	SLOW_EXEC3(EExecPropertyFindGetI);
sl@0
  1646
	}
sl@0
  1647
sl@0
  1648
__EXECDECL__ TInt Exec::PropertyFindGetB(TUint, TUint, TUint8*, TInt)
sl@0
  1649
	{
sl@0
  1650
	SLOW_EXEC4(EExecPropertyFindGetB);
sl@0
  1651
	}
sl@0
  1652
sl@0
  1653
__EXECDECL__ TInt Exec::PropertyFindSetI(TUint, TUint, TInt)
sl@0
  1654
	{
sl@0
  1655
	SLOW_EXEC3(EExecPropertyFindSetI);
sl@0
  1656
	}
sl@0
  1657
sl@0
  1658
__EXECDECL__ TInt Exec::PropertyFindSetB(TUint, TUint, TUint8*, TInt)
sl@0
  1659
	{
sl@0
  1660
	SLOW_EXEC4(EExecPropertyFindSetB);
sl@0
  1661
	}
sl@0
  1662
sl@0
  1663
__EXECDECL__ TInt Exec::PowerEnableWakeupEvents(TPowerState)
sl@0
  1664
	{
sl@0
  1665
	SLOW_EXEC1(EExecPowerEnableWakeupEvents);
sl@0
  1666
	}
sl@0
  1667
sl@0
  1668
__EXECDECL__ void Exec::PowerDisableWakeupEvents()
sl@0
  1669
	{
sl@0
  1670
	SLOW_EXEC0(EExecPowerDisableWakeupEvents);
sl@0
  1671
	}
sl@0
  1672
sl@0
  1673
__EXECDECL__ void Exec::PowerRequestWakeupEventNotification(TRequestStatus*)
sl@0
  1674
	{
sl@0
  1675
	SLOW_EXEC1(EExecPowerRequestWakeupEventNotification);
sl@0
  1676
	}
sl@0
  1677
sl@0
  1678
__EXECDECL__ void Exec::PowerCancelWakeupEventNotification()
sl@0
  1679
	{
sl@0
  1680
	SLOW_EXEC0(EExecPowerCancelWakeupEventNotification);
sl@0
  1681
	}
sl@0
  1682
sl@0
  1683
__EXECDECL__ TInt Exec::PowerDown()
sl@0
  1684
	{
sl@0
  1685
	SLOW_EXEC0(EExecPowerDown);
sl@0
  1686
	}
sl@0
  1687
sl@0
  1688
__EXECDECL__ TInt Exec::ProcessSetHandleParameter(TInt, TInt, TInt)
sl@0
  1689
	{
sl@0
  1690
	SLOW_EXEC3(EExecProcessSetHandleParameter);
sl@0
  1691
	}
sl@0
  1692
sl@0
  1693
__EXECDECL__ TInt Exec::ProcessSetDataParameter(TInt, TInt, const TUint8*, TInt)
sl@0
  1694
	{
sl@0
  1695
	SLOW_EXEC4(EExecProcessSetDataParameter);
sl@0
  1696
	}
sl@0
  1697
sl@0
  1698
__EXECDECL__ TInt Exec::ProcessGetHandleParameter(TInt, TObjectType, TOwnerType)
sl@0
  1699
	{
sl@0
  1700
	SLOW_EXEC3(EExecProcessGetHandleParameter);
sl@0
  1701
	}
sl@0
  1702
sl@0
  1703
__EXECDECL__ TInt Exec::ProcessGetDataParameter(TInt, TUint8*, TInt)
sl@0
  1704
	{
sl@0
  1705
	SLOW_EXEC3(EExecProcessGetDataParameter);
sl@0
  1706
	}
sl@0
  1707
sl@0
  1708
__EXECDECL__ TInt Exec::ProcessDataParameterLength(TInt)
sl@0
  1709
	{
sl@0
  1710
	SLOW_EXEC1(EExecProcessDataParameterLength);
sl@0
  1711
	}
sl@0
  1712
sl@0
  1713
__EXECDECL__ TUint Exec::MessageClientProcessFlags(TInt)
sl@0
  1714
	{
sl@0
  1715
	SLOW_EXEC1(EExecMessageClientProcessFlags);
sl@0
  1716
	}
sl@0
  1717
sl@0
  1718
__EXECDECL__ TInt Exec::ThreadStackInfo(TInt, TThreadStackInfo&)
sl@0
  1719
	{
sl@0
  1720
	SLOW_EXEC2(EExecThreadStackInfo);
sl@0
  1721
	}
sl@0
  1722
sl@0
  1723
__EXECDECL__ RAllocator* Exec::ThreadGetHeap(TInt)
sl@0
  1724
	{
sl@0
  1725
	SLOW_EXEC1(EExecThreadGetHeap);
sl@0
  1726
	}
sl@0
  1727
sl@0
  1728
__EXECDECL__ TInt Exec::ThreadAsProcess(TInt, TInt)
sl@0
  1729
	{
sl@0
  1730
	SLOW_EXEC2(EExecThreadAsProcess);
sl@0
  1731
	}
sl@0
  1732
sl@0
  1733
__EXECDECL__ TInt Exec::CondVarCreate(const TDesC8*, TOwnerType)
sl@0
  1734
	{
sl@0
  1735
	SLOW_EXEC2(EExecCondVarCreate);
sl@0
  1736
	}
sl@0
  1737
sl@0
  1738
__EXECDECL__ TInt Exec::CondVarWait(TInt, TInt, TInt)
sl@0
  1739
	{
sl@0
  1740
	SLOW_EXEC3(EExecCondVarWait);
sl@0
  1741
	}
sl@0
  1742
sl@0
  1743
__EXECDECL__ void Exec::CondVarSignal(TInt)
sl@0
  1744
	{
sl@0
  1745
	SLOW_EXEC1(EExecCondVarSignal);
sl@0
  1746
	}
sl@0
  1747
sl@0
  1748
__EXECDECL__ void Exec::CondVarBroadcast(TInt)
sl@0
  1749
	{
sl@0
  1750
	SLOW_EXEC1(EExecCondVarBroadcast);
sl@0
  1751
	}
sl@0
  1752
sl@0
  1753
__EXECDECL__ TInt Exec::PlatSecDiagnostic(TPlatSecDiagnostic*)
sl@0
  1754
	{
sl@0
  1755
	SLOW_EXEC1(EExecPlatSecDiagnostic);
sl@0
  1756
	}
sl@0
  1757
sl@0
  1758
__EXECDECL__ TLinAddr Exec::ExceptionDescriptor(TLinAddr)
sl@0
  1759
	{
sl@0
  1760
	SLOW_EXEC1(EExecExceptionDescriptor);
sl@0
  1761
	}
sl@0
  1762
sl@0
  1763
__EXECDECL__ void Exec::ThreadRequestSignal(TInt)
sl@0
  1764
	{
sl@0
  1765
	SLOW_EXEC1(EExecThreadRequestSignal);
sl@0
  1766
	//TODO: look our thread per handle
sl@0
  1767
	//gProcess.iThread.iRequestSemaphore.Signal();
sl@0
  1768
	}
sl@0
  1769
sl@0
  1770
__EXECDECL__ TBool Exec::MutexIsHeld(TInt)
sl@0
  1771
	{
sl@0
  1772
	SLOW_EXEC1(EExecMutexIsHeld);
sl@0
  1773
	}
sl@0
  1774
sl@0
  1775
__EXECDECL__ TTrapHandler* Exec::LeaveStart()
sl@0
  1776
	{
sl@0
  1777
	SLOW_EXEC0(EExecLeaveStart);
sl@0
  1778
	//return gProcess.iThread.iHandler;
sl@0
  1779
	}
sl@0
  1780
sl@0
  1781
__EXECDECL__ void Exec::LeaveEnd()
sl@0
  1782
	{
sl@0
  1783
	SLOW_EXEC0(EExecLeaveEnd);	
sl@0
  1784
	}
sl@0
  1785
sl@0
  1786
__EXECDECL__ void Exec::SetDebugMaskIndex(TUint32, TUint)
sl@0
  1787
	{
sl@0
  1788
	SLOW_EXEC2(EExecSetDebugMaskIndex);
sl@0
  1789
	}
sl@0
  1790
sl@0
  1791
__EXECDECL__ TInt Exec::GetModuleNameFromAddress(TAny*, TDes8&)
sl@0
  1792
	{
sl@0
  1793
	SLOW_EXEC2(EExecGetModuleNameFromAddress);
sl@0
  1794
	}
sl@0
  1795
sl@0
  1796
__EXECDECL__ void Exec::NotifyChanges(TUint)
sl@0
  1797
	{
sl@0
  1798
	SLOW_EXEC1(EExecNotifyChanges);
sl@0
  1799
	}
sl@0
  1800
sl@0
  1801
__EXECDECL__ TInt Exec::SetGlobalUserData(TInt, TInt)
sl@0
  1802
	{
sl@0
  1803
	SLOW_EXEC2(EExecSetGlobalUserData);
sl@0
  1804
	}
sl@0
  1805
sl@0
  1806
__EXECDECL__ TInt Exec::SessionSecurityInfo(TInt, SSecurityInfo&)
sl@0
  1807
	{
sl@0
  1808
	SLOW_EXEC2(EExecSessionSecurityInfo);
sl@0
  1809
	}
sl@0
  1810
sl@0
  1811
__EXECDECL__ const TRequestStatus* Exec::MessageClientStatus(TInt)
sl@0
  1812
	{
sl@0
  1813
	SLOW_EXEC1(EExecMessageClientStatus);
sl@0
  1814
	}
sl@0
  1815
sl@0
  1816
__EXECDECL__ TInt Exec::SetFloatingPointMode(TFloatingPointMode, TFloatingPointRoundingMode)
sl@0
  1817
	{
sl@0
  1818
	SLOW_EXEC2(EExecSetFloatingPointMode);
sl@0
  1819
	}
sl@0
  1820
sl@0
  1821
EXPORT_C __EXECDECL__ TBool BTrace::CheckFilter2(TUint32, TUint32)
sl@0
  1822
	{
sl@0
  1823
	SLOW_EXEC2(EExecCheckFilter2);
sl@0
  1824
	}
sl@0
  1825
sl@0
  1826
__EXECDECL__ TAny* Exec::ProcessExeExportData()
sl@0
  1827
	{
sl@0
  1828
	SLOW_EXEC0(EExecProcessExeExportData);
sl@0
  1829
	}
sl@0
  1830
sl@0
  1831
EXPORT_C __EXECDECL__ TInt E32Loader::NotifyIfCodeSegDestroyed(TRequestStatus&)
sl@0
  1832
	{
sl@0
  1833
	SLOW_EXEC1(EExecNotifyIfCodeSegDestroyed);
sl@0
  1834
	}
sl@0
  1835
sl@0
  1836
EXPORT_C __EXECDECL__ TInt E32Loader::GetDestroyedCodeSegInfo(TCodeSegLoaderCookie&)
sl@0
  1837
	{
sl@0
  1838
	SLOW_EXEC1(EExecGetDestroyedCodeSegInfo);
sl@0
  1839
	}
sl@0
  1840
sl@0
  1841
EXPORT_C __EXECDECL__ TInt Exec::SetWin32RuntimeHook(TAny*)
sl@0
  1842
	{
sl@0
  1843
	SLOW_EXEC1(EExecSetWin32RuntimeHook);
sl@0
  1844
	}
sl@0
  1845
sl@0
  1846
__EXECDECL__ TInt Exec::GetBTraceId(TInt)
sl@0
  1847
	{
sl@0
  1848
	SLOW_EXEC1(EExecGetBTraceId);
sl@0
  1849
	}
sl@0
  1850
sl@0
  1851
__EXECDECL__ void Exec::NotifyOnIdle(TRequestStatus*)
sl@0
  1852
	{
sl@0
  1853
	SLOW_EXEC1(EExecNotifyOnIdle);
sl@0
  1854
	}
sl@0
  1855
sl@0
  1856
__EXECDECL__ void Exec::CancelMiscNotifier(TRequestStatus*)
sl@0
  1857
	{
sl@0
  1858
	SLOW_EXEC1(EExecCancelMiscNotifier);
sl@0
  1859
	}
sl@0
  1860
sl@0
  1861
__EXECDECL__ void Exec::NotifyObjectDestruction(TInt, TRequestStatus*)
sl@0
  1862
	{
sl@0
  1863
	SLOW_EXEC2(EExecNotifyObjectDestruction);
sl@0
  1864
	}
sl@0
  1865
sl@0
  1866
__EXECDECL__ void Exec::RegisterTrustedChunk(TInt)
sl@0
  1867
	{
sl@0
  1868
	SLOW_EXEC1(EExecRegisterTrustedChunk);
sl@0
  1869
	}
sl@0
  1870
sl@0
  1871
/*
sl@0
  1872
Notify the kernel a thread is exiting.
sl@0
  1873
sl@0
  1874
@param Exit reason
sl@0
  1875
@return ETrue if this is the last thread in the process, EFalse otherwise.
sl@0
  1876
*/
sl@0
  1877
__EXECDECL__ TBool Exec::UserThreadExiting(TInt aReason)
sl@0
  1878
	{
sl@0
  1879
	SLOW_EXEC1(EExecUserThreadExiting);
sl@0
  1880
	//gProcess.Free();
sl@0
  1881
	//return ETrue; //No thread support ATM so we are always the last thread
sl@0
  1882
	}
sl@0
  1883
sl@0
  1884
__EXECDECL__ TBool Exec::ChunkIsPaged(TInt)
sl@0
  1885
	{
sl@0
  1886
	SLOW_EXEC1(EExecChunkIsPaged);
sl@0
  1887
	}
sl@0
  1888
sl@0
  1889
__EXECDECL__ TBool Exec::ProcessDefaultDataPaged(TInt)
sl@0
  1890
	{
sl@0
  1891
	SLOW_EXEC1(EExecProcessDefaultDataPaged);
sl@0
  1892
	}
sl@0
  1893
sl@0
  1894
__EXECDECL__ TUint Exec::MessageClientThreadFlags(TInt)
sl@0
  1895
	{
sl@0
  1896
	SLOW_EXEC1(EExecMessageClientThreadFlags);
sl@0
  1897
	}
sl@0
  1898
sl@0
  1899
__EXECDECL__ TInt Exec::ShPoolCreate(const TShPoolInfo&, TUint)
sl@0
  1900
	{
sl@0
  1901
	SLOW_EXEC2(EExecShPoolCreate);
sl@0
  1902
	}
sl@0
  1903
sl@0
  1904
__EXECDECL__ TInt Exec::ShPoolAlloc(TInt, TUint, SShBufBaseAndSize&)
sl@0
  1905
	{
sl@0
  1906
	SLOW_EXEC3(EExecShPoolAlloc);
sl@0
  1907
	}
sl@0
  1908
sl@0
  1909
__EXECDECL__ void Exec::ShPoolGetInfo(TInt, TShPoolInfo&)
sl@0
  1910
	{
sl@0
  1911
	SLOW_EXEC2(EExecShPoolGetInfo);
sl@0
  1912
	}
sl@0
  1913
sl@0
  1914
__EXECDECL__ TUint Exec::ShPoolFreeCount(TInt)
sl@0
  1915
	{
sl@0
  1916
	SLOW_EXEC1(EExecShPoolFreeCount);
sl@0
  1917
	}
sl@0
  1918
sl@0
  1919
__EXECDECL__ TInt Exec::ShPoolNotification(TInt, TShPoolNotifyType, TUint, TRequestStatus&)
sl@0
  1920
	{
sl@0
  1921
	SLOW_EXEC4(EExecShPoolNotification);
sl@0
  1922
	}
sl@0
  1923
sl@0
  1924
__EXECDECL__ TInt Exec::ShPoolNotificationCancel(TInt, TShPoolNotifyType, TRequestStatus&)
sl@0
  1925
	{
sl@0
  1926
	SLOW_EXEC3(EExecShPoolNotificationCancel);
sl@0
  1927
	}
sl@0
  1928
sl@0
  1929
__EXECDECL__ TInt Exec::ShPoolBufferWindow(TInt, TInt, TBool)
sl@0
  1930
	{
sl@0
  1931
	SLOW_EXEC3(EExecShPoolBufferWindow);
sl@0
  1932
	}
sl@0
  1933
sl@0
  1934
__EXECDECL__ TInt Exec::ShBufMap(TInt, TBool, SShBufBaseAndSize&)
sl@0
  1935
	{
sl@0
  1936
	SLOW_EXEC3(EExecShBufMap);
sl@0
  1937
	}
sl@0
  1938
sl@0
  1939
__EXECDECL__ TInt Exec::ShBufUnMap(TInt)
sl@0
  1940
	{
sl@0
  1941
	SLOW_EXEC1(EExecShBufUnMap);
sl@0
  1942
	}
sl@0
  1943
sl@0
  1944
__EXECDECL__ TInt Exec::ShBufBaseAndSize(TInt, SShBufBaseAndSize&)
sl@0
  1945
	{
sl@0
  1946
	SLOW_EXEC2(EExecShBufBaseAndSize);
sl@0
  1947
	}
sl@0
  1948
sl@0
  1949
sl@0
  1950
sl@0
  1951
#endif
sl@0
  1952
sl@0
  1953