sl@0: // Copyright (c) 1995-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\euser\epoc\win32\uc_exec.cpp sl@0: // sl@0: // sl@0: sl@0: sl@0: //#define __GEN_USER_EXEC_CODE__ sl@0: sl@0: #include "../win32/uc_std.h" sl@0: #include sl@0: #include sl@0: sl@0: // sl@0: #include sl@0: #include sl@0: sl@0: /** sl@0: Symbian compatibility executive panics sl@0: */ sl@0: enum TSymcExecPanic sl@0: { sl@0: ESymcExecPanicNotSupported, sl@0: ESymcExecPanicHeapAlreadyExists, sl@0: ESymcExecPanicCreateHeapFailed, sl@0: ESymcExecPanicNotUsed sl@0: }; sl@0: sl@0: void Panic(TInt aReason) sl@0: { sl@0: _LIT(KCategory,"SYMC-Exec"); sl@0: User::Panic(KCategory,aReason); sl@0: } sl@0: sl@0: sl@0: const TInt KTrapStackSize=256; sl@0: sl@0: /* sl@0: TODO: should we use CObject? sl@0: */ sl@0: class TThread sl@0: { sl@0: public: sl@0: sl@0: public: sl@0: RSemaphore iRequestSemaphore; sl@0: CActiveScheduler* iActiveScheduler; //Current active scheduler for this thread. Used. sl@0: TTrapHandler* iHandler; //This is our cleanup stack. Used. sl@0: //No idea why we need that trap stack sl@0: //TTrap* iTrapStack[KTrapStackSize]; sl@0: //TInt iTrapCount; sl@0: }; sl@0: sl@0: /* sl@0: TODO: should we use CObject? sl@0: Object used to store process globals for our pseudo kernel. sl@0: That's typically going to be a singleton. sl@0: */ sl@0: /* sl@0: class TProcess sl@0: { sl@0: public: sl@0: void CreateHeap(); sl@0: void Free(); sl@0: sl@0: public: sl@0: RHeap* iAllocator; sl@0: TAny* iBase; sl@0: TThread iThread; //Single thread for now sl@0: }; sl@0: sl@0: sl@0: void TProcess::CreateHeap() sl@0: { sl@0: //iThread.iTrapCount=0; sl@0: //Define the size of our heap sl@0: const TInt KHeapMaxSize=1024*1024*10; // 10 Mo for now sl@0: __ASSERT_ALWAYS(iAllocator==NULL && iBase==NULL,Panic(ESymcExecPanicHeapAlreadyExists)); sl@0: iBase=malloc(KHeapMaxSize); sl@0: __ASSERT_ALWAYS(iBase!=NULL,Panic(ESymcExecPanicCreateHeapFailed)); sl@0: //TODO: is there anyway we could use variable size heap? sl@0: iAllocator=UserHeap::FixedHeap(iBase,KHeapMaxSize); sl@0: __ASSERT_ALWAYS(iAllocator!=NULL,Panic(ESymcExecPanicCreateHeapFailed)); sl@0: } sl@0: sl@0: void TProcess::Free() sl@0: { sl@0: free(iBase); sl@0: } sl@0: sl@0: */ sl@0: sl@0: //TProcess gProcess; sl@0: sl@0: sl@0: sl@0: // sl@0: sl@0: sl@0: typedef TInt (__fastcall *TDispatcher)(TInt, TInt*); sl@0: TInt __fastcall LazyDispatch(TInt aFunction, TInt* aArgs); sl@0: sl@0: #pragma data_seg(".data2") sl@0: #ifdef __VC32__ sl@0: #pragma bss_seg(".data2") sl@0: #endif sl@0: static TDispatcher TheDispatcher = &LazyDispatch; sl@0: #pragma data_seg() sl@0: #ifdef __VC32__ sl@0: #pragma bss_seg() sl@0: #endif sl@0: sl@0: TInt __fastcall LazyDispatch(TInt aFunction, TInt* aArgs) sl@0: { sl@0: //Panic(ESymcExecPanicNotSupported); sl@0: // sl@0: HINSTANCE kernel = GetModuleHandleA("ekern.exe"); sl@0: if (kernel) sl@0: { sl@0: TDispatcher dispatcher = (TDispatcher)Emulator::GetProcAddress(kernel, (LPCSTR)1); sl@0: if (dispatcher) sl@0: { sl@0: TheDispatcher = dispatcher; sl@0: return dispatcher(aFunction, aArgs); sl@0: } sl@0: } sl@0: ExitProcess(101); sl@0: return 0; sl@0: } sl@0: sl@0: #include sl@0: sl@0: /****************************************************************************** sl@0: * Slow executive calls with preprocessing or extra arguments sl@0: ******************************************************************************/ sl@0: sl@0: __NAKED__ TInt Exec::SessionSend(TInt /*aHandle*/, TInt /*aFunction*/, TAny* /*aPtr*/, TRequestStatus* /*aStatus*/) sl@0: // sl@0: // Send a blind message to the server. sl@0: // sl@0: { sl@0: __DISPATCH(EExecSessionSend|EXECUTIVE_SLOW) sl@0: } sl@0: sl@0: __NAKED__ TInt Exec::SessionSendSync(TInt /*aHandle*/, TInt /*aFunction*/, TAny* /*aPtr*/, TRequestStatus* /*aStatus*/) sl@0: // sl@0: // Send a blind message to the server using thread's dedicated message slot. sl@0: // sl@0: { sl@0: __DISPATCH(EExecSessionSendSync|EXECUTIVE_SLOW) sl@0: } sl@0: sl@0: sl@0: __NAKED__ TInt Exec::MessageIpcCopy(TInt /*aHandle*/, TInt /*aParam*/, SIpcCopyInfo& /*aInfo*/, TInt /*anOffset*/) sl@0: // sl@0: // Perform a descriptor-to-descriptor IPC copy sl@0: // sl@0: { sl@0: sl@0: __DISPATCH(EExecMessageIpcCopy|EXECUTIVE_SLOW) sl@0: } sl@0: sl@0: __NAKED__ TInt Exec::BTraceOut(TUint32 /*a0*/, TUint32 /*a1*/, const BTrace::SExecExtension& /*aExtension*/, TInt /*aDataSize*/) sl@0: { sl@0: __DISPATCH(EExecBTraceOut|EXECUTIVE_SLOW) sl@0: } sl@0: sl@0: __NAKED__ TInt Exec::BTraceOutBig(TUint32 /*a0*/, TUint32 /*a1*/, const BTrace::SExecExtension& /*aExtension*/, TInt /*aDataSize*/) sl@0: { sl@0: __DISPATCH(EExecBTraceOutBig|EXECUTIVE_SLOW) sl@0: } sl@0: sl@0: __NAKED__ TInt Exec::UTraceOut(TUint32 /*a0*/, TUint32 /*a1*/, const BTrace::SExecExtension& /*aExtension*/, TInt /*aDataSize*/) sl@0: { sl@0: __DISPATCH(EExecUTraceOut|EXECUTIVE_SLOW) sl@0: } sl@0: sl@0: EXPORT_C TBool BTrace::Out(TUint32 a0, TUint32 a1, TUint32 a2, TUint32 a3) sl@0: { sl@0: BTrace::SExecExtension ext; sl@0: ext.iA2 = a2; sl@0: ext.iA3 = a3; sl@0: ext.iPc = (&a0)[-1]; // return address on X86 sl@0: return Exec::BTraceOut(a0,a1,ext,0); sl@0: } sl@0: sl@0: EXPORT_C TBool BTrace::OutX(TUint32 a0, TUint32 a1, TUint32 a2, TUint32 a3) sl@0: { sl@0: BTrace::SExecExtension ext; sl@0: ext.iA2 = a2; sl@0: ext.iA3 = a3; sl@0: ext.iPc = (&a0)[-1]; // return address on X86 sl@0: return Exec::BTraceOut(a0,a1,ext,0); sl@0: } sl@0: sl@0: EXPORT_C TBool BTrace::OutN(TUint32 a0, TUint32 a1, TUint32 a2, const TAny* aData, TInt aDataSize) sl@0: { sl@0: BTrace::SExecExtension ext; sl@0: ext.iA2 = a2; sl@0: ext.iA3 = (TUint32)aData; sl@0: ext.iPc = (&a0)[-1]; // return address on X86 sl@0: return Exec::BTraceOut(a0,a1,ext,aDataSize); sl@0: } sl@0: sl@0: EXPORT_C TBool BTrace::OutNX(TUint32 a0, TUint32 a1, TUint32 a2, const TAny* aData, TInt aDataSize) sl@0: { sl@0: BTrace::SExecExtension ext; sl@0: ext.iA2 = a2; sl@0: ext.iA3 = (TUint32)aData; sl@0: ext.iPc = (&a0)[-1]; // return address on X86 sl@0: return Exec::BTraceOut(a0,a1,ext,aDataSize); sl@0: } sl@0: sl@0: EXPORT_C TBool BTrace::OutBig(TUint32 a0, TUint32 a1, const TAny* aData, TInt aDataSize) sl@0: { sl@0: BTrace::SExecExtension ext; sl@0: ext.iA2 = 0; sl@0: ext.iA3 = (TUint32)aData; sl@0: ext.iPc = (&a0)[-1]; // return address on X86 sl@0: sl@0: if((TUint)aDataSize>8u) sl@0: { sl@0: if((TUint)aDataSize>KMaxBTraceDataArray+4u) sl@0: return Exec::BTraceOutBig(a0,a1,ext,aDataSize); sl@0: a0 += 4; sl@0: aDataSize -= 4; sl@0: ext.iA2 = *((TUint32*&)aData)++; sl@0: ext.iA3 = (TUint32)aData; sl@0: return Exec::BTraceOut(a0,a1,ext,aDataSize); sl@0: } sl@0: sl@0: if((TUint)aDataSize>4u) sl@0: ext.iA3 = ((TUint32*)aData)[1]; sl@0: if(aDataSize) sl@0: ext.iA2 = ((TUint32*)aData)[0]; sl@0: a0 += aDataSize; sl@0: aDataSize = 0; sl@0: return Exec::BTraceOut(a0,a1,ext,aDataSize); sl@0: } sl@0: sl@0: EXPORT_C TBool BTrace::OutFiltered(TUint32 a0, TUint32 a1, TUint32 a2, TUint32 a3) sl@0: { sl@0: BTrace::SExecExtension ext; sl@0: a0 |= EMissingRecord<8u) sl@0: { sl@0: if((TUint)aDataSize>KMaxBTraceDataArray+4u) sl@0: return Exec::BTraceOutBig(a0,a1,ext,aDataSize); sl@0: a0 += 4; sl@0: aDataSize -= 4; sl@0: ext.iA2 = *((TUint32*&)aData)++; sl@0: ext.iA3 = (TUint32)aData; sl@0: return Exec::BTraceOut(a0,a1,ext,aDataSize); sl@0: } sl@0: sl@0: if((TUint)aDataSize>4u) sl@0: ext.iA3 = ((TUint32*)aData)[1]; sl@0: if(aDataSize) sl@0: ext.iA2 = ((TUint32*)aData)[0]; sl@0: a0 += aDataSize; sl@0: aDataSize = 0; sl@0: return Exec::BTraceOut(a0,a1,ext,aDataSize); sl@0: } sl@0: sl@0: EXPORT_C TBool BTrace::OutFilteredPcFormatBig(TUint32 aHeader, TUint32 aModuleUid, TUint32 aPc, TUint16 aFormatId, const TAny* aData, TInt aDataSize) sl@0: { sl@0: BTrace::SExecExtension ext; sl@0: aHeader |= EMissingRecord<KMaxBTraceDataArray) sl@0: return Exec::UTraceOut(aHeader,aModuleUid,ext,aDataSize); sl@0: aHeader += 4; sl@0: return Exec::BTraceOut(aHeader,aModuleUid,ext,aDataSize); sl@0: } sl@0: sl@0: sl@0: /* sl@0: void ExecRequestComplete(TInt aHandle, TRequestStatus*& aStatus, TInt aReason) sl@0: { sl@0: //TODO: look up our thread per handle sl@0: // sl@0: gProcess.iThread.iRequestSemaphore.Signal(); sl@0: } sl@0: */ sl@0: sl@0: __NAKED__ void ExecRequestComplete(TInt /*aHandle*/, TRequestStatus*& /*aStatus*/, TInt /*aReason*/) sl@0: { sl@0: _asm mov ecx, [esp+8] // ecx = TRequestStatus** sl@0: _asm xor eax, eax // sl@0: _asm lock xchg eax, [ecx] // eax=TRequestStatus*, zero TRequestStatus* sl@0: _asm cmp eax, 0 // sl@0: _asm je ExecRequestComplete_ret sl@0: _asm mov ecx, [esp+12] // ecx = aReason sl@0: _asm mov [eax], ecx // store aReason in request status sl@0: __DISPATCH(EExecThreadRequestSignal|EXECUTIVE_SLOW) sl@0: _asm ExecRequestComplete_ret: ret sl@0: } sl@0: sl@0: sl@0: sl@0: EXPORT_C void RThread::RequestComplete(TRequestStatus*& aStatus, TInt aReason) const sl@0: /** sl@0: Signals this thread that an asynchronous request originating from this thread, sl@0: is complete. sl@0: sl@0: The request is associated with the specified request status object supplied sl@0: by this thread. sl@0: sl@0: Typically, the caller of this function is the service provider responsible sl@0: for satisfying the request made by this thread. sl@0: sl@0: The request is completed with the completion code passed in aReason. This sl@0: value is copied into this thread's request status, *aStatus, before signalling sl@0: this thread's request semaphore. sl@0: sl@0: The meaning of the completion code is a matter of convention to be decided sl@0: between the service provider and this thread. sl@0: sl@0: In a client-server situation, completion of a request takes place in the context sl@0: of the server thread, but the pointer is interpreted in the address space sl@0: of the client. sl@0: sl@0: It is often the case in client-server situations that the client and the server sl@0: are in the same address space (i.e. the same process). sl@0: sl@0: Setting the pointer to the request status to NULL is a convenience, not all sl@0: servers need it. sl@0: sl@0: @param aStatus A reference to a pointer to the request status originally sl@0: supplied by this thread. This is a pointer into this thread's sl@0: address space, which may be different to the thread currently sl@0: executing (this code). On return, the pointer to the request sl@0: status is set to NULL. sl@0: sl@0: @param aReason The completion code of this request. sl@0: */ sl@0: { sl@0: ExecRequestComplete(iHandle,aStatus,aReason); sl@0: //SL: just change the status not the flag. We do that to please the active scheduler sl@0: //That's apparently the expected behavior sl@0: //aStatus->iStatus=aReason; sl@0: } sl@0: sl@0: sl@0: sl@0: /** sl@0: Signal this threads request semaphore. sl@0: sl@0: This is similar to RThread::RequestComplete() except that no TRequestStatus object sl@0: is modified. sl@0: sl@0: May only be used to signal a thread in the same process as the callers. sl@0: sl@0: @panic KERN-EXEC 46 if the thread is not in the same process as the callers sl@0: */ sl@0: EXPORT_C void RThread::RequestSignal() const sl@0: { sl@0: Exec::ThreadRequestSignal(iHandle); sl@0: } sl@0: sl@0: sl@0: sl@0: void ExitCurrentThread(TExitType aType, TInt aReason, const TDesC8* aCategory) sl@0: { sl@0: Exec::ThreadKill(KCurrentThreadHandle, aType, aReason, aCategory); sl@0: } sl@0: sl@0: sl@0: // sl@0: #ifndef __GEN_USER_EXEC_CODE__ sl@0: sl@0: sl@0: sl@0: __EXECDECL__ void Exec::WaitForAnyRequest() sl@0: { sl@0: FAST_EXEC0(EFastExecWaitForAnyRequest); sl@0: //gProcess.iThread.iRequestSemaphore.Wait(); sl@0: } sl@0: sl@0: __EXECDECL__ RAllocator* Exec::Heap() sl@0: { sl@0: FAST_EXEC0(EFastExecHeap); sl@0: //return gProcess.iAllocator; sl@0: } sl@0: sl@0: __EXECDECL__ RAllocator* Exec::HeapSwitch(RAllocator*) sl@0: { sl@0: FAST_EXEC1(EFastExecHeapSwitch); sl@0: } sl@0: sl@0: __EXECDECL__ TTrapHandler* Exec::PushTrapFrame(TTrap* aTrap) sl@0: { sl@0: //Panic(ESymcExecPanicNotUsed); sl@0: //return NULL; sl@0: FAST_EXEC1(EFastExecPushTrapFrame); sl@0: //ASSERT(gProcess.iThread.iTrapCount<=KTrapStackSize); sl@0: //gProcess.iThread.iTrapStack[gProcess.iThread.iTrapCount++]=aTrap; sl@0: //return gProcess.iThread.iHandler; sl@0: } sl@0: sl@0: __EXECDECL__ TTrap* Exec::PopTrapFrame() sl@0: { sl@0: //Panic(ESymcExecPanicNotUsed); sl@0: //return NULL; sl@0: FAST_EXEC0(EFastExecPopTrapFrame); sl@0: //ASSERT(gProcess.iThread.iTrapCount>0); sl@0: //return gProcess.iThread.iTrapStack[gProcess.iThread.iTrapCount--]; sl@0: } sl@0: sl@0: __EXECDECL__ CActiveScheduler* Exec::ActiveScheduler() sl@0: { sl@0: FAST_EXEC0(EFastExecActiveScheduler); sl@0: //return gProcess.iThread.iActiveScheduler; sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::SetActiveScheduler(CActiveScheduler* aActiveScheduler) sl@0: { sl@0: FAST_EXEC1(EFastExecSetActiveScheduler); sl@0: //gProcess.iThread.iActiveScheduler=aActiveScheduler; sl@0: } sl@0: sl@0: __EXECDECL__ TTimerLockSpec Exec::LockPeriod() sl@0: { sl@0: FAST_EXEC0(EFastExecLockPeriod); sl@0: } sl@0: sl@0: __EXECDECL__ TTrapHandler* Exec::TrapHandler() sl@0: { sl@0: FAST_EXEC0(EFastExecTrapHandler); sl@0: //return gProcess.iThread.iHandler; sl@0: } sl@0: sl@0: __EXECDECL__ TTrapHandler* Exec::SetTrapHandler(TTrapHandler* aHandler) sl@0: { sl@0: FAST_EXEC1(EFastExecSetTrapHandler); sl@0: //TTrapHandler* prev=gProcess.iThread.iHandler; sl@0: //gProcess.iThread.iHandler=aHandler; sl@0: //return prev; sl@0: } sl@0: sl@0: __EXECDECL__ TUint32 Exec::DebugMask() sl@0: { sl@0: FAST_EXEC0(EFastExecDebugMask); sl@0: } sl@0: sl@0: __EXECDECL__ TUint32 Exec::DebugMaskIndex(TUint) sl@0: { sl@0: FAST_EXEC1(EFastExecDebugMaskIndex); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::SetDebugMask(TUint32) sl@0: { sl@0: FAST_EXEC1(EFastExecSetDebugMask); sl@0: } sl@0: sl@0: __EXECDECL__ TUint32 Exec::FastCounter() sl@0: { sl@0: FAST_EXEC0(EFastExecFastCounter); sl@0: } sl@0: sl@0: __EXECDECL__ TUint32 Exec::NTickCount() sl@0: { sl@0: FAST_EXEC0(EFastExecNTickCount); sl@0: } sl@0: sl@0: EXPORT_C __EXECDECL__ void UserSvr::LockRamDrive() sl@0: { sl@0: FAST_EXEC0(EFastExecLockRamDrive); sl@0: } sl@0: sl@0: EXPORT_C __EXECDECL__ void UserSvr::UnlockRamDrive() sl@0: { sl@0: FAST_EXEC0(EFastExecUnlockRamDrive); sl@0: } sl@0: sl@0: EXPORT_C __EXECDECL__ TLinAddr UserSvr::RomHeaderAddress() sl@0: { sl@0: FAST_EXEC0(EFastExecRomHeaderAddress); sl@0: } sl@0: sl@0: EXPORT_C __EXECDECL__ TLinAddr UserSvr::RomRootDirectoryAddress() sl@0: { sl@0: FAST_EXEC0(EFastExecRomRootDirectoryAddress); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::SetReentryPoint(TLinAddr) sl@0: { sl@0: FAST_EXEC1(EFastExecSetReentryPoint); sl@0: } sl@0: sl@0: __EXECDECL__ TUint32 Exec::KernelConfigFlags() sl@0: { sl@0: FAST_EXEC0(EFastExecKernelConfigFlags); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::UTCOffset() sl@0: { sl@0: FAST_EXEC0(EFastExecUTCOffset); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::GetGlobalUserData(TInt) sl@0: { sl@0: FAST_EXEC1(EFastExecGetGlobalUserData); sl@0: } sl@0: sl@0: EXPORT_C __EXECDECL__ TBool BTrace::CheckFilter(TUint32) sl@0: { sl@0: FAST_EXEC1(EFastExecCheckFilter); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ObjectNext(TObjectType, TBuf8&, TFindHandle&) sl@0: { sl@0: SLOW_EXEC3(EExecObjectNext); sl@0: } sl@0: sl@0: __EXECDECL__ TUint8* Exec::ChunkBase(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecChunkBase); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ChunkSize(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecChunkSize); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ChunkMaxSize(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecChunkMaxSize); sl@0: } sl@0: sl@0: __EXECDECL__ TUint Exec::HandleAttributes(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecHandleAttributes); sl@0: } sl@0: sl@0: __EXECDECL__ TUint Exec::TickCount() sl@0: { sl@0: SLOW_EXEC0(EExecTickCount); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::LogicalDeviceGetCaps(TInt, TDes8&) sl@0: { sl@0: SLOW_EXEC2(EExecLogicalDeviceGetCaps); sl@0: } sl@0: sl@0: __EXECDECL__ TBool Exec::LogicalDeviceQueryVersionSupported(TInt, const TVersion&) sl@0: { sl@0: SLOW_EXEC2(EExecLogicalDeviceQueryVersionSupported); sl@0: } sl@0: sl@0: __EXECDECL__ TBool Exec::LogicalDeviceIsAvailable(TInt, TInt, const TDesC8*, const TDesC8*) sl@0: { sl@0: SLOW_EXEC4(EExecLogicalDeviceIsAvailable); sl@0: } sl@0: sl@0: EXPORT_C __EXECDECL__ TInt E32Loader::LocaleExports(TAny*, TLibraryFunction*) sl@0: { sl@0: SLOW_EXEC2(EExecLocaleExports); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ChannelRequest(TInt, TInt, TAny*, TAny*) sl@0: { sl@0: SLOW_EXEC4(EExecChannelRequest); sl@0: } sl@0: sl@0: __EXECDECL__ TUint32 Exec::MathRandom() sl@0: { sl@0: SLOW_EXEC0(EExecMathRandom); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::IMB_Range(TAny*, TUint) sl@0: { sl@0: SLOW_EXEC2(EExecIMBRange); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ResetMachine(TMachineStartupType) sl@0: { sl@0: SLOW_EXEC1(EExecResetMachine); sl@0: } sl@0: sl@0: __EXECDECL__ TLibraryFunction Exec::LibraryLookup(TInt, TInt) sl@0: { sl@0: SLOW_EXEC2(EExecLibraryLookup); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::LibraryFileName(TInt, TDes8&) sl@0: { sl@0: SLOW_EXEC2(EExecLibraryFileName); sl@0: } sl@0: sl@0: EXPORT_C __EXECDECL__ TInt UserSvr::ExecuteInSupervisorMode(TSupervisorFunction, TAny*) sl@0: { sl@0: SLOW_EXEC2(EExecExecuteInSupervisorMode); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::MutexWait(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecMutexWait); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::MutexSignal(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecMutexSignal); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ProcessId(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecProcessId); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::DllFileName(TInt, TDes8&) sl@0: { sl@0: SLOW_EXEC2(EExecDllFileName); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::ProcessResume(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecProcessResume); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::ProcessFileName(TInt, TDes8&) sl@0: { sl@0: SLOW_EXEC2(EExecProcessFileName); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::ProcessCommandLine(TInt, TDes8&) sl@0: { sl@0: SLOW_EXEC2(EExecProcessCommandLine); sl@0: } sl@0: sl@0: __EXECDECL__ TExitType Exec::ProcessExitType(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecProcessExitType); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ProcessExitReason(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecProcessExitReason); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::ProcessExitCategory(TInt, TDes8&) sl@0: { sl@0: SLOW_EXEC2(EExecProcessExitCategory); sl@0: } sl@0: sl@0: __EXECDECL__ TProcessPriority Exec::ProcessPriority(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecProcessPriority); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ProcessSetPriority(TInt, TProcessPriority) sl@0: { sl@0: SLOW_EXEC2(EExecProcessSetPriority); sl@0: } sl@0: sl@0: __EXECDECL__ TUint Exec::ProcessFlags(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecProcessFlags); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::ProcessSetFlags(TInt, TUint, TUint) sl@0: { sl@0: SLOW_EXEC3(EExecProcessSetFlags); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::SemaphoreWait(TInt aHandle, TInt aTimeout) sl@0: { sl@0: SLOW_EXEC2(EExecSemaphoreWait); sl@0: /* sl@0: #ifdef WIN32 sl@0: DWORD dwMilliseconds=INFINITE; sl@0: if (aTimeout!=0) //0 means infinite apparently on symbian sl@0: { sl@0: //Timeout is not infinite convert it from micro to milliseconds sl@0: dwMilliseconds=aTimeout/1000; sl@0: } sl@0: sl@0: //Issues win32 wait sl@0: WaitForSingleObject((HANDLE)aHandle,dwMilliseconds); sl@0: #else sl@0: #error "Platform not supported" sl@0: #endif sl@0: sl@0: //Returned value is not even checked in RSemaphore::Wait sl@0: return KErrNone; sl@0: */ sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::SemaphoreSignal1(TInt aHandle) sl@0: { sl@0: /* sl@0: #ifdef WIN32 sl@0: ReleaseSemaphore((HANDLE)aHandle,1,NULL); sl@0: #else sl@0: #error "Platform not supported" sl@0: #endif sl@0: */ sl@0: SLOW_EXEC1(EExecSemaphoreSignal1); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::SemaphoreSignalN(TInt aHandle, TInt aCount) sl@0: { sl@0: /* sl@0: #ifdef WIN32 sl@0: ReleaseSemaphore((HANDLE)aHandle,aCount,NULL); sl@0: #else sl@0: #error "Platform not supported" sl@0: #endif sl@0: */ sl@0: SLOW_EXEC2(EExecSemaphoreSignalN); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::ServerReceive(TInt, TRequestStatus&, TAny*) sl@0: { sl@0: SLOW_EXEC3(EExecServerReceive); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::ServerCancel(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecServerCancel); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::SetSessionPtr(TInt, const TAny*) sl@0: { sl@0: SLOW_EXEC2(EExecSetSessionPtr); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ThreadId(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecThreadId); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::SessionShare(TInt&, TInt) sl@0: { sl@0: SLOW_EXEC2(EExecSessionShare); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::ThreadResume(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecThreadResume); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::ThreadSuspend(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecThreadSuspend); sl@0: } sl@0: sl@0: __EXECDECL__ TThreadPriority Exec::ThreadPriority(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecThreadPriority); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::ThreadSetPriority(TInt, TThreadPriority) sl@0: { sl@0: SLOW_EXEC2(EExecThreadSetPriority); sl@0: } sl@0: sl@0: __EXECDECL__ TProcessPriority Exec::ThreadProcessPriority(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecThreadProcessPriority); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::ThreadSetProcessPriority(TInt, TProcessPriority) sl@0: { sl@0: SLOW_EXEC2(EExecThreadSetProcessPriority); sl@0: } sl@0: sl@0: __EXECDECL__ TUint Exec::ThreadFlags(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecThreadFlags); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::ThreadSetFlags(TInt, TUint, TUint) sl@0: { sl@0: SLOW_EXEC3(EExecThreadSetFlags); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ThreadRequestCount(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecThreadRequestCount); sl@0: } sl@0: sl@0: __EXECDECL__ TExitType Exec::ThreadExitType(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecThreadExitType); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ThreadExitReason(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecThreadExitReason); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::ThreadExitCategory(TInt, TDes8&) sl@0: { sl@0: SLOW_EXEC2(EExecThreadExitCategory); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::TimerCancel(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecTimerCancel); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::TimerAfter(TInt, TRequestStatus&, TInt) sl@0: { sl@0: SLOW_EXEC3(EExecTimerAfter); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::TimerAt(TInt, TRequestStatus&, TUint32, TUint32) sl@0: { sl@0: SLOW_EXEC4(EExecTimerAt); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::TimerLock(TInt, TRequestStatus&, TTimerLockSpec) sl@0: { sl@0: SLOW_EXEC3(EExecTimerLock); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ChangeNotifierLogon(TInt, TRequestStatus&) sl@0: { sl@0: SLOW_EXEC2(EExecChangeNotifierLogon); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ChangeNotifierLogoff(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecChangeNotifierLogoff); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::RequestSignal(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecRequestSignal); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::HandleName(TInt, TDes8&) sl@0: { sl@0: SLOW_EXEC2(EExecHandleName); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::HandleFullName(TInt, TDes8&) sl@0: { sl@0: SLOW_EXEC2(EExecHandleFullName); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::HandleInfo(TInt, THandleInfo*) sl@0: { sl@0: SLOW_EXEC2(EExecHandleInfo); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::HandleCount(TInt, TInt&, TInt&) sl@0: { sl@0: SLOW_EXEC3(EExecHandleCount); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::After(TInt, TRequestStatus&) sl@0: { sl@0: SLOW_EXEC2(EExecAfter); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::At(const EXEC_TIME&, TRequestStatus&) sl@0: { sl@0: SLOW_EXEC2(EExecAt); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::MessageComplete(TInt, TInt) sl@0: { sl@0: SLOW_EXEC2(EExecMessageComplete); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::MessageCompleteWithHandle(TInt, TInt) sl@0: { sl@0: SLOW_EXEC2(EExecMessageCompleteWithHandle); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::TransferSession(TInt, TInt) sl@0: { sl@0: SLOW_EXEC2(EExecTransferSession); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::TimeNow(EXEC_TIME&, TInt&) sl@0: { sl@0: SLOW_EXEC2(EExecTimeNow); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::TimeNowSecure(EXEC_TIME&, TInt&) sl@0: { sl@0: SLOW_EXEC2(EExecTimeNowSecure); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::SetUTCTimeAndOffset(const EXEC_TIME&, TInt, TUint, TUint) sl@0: { sl@0: SLOW_EXEC4(EExecSetUTCTimeAndOffset); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::SetMachineConfiguration(const TDesC8&) sl@0: { sl@0: SLOW_EXEC1(EExecSetMachineConfiguration); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::CaptureEventHook() sl@0: { sl@0: SLOW_EXEC0(EExecCaptureEventHook); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::ReleaseEventHook() sl@0: { sl@0: SLOW_EXEC0(EExecReleaseEventHook); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::RequestEvent(TRawEventBuf&, TRequestStatus&) sl@0: { sl@0: SLOW_EXEC2(EExecRequestEvent); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::RequestEventCancel() sl@0: { sl@0: SLOW_EXEC0(EExecRequestEventCancel); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::AddEvent(const TRawEvent&) sl@0: { sl@0: SLOW_EXEC1(EExecAddEvent); sl@0: } sl@0: sl@0: __EXECDECL__ TAny* Exec::DllTls(TInt aHandle, TInt aDllUid) sl@0: { sl@0: SLOW_EXEC2(EExecDllTls); sl@0: /* sl@0: if (aHandle==-1 && aDllUid==-1) sl@0: { sl@0: //No TGlobalDestructorFunc ATM sl@0: return NULL; sl@0: } sl@0: else sl@0: { sl@0: //No sure what to do here sl@0: __BREAKPOINT(); sl@0: } sl@0: */ sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::HalFunction(TInt, TInt, TAny*, TAny*) sl@0: { sl@0: SLOW_EXEC4(EExecHalFunction); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::WsRegisterThread() sl@0: { sl@0: SLOW_EXEC0(EExecWsRegisterThread); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::FsRegisterThread() sl@0: { sl@0: SLOW_EXEC0(EExecFsRegisterThread); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ProcessCommandLineLength(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecProcessCommandLineLength); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::TimerInactivity(TInt, TRequestStatus&, TInt) sl@0: { sl@0: SLOW_EXEC3(EExecTimerInactivity); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::UserInactivityTime() sl@0: { sl@0: SLOW_EXEC0(EExecUserInactivityTime); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::ResetInactivityTime() sl@0: { sl@0: SLOW_EXEC0(EExecResetInactivityTime); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::DebugPrint(TAny*, TInt) sl@0: { sl@0: SLOW_EXEC2(EExecDebugPrint); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::BreakPoint() sl@0: { sl@0: SLOW_EXEC0(EExecBreakPoint); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ProfileStart(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecProfileStart); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ProfileEnd(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecProfileEnd); sl@0: } sl@0: sl@0: __EXECDECL__ TExceptionHandler Exec::ExceptionHandler(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecExceptionHandler); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::SetExceptionHandler(TInt, TExceptionHandler, TUint32) sl@0: { sl@0: SLOW_EXEC3(EExecSetExceptionHandler); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::ModifyExceptionMask(TInt, TUint32, TUint32) sl@0: { sl@0: SLOW_EXEC3(EExecModifyExceptionMask); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::RaiseException(TInt, TExcType) sl@0: { sl@0: SLOW_EXEC2(EExecRaiseException); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::IsExceptionHandled(TInt, TExcType, TBool) sl@0: { sl@0: SLOW_EXEC3(EExecIsExceptionHandled); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ProcessGetMemoryInfo(TInt, TModuleMemoryInfo&) sl@0: { sl@0: SLOW_EXEC2(EExecProcessGetMemoryInfo); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::LibraryGetMemoryInfo(TInt, TModuleMemoryInfo&) sl@0: { sl@0: SLOW_EXEC2(EExecLibraryGetMemoryInfo); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::MachineConfiguration(TDes8&, TInt&) sl@0: { sl@0: SLOW_EXEC2(EExecMachineConfiguration); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::SetMemoryThresholds(TInt, TInt) sl@0: { sl@0: SLOW_EXEC2(EExecSetMemoryThresholds); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::LibraryType(TInt, TUidType&) sl@0: { sl@0: SLOW_EXEC2(EExecLibraryType); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::ProcessType(TInt, TUidType&) sl@0: { sl@0: SLOW_EXEC2(EExecProcessType); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ChunkBottom(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecChunkBottom); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ChunkTop(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecChunkTop); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::ThreadContext(TInt, TDes8&) sl@0: { sl@0: SLOW_EXEC2(EExecThreadContext); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ThreadCreate(const TDesC8&, TOwnerType, SThreadCreateInfo8&) sl@0: { sl@0: SLOW_EXEC3(EExecThreadCreate); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::FindHandleOpen(TOwnerType, const TFindHandle&) sl@0: { sl@0: SLOW_EXEC2(EExecFindHandleOpen); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::HandleClose(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecHandleClose); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ChunkCreate(TOwnerType, const TDesC8*, TChunkCreate&) sl@0: { sl@0: SLOW_EXEC3(EExecChunkCreate); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ChunkAdjust(TInt, TInt, TInt, TInt) sl@0: { sl@0: SLOW_EXEC4(EExecChunkAdjust); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::OpenObject(TObjectType, const TDesC8&, TOwnerType) sl@0: { sl@0: SLOW_EXEC3(EExecOpenObject); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::HandleDuplicate(TInt, TOwnerType, TInt&) sl@0: { sl@0: SLOW_EXEC3(EExecHandleDuplicate); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::MutexCreate(const TDesC8*, TOwnerType) sl@0: { sl@0: SLOW_EXEC2(EExecMutexCreate); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::SemaphoreCreate(const TDesC8* aName, TInt aCount, TOwnerType aType) sl@0: { sl@0: //__asm lea edx, [esp + 0x4] sl@0: //__asm mov ecx, (EExecSemaphoreCreate) sl@0: //__asm jmp [TheDispatcher] sl@0: sl@0: SLOW_EXEC3(EExecSemaphoreCreate); sl@0: sl@0: /* sl@0: #ifdef _WINDOWS sl@0: HANDLE semaphore = CreateSemaphore( sl@0: NULL, // default security attributes sl@0: aCount, sl@0: KMaxTInt, sl@0: //TODO: use the name sl@0: NULL); // unnamed mutex sl@0: sl@0: if (semaphore) sl@0: { sl@0: //success sl@0: return (TInt)semaphore; sl@0: } sl@0: sl@0: //failure sl@0: return NULL; sl@0: #else sl@0: //TODO: pthread implementation sl@0: Panic(ESymcExecPanicNotSupported); sl@0: #endif sl@0: */ sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ThreadOpenById(TUint, TOwnerType) sl@0: { sl@0: SLOW_EXEC2(EExecThreadOpenById); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ProcessOpenById(TUint, TOwnerType) sl@0: { sl@0: SLOW_EXEC2(EExecProcessOpenById); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::ThreadKill(TInt aThreadHandle, TExitType aType, TInt aReason, const TDesC8* aCategory) sl@0: { sl@0: SLOW_EXEC4(EExecThreadKill); sl@0: /* sl@0: if (aThreadHandle!=KCurrentThreadHandle) sl@0: { sl@0: //Not sure how to do that yet sl@0: __BREAKPOINT(); sl@0: return; sl@0: } sl@0: sl@0: if (aType==EExitPanic) sl@0: { sl@0: //Display message sl@0: #ifdef _WINDOWS sl@0: TBuf8<256> buf; sl@0: buf.Copy(*aCategory); sl@0: char errstr[256]; sprintf(errstr, "Category: %s\nReason: %d",buf.PtrZ(),aReason); sl@0: MessageBoxA(NULL,errstr, "PANIC", MB_OK | MB_ICONERROR); sl@0: #endif sl@0: __BREAKPOINT(); sl@0: } sl@0: sl@0: exit(aType); sl@0: */ sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::ThreadLogon(TInt, TRequestStatus*, TBool) sl@0: { sl@0: SLOW_EXEC3(EExecThreadLogon); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ThreadLogonCancel(TInt, TRequestStatus*, TBool) sl@0: { sl@0: SLOW_EXEC3(EExecThreadLogonCancel); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::DllSetTls(TInt, TInt, TAny*) sl@0: { sl@0: SLOW_EXEC3(EExecDllSetTls); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::DllFreeTls(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecDllFreeTls); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ThreadRename(TInt, const TDesC8&) sl@0: { sl@0: SLOW_EXEC2(EExecThreadRename); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ProcessRename(TInt, const TDesC8&) sl@0: { sl@0: SLOW_EXEC2(EExecProcessRename); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::ProcessKill(TInt, TExitType, TInt, const TDesC8*) sl@0: { sl@0: SLOW_EXEC4(EExecProcessKill); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::ProcessLogon(TInt, TRequestStatus*, TBool) sl@0: { sl@0: SLOW_EXEC3(EExecProcessLogon); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ProcessLogonCancel(TInt, TRequestStatus*, TBool) sl@0: { sl@0: SLOW_EXEC3(EExecProcessLogonCancel); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ThreadProcess(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecThreadProcess); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ServerCreate(const TDesC8*, TInt) sl@0: { sl@0: SLOW_EXEC2(EExecServerCreate); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ServerCreateWithOptions(const TDesC8*, TInt, TInt, TInt) sl@0: { sl@0: SLOW_EXEC4(EExecServerCreateWithOptions); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::SessionCreate(const TDesC8&, TInt, const TSecurityPolicy*, TInt) sl@0: { sl@0: SLOW_EXEC4(EExecSessionCreate); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::SessionCreateFromHandle(TInt, TInt, const TSecurityPolicy*, TInt) sl@0: { sl@0: SLOW_EXEC4(EExecSessionCreateFromHandle); sl@0: } sl@0: sl@0: EXPORT_C __EXECDECL__ TInt E32Loader::DeviceLoad(TAny*, TInt) sl@0: { sl@0: SLOW_EXEC2(EExecDeviceLoad); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::DeviceFree(const TDesC8&, TInt) sl@0: { sl@0: SLOW_EXEC2(EExecDeviceFree); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ChannelCreate(const TDesC8&, TChannelCreateInfo8&, TInt) sl@0: { sl@0: SLOW_EXEC3(EExecChannelCreate); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::TimerCreate() sl@0: { sl@0: SLOW_EXEC0(EExecTimerCreate); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::TimerHighRes(TInt, TRequestStatus&, TInt) sl@0: { sl@0: SLOW_EXEC3(EExecTimerHighRes); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::AfterHighRes(TInt, TRequestStatus&) sl@0: { sl@0: SLOW_EXEC2(EExecAfterHighRes); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ChangeNotifierCreate(TOwnerType) sl@0: { sl@0: SLOW_EXEC1(EExecChangeNotifierCreate); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::UndertakerCreate(TOwnerType) sl@0: { sl@0: SLOW_EXEC1(EExecUndertakerCreate); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::UndertakerLogon(TInt, TRequestStatus&, TInt&) sl@0: { sl@0: SLOW_EXEC3(EExecUndertakerLogon); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::UndertakerLogonCancel(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecUndertakerLogonCancel); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::KernelHeapDebug(TInt, TInt, TAny*) sl@0: { sl@0: SLOW_EXEC3(EExecKernelHeapDebug); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ThreadGetCpuTime(TInt, EXEC_INT64&) sl@0: { sl@0: SLOW_EXEC2(EExecThreadGetCpuTime); sl@0: } sl@0: sl@0: EXPORT_C __EXECDECL__ TInt E32Loader::CodeSegCreate(TCodeSegCreateInfo&) sl@0: { sl@0: SLOW_EXEC1(EExecCodeSegCreate); sl@0: } sl@0: sl@0: EXPORT_C __EXECDECL__ TInt E32Loader::CodeSegLoaded(TCodeSegCreateInfo&) sl@0: { sl@0: SLOW_EXEC1(EExecCodeSegLoaded); sl@0: } sl@0: sl@0: EXPORT_C __EXECDECL__ TInt E32Loader::LibraryCreate(TLibraryCreateInfo&) sl@0: { sl@0: SLOW_EXEC1(EExecLibraryCreate); sl@0: } sl@0: sl@0: EXPORT_C __EXECDECL__ TInt E32Loader::CodeSegOpen(TAny*, TInt) sl@0: { sl@0: SLOW_EXEC2(EExecCodeSegOpen); sl@0: } sl@0: sl@0: EXPORT_C __EXECDECL__ void E32Loader::CodeSegClose(TAny*) sl@0: { sl@0: SLOW_EXEC1(EExecCodeSegClose); sl@0: } sl@0: sl@0: EXPORT_C __EXECDECL__ void E32Loader::CodeSegNext(TAny*&, const TFindCodeSeg&) sl@0: { sl@0: SLOW_EXEC2(EExecCodeSegNext); sl@0: } sl@0: sl@0: EXPORT_C __EXECDECL__ void E32Loader::CodeSegInfo(TAny*, TCodeSegCreateInfo&) sl@0: { sl@0: SLOW_EXEC2(EExecCodeSegInfo); sl@0: } sl@0: sl@0: EXPORT_C __EXECDECL__ TInt E32Loader::CodeSegAddDependency(TAny*, TAny*) sl@0: { sl@0: SLOW_EXEC2(EExecCodeSegAddDependency); sl@0: } sl@0: sl@0: EXPORT_C __EXECDECL__ void E32Loader::CodeSegDeferDeletes() sl@0: { sl@0: SLOW_EXEC0(EExecCodeSegDeferDeletes); sl@0: } sl@0: sl@0: EXPORT_C __EXECDECL__ void E32Loader::CodeSegEndDeferDeletes() sl@0: { sl@0: SLOW_EXEC0(EExecCodeSegEndDeferDeletes); sl@0: } sl@0: sl@0: EXPORT_C __EXECDECL__ TInt E32Loader::ProcessCreate(TProcessCreateInfo&, const TDesC8*) sl@0: { sl@0: SLOW_EXEC2(EExecProcessCreate); sl@0: } sl@0: sl@0: EXPORT_C __EXECDECL__ TInt E32Loader::ProcessLoaded(TProcessCreateInfo&) sl@0: { sl@0: SLOW_EXEC1(EExecProcessLoaded); sl@0: } sl@0: sl@0: EXPORT_C __EXECDECL__ TInt E32Loader::CheckClientState(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecCheckLoaderClientState); sl@0: } sl@0: sl@0: EXPORT_C __EXECDECL__ TAny* E32Loader::ThreadProcessCodeSeg(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecThreadProcessCodeSeg); sl@0: } sl@0: sl@0: EXPORT_C __EXECDECL__ void E32Loader::ReadExportDir(TAny*, TLinAddr*) sl@0: { sl@0: SLOW_EXEC2(EExecCodeSegReadExportDir); sl@0: } sl@0: sl@0: __EXECDECL__ TInt E32Loader::WaitDllLock() sl@0: { sl@0: SLOW_EXEC0(EExecWaitDllLock); sl@0: } sl@0: sl@0: __EXECDECL__ TInt E32Loader::ReleaseDllLock() sl@0: { sl@0: SLOW_EXEC0(EExecReleaseDllLock); sl@0: } sl@0: sl@0: __EXECDECL__ TInt E32Loader::LibraryAttach(TInt, TInt&, TLinAddr*) sl@0: { sl@0: SLOW_EXEC3(EExecLibraryAttach); sl@0: } sl@0: sl@0: __EXECDECL__ TInt E32Loader::LibraryAttached(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecLibraryAttached); sl@0: } sl@0: sl@0: __EXECDECL__ TInt E32Loader::StaticCallList(TInt& /*aEntryPointCount*/, TLinAddr* /*aUnused*/) sl@0: { sl@0: SLOW_EXEC2(EExecStaticCallList); sl@0: //SL: We hijack this function for initializing our process see User::InitProcess sl@0: //aEntryPointCount=0; //Tell the caller we don't have any DLL entry point sl@0: //gProcess.CreateHeap(); sl@0: //return KErrNone; sl@0: } sl@0: sl@0: __EXECDECL__ TInt E32Loader::LibraryDetach(TInt&, TLinAddr*) sl@0: { sl@0: SLOW_EXEC2(EExecLibraryDetach); sl@0: } sl@0: sl@0: __EXECDECL__ TInt E32Loader::LibraryDetached() sl@0: { sl@0: SLOW_EXEC0(EExecLibraryDetached); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::LastThreadHandle() sl@0: { sl@0: SLOW_EXEC0(EExecLastThreadHandle); sl@0: //Not sure what to do with that returning 0 seams appropriate for now sl@0: //return 0; sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::ThreadRendezvous(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecThreadRendezvous); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::ProcessRendezvous(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecProcessRendezvous); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::MessageGetDesLength(TInt, TInt) sl@0: { sl@0: SLOW_EXEC2(EExecMessageGetDesLength); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::MessageGetDesMaxLength(TInt, TInt) sl@0: { sl@0: SLOW_EXEC2(EExecMessageGetDesMaxLength); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::MessageClient(TInt, TOwnerType) sl@0: { sl@0: SLOW_EXEC2(EExecMessageClient); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::MessageSetProcessPriority(TInt, TProcessPriority) sl@0: { sl@0: SLOW_EXEC2(EExecMessageSetProcessPriority); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::MessageConstructFromPtr(TInt, TAny*) sl@0: { sl@0: SLOW_EXEC2(EExecMessageConstructFromPtr); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::MessageKill(TInt, TExitType, TInt, const TDesC8*) sl@0: { sl@0: SLOW_EXEC4(EExecMessageKill); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::MessageOpenObject(TInt, TObjectType, TInt, TOwnerType) sl@0: { sl@0: SLOW_EXEC4(EExecMessageOpenObject); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::ProcessSecurityInfo(TInt, SSecurityInfo&) sl@0: { sl@0: SLOW_EXEC2(EExecProcessSecurityInfo); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::ThreadSecurityInfo(TInt, SSecurityInfo&) sl@0: { sl@0: SLOW_EXEC2(EExecThreadSecurityInfo); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::MessageSecurityInfo(TInt, SSecurityInfo&) sl@0: { sl@0: SLOW_EXEC2(EExecMessageSecurityInfo); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::CreatorSecurityInfo(SSecurityInfo&) sl@0: { sl@0: SLOW_EXEC1(EExecCreatorSecurityInfo); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::DisabledCapabilities(SCapabilitySet&) sl@0: { sl@0: SLOW_EXEC1(EExecDisabledCapabilities); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ChunkSetRestrictions(TInt, TUint) sl@0: { sl@0: SLOW_EXEC2(EExecChunkSetRestrictions); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::MsgQueueCreate(const TDesC8*, TInt, TInt, TOwnerType) sl@0: { sl@0: SLOW_EXEC4(EExecMsgQueueCreate); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::MsgQueueSend(TInt, const TAny*, TInt) sl@0: { sl@0: SLOW_EXEC3(EExecMsgQueueSend); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::MsgQueueReceive(TInt, TAny*, TInt) sl@0: { sl@0: SLOW_EXEC3(EExecMsgQueueReceive); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::MsgQueueNotifySpaceAvailable(TInt, TRequestStatus&) sl@0: { sl@0: SLOW_EXEC2(EExecMsgQueueNotifySpaceAvailable); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::MsgQueueCancelSpaceAvailable(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecMsgQueueCancelSpaceAvailable); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::MsgQueueNotifyDataAvailable(TInt, TRequestStatus&) sl@0: { sl@0: SLOW_EXEC2(EExecMsgQueueNotifyDataAvailable); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::MsgQueueCancelDataAvailable(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecMsgQueueCancelDataAvailable); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::MsgQueueSize(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecMsgQueueSize); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::PropertyDefine(TUint, TUint, TPropertyInfo*) sl@0: { sl@0: SLOW_EXEC3(EExecPropertyDefine); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::PropertyDelete(TUint, TUint) sl@0: { sl@0: SLOW_EXEC2(EExecPropertyDelete); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::PropertyAttach(TUint, TUint, TOwnerType) sl@0: { sl@0: SLOW_EXEC3(EExecPropertyAttach); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::PropertySubscribe(TInt, TRequestStatus*) sl@0: { sl@0: SLOW_EXEC2(EExecPropertySubscribe); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::PropertyCancel(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecPropertyCancel); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::PropertyGetI(TInt, TInt*) sl@0: { sl@0: SLOW_EXEC2(EExecPropertyGetI); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::PropertyGetB(TInt, TUint8*, TInt) sl@0: { sl@0: SLOW_EXEC3(EExecPropertyGetB); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::PropertySetI(TInt, TInt) sl@0: { sl@0: SLOW_EXEC2(EExecPropertySetI); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::PropertySetB(TInt, const TUint8*, TInt) sl@0: { sl@0: SLOW_EXEC3(EExecPropertySetB); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::PropertyFindGetI(TUint, TUint, TInt*) sl@0: { sl@0: SLOW_EXEC3(EExecPropertyFindGetI); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::PropertyFindGetB(TUint, TUint, TUint8*, TInt) sl@0: { sl@0: SLOW_EXEC4(EExecPropertyFindGetB); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::PropertyFindSetI(TUint, TUint, TInt) sl@0: { sl@0: SLOW_EXEC3(EExecPropertyFindSetI); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::PropertyFindSetB(TUint, TUint, TUint8*, TInt) sl@0: { sl@0: SLOW_EXEC4(EExecPropertyFindSetB); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::PowerEnableWakeupEvents(TPowerState) sl@0: { sl@0: SLOW_EXEC1(EExecPowerEnableWakeupEvents); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::PowerDisableWakeupEvents() sl@0: { sl@0: SLOW_EXEC0(EExecPowerDisableWakeupEvents); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::PowerRequestWakeupEventNotification(TRequestStatus*) sl@0: { sl@0: SLOW_EXEC1(EExecPowerRequestWakeupEventNotification); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::PowerCancelWakeupEventNotification() sl@0: { sl@0: SLOW_EXEC0(EExecPowerCancelWakeupEventNotification); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::PowerDown() sl@0: { sl@0: SLOW_EXEC0(EExecPowerDown); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ProcessSetHandleParameter(TInt, TInt, TInt) sl@0: { sl@0: SLOW_EXEC3(EExecProcessSetHandleParameter); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ProcessSetDataParameter(TInt, TInt, const TUint8*, TInt) sl@0: { sl@0: SLOW_EXEC4(EExecProcessSetDataParameter); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ProcessGetHandleParameter(TInt, TObjectType, TOwnerType) sl@0: { sl@0: SLOW_EXEC3(EExecProcessGetHandleParameter); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ProcessGetDataParameter(TInt, TUint8*, TInt) sl@0: { sl@0: SLOW_EXEC3(EExecProcessGetDataParameter); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ProcessDataParameterLength(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecProcessDataParameterLength); sl@0: } sl@0: sl@0: __EXECDECL__ TUint Exec::MessageClientProcessFlags(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecMessageClientProcessFlags); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ThreadStackInfo(TInt, TThreadStackInfo&) sl@0: { sl@0: SLOW_EXEC2(EExecThreadStackInfo); sl@0: } sl@0: sl@0: __EXECDECL__ RAllocator* Exec::ThreadGetHeap(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecThreadGetHeap); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ThreadAsProcess(TInt, TInt) sl@0: { sl@0: SLOW_EXEC2(EExecThreadAsProcess); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::CondVarCreate(const TDesC8*, TOwnerType) sl@0: { sl@0: SLOW_EXEC2(EExecCondVarCreate); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::CondVarWait(TInt, TInt, TInt) sl@0: { sl@0: SLOW_EXEC3(EExecCondVarWait); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::CondVarSignal(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecCondVarSignal); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::CondVarBroadcast(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecCondVarBroadcast); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::PlatSecDiagnostic(TPlatSecDiagnostic*) sl@0: { sl@0: SLOW_EXEC1(EExecPlatSecDiagnostic); sl@0: } sl@0: sl@0: __EXECDECL__ TLinAddr Exec::ExceptionDescriptor(TLinAddr) sl@0: { sl@0: SLOW_EXEC1(EExecExceptionDescriptor); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::ThreadRequestSignal(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecThreadRequestSignal); sl@0: //TODO: look our thread per handle sl@0: //gProcess.iThread.iRequestSemaphore.Signal(); sl@0: } sl@0: sl@0: __EXECDECL__ TBool Exec::MutexIsHeld(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecMutexIsHeld); sl@0: } sl@0: sl@0: __EXECDECL__ TTrapHandler* Exec::LeaveStart() sl@0: { sl@0: SLOW_EXEC0(EExecLeaveStart); sl@0: //return gProcess.iThread.iHandler; sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::LeaveEnd() sl@0: { sl@0: SLOW_EXEC0(EExecLeaveEnd); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::SetDebugMaskIndex(TUint32, TUint) sl@0: { sl@0: SLOW_EXEC2(EExecSetDebugMaskIndex); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::GetModuleNameFromAddress(TAny*, TDes8&) sl@0: { sl@0: SLOW_EXEC2(EExecGetModuleNameFromAddress); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::NotifyChanges(TUint) sl@0: { sl@0: SLOW_EXEC1(EExecNotifyChanges); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::SetGlobalUserData(TInt, TInt) sl@0: { sl@0: SLOW_EXEC2(EExecSetGlobalUserData); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::SessionSecurityInfo(TInt, SSecurityInfo&) sl@0: { sl@0: SLOW_EXEC2(EExecSessionSecurityInfo); sl@0: } sl@0: sl@0: __EXECDECL__ const TRequestStatus* Exec::MessageClientStatus(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecMessageClientStatus); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::SetFloatingPointMode(TFloatingPointMode, TFloatingPointRoundingMode) sl@0: { sl@0: SLOW_EXEC2(EExecSetFloatingPointMode); sl@0: } sl@0: sl@0: EXPORT_C __EXECDECL__ TBool BTrace::CheckFilter2(TUint32, TUint32) sl@0: { sl@0: SLOW_EXEC2(EExecCheckFilter2); sl@0: } sl@0: sl@0: __EXECDECL__ TAny* Exec::ProcessExeExportData() sl@0: { sl@0: SLOW_EXEC0(EExecProcessExeExportData); sl@0: } sl@0: sl@0: EXPORT_C __EXECDECL__ TInt E32Loader::NotifyIfCodeSegDestroyed(TRequestStatus&) sl@0: { sl@0: SLOW_EXEC1(EExecNotifyIfCodeSegDestroyed); sl@0: } sl@0: sl@0: EXPORT_C __EXECDECL__ TInt E32Loader::GetDestroyedCodeSegInfo(TCodeSegLoaderCookie&) sl@0: { sl@0: SLOW_EXEC1(EExecGetDestroyedCodeSegInfo); sl@0: } sl@0: sl@0: EXPORT_C __EXECDECL__ TInt Exec::SetWin32RuntimeHook(TAny*) sl@0: { sl@0: SLOW_EXEC1(EExecSetWin32RuntimeHook); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::GetBTraceId(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecGetBTraceId); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::NotifyOnIdle(TRequestStatus*) sl@0: { sl@0: SLOW_EXEC1(EExecNotifyOnIdle); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::CancelMiscNotifier(TRequestStatus*) sl@0: { sl@0: SLOW_EXEC1(EExecCancelMiscNotifier); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::NotifyObjectDestruction(TInt, TRequestStatus*) sl@0: { sl@0: SLOW_EXEC2(EExecNotifyObjectDestruction); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::RegisterTrustedChunk(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecRegisterTrustedChunk); sl@0: } sl@0: sl@0: /* sl@0: Notify the kernel a thread is exiting. sl@0: sl@0: @param Exit reason sl@0: @return ETrue if this is the last thread in the process, EFalse otherwise. sl@0: */ sl@0: __EXECDECL__ TBool Exec::UserThreadExiting(TInt aReason) sl@0: { sl@0: SLOW_EXEC1(EExecUserThreadExiting); sl@0: //gProcess.Free(); sl@0: //return ETrue; //No thread support ATM so we are always the last thread sl@0: } sl@0: sl@0: __EXECDECL__ TBool Exec::ChunkIsPaged(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecChunkIsPaged); sl@0: } sl@0: sl@0: __EXECDECL__ TBool Exec::ProcessDefaultDataPaged(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecProcessDefaultDataPaged); sl@0: } sl@0: sl@0: __EXECDECL__ TUint Exec::MessageClientThreadFlags(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecMessageClientThreadFlags); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ShPoolCreate(const TShPoolInfo&, TUint) sl@0: { sl@0: SLOW_EXEC2(EExecShPoolCreate); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ShPoolAlloc(TInt, TUint, SShBufBaseAndSize&) sl@0: { sl@0: SLOW_EXEC3(EExecShPoolAlloc); sl@0: } sl@0: sl@0: __EXECDECL__ void Exec::ShPoolGetInfo(TInt, TShPoolInfo&) sl@0: { sl@0: SLOW_EXEC2(EExecShPoolGetInfo); sl@0: } sl@0: sl@0: __EXECDECL__ TUint Exec::ShPoolFreeCount(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecShPoolFreeCount); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ShPoolNotification(TInt, TShPoolNotifyType, TUint, TRequestStatus&) sl@0: { sl@0: SLOW_EXEC4(EExecShPoolNotification); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ShPoolNotificationCancel(TInt, TShPoolNotifyType, TRequestStatus&) sl@0: { sl@0: SLOW_EXEC3(EExecShPoolNotificationCancel); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ShPoolBufferWindow(TInt, TInt, TBool) sl@0: { sl@0: SLOW_EXEC3(EExecShPoolBufferWindow); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ShBufMap(TInt, TBool, SShBufBaseAndSize&) sl@0: { sl@0: SLOW_EXEC3(EExecShBufMap); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ShBufUnMap(TInt) sl@0: { sl@0: SLOW_EXEC1(EExecShBufUnMap); sl@0: } sl@0: sl@0: __EXECDECL__ TInt Exec::ShBufBaseAndSize(TInt, SShBufBaseAndSize&) sl@0: { sl@0: SLOW_EXEC2(EExecShBufBaseAndSize); sl@0: } sl@0: sl@0: sl@0: sl@0: #endif sl@0: sl@0: