Update contrib.
1 // Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of the License "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
14 // e32\euser\epoc\win32\uc_exec.cpp
19 //#define __GEN_USER_EXEC_CODE__
21 #include "../win32/uc_std.h"
30 Symbian compatibility executive panics
34 ESymcExecPanicNotSupported,
35 ESymcExecPanicHeapAlreadyExists,
36 ESymcExecPanicCreateHeapFailed,
40 void Panic(TInt aReason)
42 _LIT(KCategory,"SYMC-Exec");
43 User::Panic(KCategory,aReason);
47 const TInt KTrapStackSize=256;
50 TODO: should we use CObject?
57 RSemaphore iRequestSemaphore;
58 CActiveScheduler* iActiveScheduler; //Current active scheduler for this thread. Used.
59 TTrapHandler* iHandler; //This is our cleanup stack. Used.
60 //No idea why we need that trap stack
61 //TTrap* iTrapStack[KTrapStackSize];
66 TODO: should we use CObject?
67 Object used to store process globals for our pseudo kernel.
68 That's typically going to be a singleton.
80 TThread iThread; //Single thread for now
84 void TProcess::CreateHeap()
86 //iThread.iTrapCount=0;
87 //Define the size of our heap
88 const TInt KHeapMaxSize=1024*1024*10; // 10 Mo for now
89 __ASSERT_ALWAYS(iAllocator==NULL && iBase==NULL,Panic(ESymcExecPanicHeapAlreadyExists));
90 iBase=malloc(KHeapMaxSize);
91 __ASSERT_ALWAYS(iBase!=NULL,Panic(ESymcExecPanicCreateHeapFailed));
92 //TODO: is there anyway we could use variable size heap?
93 iAllocator=UserHeap::FixedHeap(iBase,KHeapMaxSize);
94 __ASSERT_ALWAYS(iAllocator!=NULL,Panic(ESymcExecPanicCreateHeapFailed));
111 typedef TInt (__fastcall *TDispatcher)(TInt, TInt*);
112 TInt __fastcall LazyDispatch(TInt aFunction, TInt* aArgs);
114 #pragma data_seg(".data2")
116 #pragma bss_seg(".data2")
118 static TDispatcher TheDispatcher = &LazyDispatch;
124 TInt __fastcall LazyDispatch(TInt aFunction, TInt* aArgs)
126 //Panic(ESymcExecPanicNotSupported);
128 HINSTANCE kernel = GetModuleHandleA("ekern.exe");
131 TDispatcher dispatcher = (TDispatcher)Emulator::GetProcAddress(kernel, (LPCSTR)1);
134 TheDispatcher = dispatcher;
135 return dispatcher(aFunction, aArgs);
144 /******************************************************************************
145 * Slow executive calls with preprocessing or extra arguments
146 ******************************************************************************/
148 __NAKED__ TInt Exec::SessionSend(TInt /*aHandle*/, TInt /*aFunction*/, TAny* /*aPtr*/, TRequestStatus* /*aStatus*/)
150 // Send a blind message to the server.
153 __DISPATCH(EExecSessionSend|EXECUTIVE_SLOW)
156 __NAKED__ TInt Exec::SessionSendSync(TInt /*aHandle*/, TInt /*aFunction*/, TAny* /*aPtr*/, TRequestStatus* /*aStatus*/)
158 // Send a blind message to the server using thread's dedicated message slot.
161 __DISPATCH(EExecSessionSendSync|EXECUTIVE_SLOW)
165 __NAKED__ TInt Exec::MessageIpcCopy(TInt /*aHandle*/, TInt /*aParam*/, SIpcCopyInfo& /*aInfo*/, TInt /*anOffset*/)
167 // Perform a descriptor-to-descriptor IPC copy
171 __DISPATCH(EExecMessageIpcCopy|EXECUTIVE_SLOW)
174 __NAKED__ TInt Exec::BTraceOut(TUint32 /*a0*/, TUint32 /*a1*/, const BTrace::SExecExtension& /*aExtension*/, TInt /*aDataSize*/)
176 __DISPATCH(EExecBTraceOut|EXECUTIVE_SLOW)
179 __NAKED__ TInt Exec::BTraceOutBig(TUint32 /*a0*/, TUint32 /*a1*/, const BTrace::SExecExtension& /*aExtension*/, TInt /*aDataSize*/)
181 __DISPATCH(EExecBTraceOutBig|EXECUTIVE_SLOW)
184 __NAKED__ TInt Exec::UTraceOut(TUint32 /*a0*/, TUint32 /*a1*/, const BTrace::SExecExtension& /*aExtension*/, TInt /*aDataSize*/)
186 __DISPATCH(EExecUTraceOut|EXECUTIVE_SLOW)
189 EXPORT_C TBool BTrace::Out(TUint32 a0, TUint32 a1, TUint32 a2, TUint32 a3)
191 BTrace::SExecExtension ext;
194 ext.iPc = (&a0)[-1]; // return address on X86
195 return Exec::BTraceOut(a0,a1,ext,0);
198 EXPORT_C TBool BTrace::OutX(TUint32 a0, TUint32 a1, TUint32 a2, TUint32 a3)
200 BTrace::SExecExtension ext;
203 ext.iPc = (&a0)[-1]; // return address on X86
204 return Exec::BTraceOut(a0,a1,ext,0);
207 EXPORT_C TBool BTrace::OutN(TUint32 a0, TUint32 a1, TUint32 a2, const TAny* aData, TInt aDataSize)
209 BTrace::SExecExtension ext;
211 ext.iA3 = (TUint32)aData;
212 ext.iPc = (&a0)[-1]; // return address on X86
213 return Exec::BTraceOut(a0,a1,ext,aDataSize);
216 EXPORT_C TBool BTrace::OutNX(TUint32 a0, TUint32 a1, TUint32 a2, const TAny* aData, TInt aDataSize)
218 BTrace::SExecExtension ext;
220 ext.iA3 = (TUint32)aData;
221 ext.iPc = (&a0)[-1]; // return address on X86
222 return Exec::BTraceOut(a0,a1,ext,aDataSize);
225 EXPORT_C TBool BTrace::OutBig(TUint32 a0, TUint32 a1, const TAny* aData, TInt aDataSize)
227 BTrace::SExecExtension ext;
229 ext.iA3 = (TUint32)aData;
230 ext.iPc = (&a0)[-1]; // return address on X86
232 if((TUint)aDataSize>8u)
234 if((TUint)aDataSize>KMaxBTraceDataArray+4u)
235 return Exec::BTraceOutBig(a0,a1,ext,aDataSize);
238 ext.iA2 = *((TUint32*&)aData)++;
239 ext.iA3 = (TUint32)aData;
240 return Exec::BTraceOut(a0,a1,ext,aDataSize);
243 if((TUint)aDataSize>4u)
244 ext.iA3 = ((TUint32*)aData)[1];
246 ext.iA2 = ((TUint32*)aData)[0];
249 return Exec::BTraceOut(a0,a1,ext,aDataSize);
252 EXPORT_C TBool BTrace::OutFiltered(TUint32 a0, TUint32 a1, TUint32 a2, TUint32 a3)
254 BTrace::SExecExtension ext;
255 a0 |= EMissingRecord<<BTrace::EFlagsIndex*8; // overload meaning of this flag to indicate filtered trace
258 ext.iPc = (&a0)[-1]; // return address on X86
259 return Exec::BTraceOut(a0,a1,ext,0);
262 EXPORT_C TBool BTrace::OutFilteredX(TUint32 a0, TUint32 a1, TUint32 a2, TUint32 a3)
264 BTrace::SExecExtension ext;
265 a0 |= EMissingRecord<<BTrace::EFlagsIndex*8; // overload meaning of this flag to indicate filtered trace
268 ext.iPc = (&a0)[-1]; // return address on X86
269 return Exec::BTraceOut(a0,a1,ext,0);
272 EXPORT_C TBool BTrace::OutFilteredN(TUint32 a0, TUint32 a1, TUint32 a2, const TAny* aData, TInt aDataSize)
274 BTrace::SExecExtension ext;
275 a0 |= EMissingRecord<<BTrace::EFlagsIndex*8; // overload meaning of this flag to indicate filtered trace
277 ext.iA3 = (TUint32)aData;
278 ext.iPc = (&a0)[-1]; // return address on X86
279 return Exec::BTraceOut(a0,a1,ext,aDataSize);
282 EXPORT_C TBool BTrace::OutFilteredNX(TUint32 a0, TUint32 a1, TUint32 a2, const TAny* aData, TInt aDataSize)
284 BTrace::SExecExtension ext;
285 a0 |= EMissingRecord<<BTrace::EFlagsIndex*8; // overload meaning of this flag to indicate filtered trace
287 ext.iA3 = (TUint32)aData;
288 ext.iPc = (&a0)[-1]; // return address on X86
289 return Exec::BTraceOut(a0,a1,ext,aDataSize);
292 EXPORT_C TBool BTrace::OutFilteredBig(TUint32 a0, TUint32 a1, const TAny* aData, TInt aDataSize)
294 BTrace::SExecExtension ext;
295 a0 |= EMissingRecord<<BTrace::EFlagsIndex*8; // overload meaning of this flag to indicate filtered trace
297 ext.iA3 = (TUint32)aData;
298 ext.iPc = (&a0)[-1]; // return address on X86
300 if((TUint)aDataSize>8u)
302 if((TUint)aDataSize>KMaxBTraceDataArray+4u)
303 return Exec::BTraceOutBig(a0,a1,ext,aDataSize);
306 ext.iA2 = *((TUint32*&)aData)++;
307 ext.iA3 = (TUint32)aData;
308 return Exec::BTraceOut(a0,a1,ext,aDataSize);
311 if((TUint)aDataSize>4u)
312 ext.iA3 = ((TUint32*)aData)[1];
314 ext.iA2 = ((TUint32*)aData)[0];
317 return Exec::BTraceOut(a0,a1,ext,aDataSize);
320 EXPORT_C TBool BTrace::OutFilteredPcFormatBig(TUint32 aHeader, TUint32 aModuleUid, TUint32 aPc, TUint16 aFormatId, const TAny* aData, TInt aDataSize)
322 BTrace::SExecExtension ext;
323 aHeader |= EMissingRecord<<BTrace::EFlagsIndex*8; // overload meaning of this flag to indicate filtered trace
325 ext.iA3 = (TUint32)aData;
328 if((TUint)aDataSize>KMaxBTraceDataArray)
329 return Exec::UTraceOut(aHeader,aModuleUid,ext,aDataSize);
331 return Exec::BTraceOut(aHeader,aModuleUid,ext,aDataSize);
336 void ExecRequestComplete(TInt aHandle, TRequestStatus*& aStatus, TInt aReason)
338 //TODO: look up our thread per handle
340 gProcess.iThread.iRequestSemaphore.Signal();
344 __NAKED__ void ExecRequestComplete(TInt /*aHandle*/, TRequestStatus*& /*aStatus*/, TInt /*aReason*/)
346 _asm mov ecx, [esp+8] // ecx = TRequestStatus**
348 _asm lock xchg eax, [ecx] // eax=TRequestStatus*, zero TRequestStatus*
350 _asm je ExecRequestComplete_ret
351 _asm mov ecx, [esp+12] // ecx = aReason
352 _asm mov [eax], ecx // store aReason in request status
353 __DISPATCH(EExecThreadRequestSignal|EXECUTIVE_SLOW)
354 _asm ExecRequestComplete_ret: ret
359 EXPORT_C void RThread::RequestComplete(TRequestStatus*& aStatus, TInt aReason) const
361 Signals this thread that an asynchronous request originating from this thread,
364 The request is associated with the specified request status object supplied
367 Typically, the caller of this function is the service provider responsible
368 for satisfying the request made by this thread.
370 The request is completed with the completion code passed in aReason. This
371 value is copied into this thread's request status, *aStatus, before signalling
372 this thread's request semaphore.
374 The meaning of the completion code is a matter of convention to be decided
375 between the service provider and this thread.
377 In a client-server situation, completion of a request takes place in the context
378 of the server thread, but the pointer is interpreted in the address space
381 It is often the case in client-server situations that the client and the server
382 are in the same address space (i.e. the same process).
384 Setting the pointer to the request status to NULL is a convenience, not all
387 @param aStatus A reference to a pointer to the request status originally
388 supplied by this thread. This is a pointer into this thread's
389 address space, which may be different to the thread currently
390 executing (this code). On return, the pointer to the request
391 status is set to NULL.
393 @param aReason The completion code of this request.
396 ExecRequestComplete(iHandle,aStatus,aReason);
397 //SL: just change the status not the flag. We do that to please the active scheduler
398 //That's apparently the expected behavior
399 //aStatus->iStatus=aReason;
405 Signal this threads request semaphore.
407 This is similar to RThread::RequestComplete() except that no TRequestStatus object
410 May only be used to signal a thread in the same process as the callers.
412 @panic KERN-EXEC 46 if the thread is not in the same process as the callers
414 EXPORT_C void RThread::RequestSignal() const
416 Exec::ThreadRequestSignal(iHandle);
421 void ExitCurrentThread(TExitType aType, TInt aReason, const TDesC8* aCategory)
423 Exec::ThreadKill(KCurrentThreadHandle, aType, aReason, aCategory);
428 #ifndef __GEN_USER_EXEC_CODE__
432 __EXECDECL__ void Exec::WaitForAnyRequest()
434 FAST_EXEC0(EFastExecWaitForAnyRequest);
435 //gProcess.iThread.iRequestSemaphore.Wait();
438 __EXECDECL__ RAllocator* Exec::Heap()
440 FAST_EXEC0(EFastExecHeap);
441 //return gProcess.iAllocator;
444 __EXECDECL__ RAllocator* Exec::HeapSwitch(RAllocator*)
446 FAST_EXEC1(EFastExecHeapSwitch);
449 __EXECDECL__ TTrapHandler* Exec::PushTrapFrame(TTrap* aTrap)
451 //Panic(ESymcExecPanicNotUsed);
453 FAST_EXEC1(EFastExecPushTrapFrame);
454 //ASSERT(gProcess.iThread.iTrapCount<=KTrapStackSize);
455 //gProcess.iThread.iTrapStack[gProcess.iThread.iTrapCount++]=aTrap;
456 //return gProcess.iThread.iHandler;
459 __EXECDECL__ TTrap* Exec::PopTrapFrame()
461 //Panic(ESymcExecPanicNotUsed);
463 FAST_EXEC0(EFastExecPopTrapFrame);
464 //ASSERT(gProcess.iThread.iTrapCount>0);
465 //return gProcess.iThread.iTrapStack[gProcess.iThread.iTrapCount--];
468 __EXECDECL__ CActiveScheduler* Exec::ActiveScheduler()
470 FAST_EXEC0(EFastExecActiveScheduler);
471 //return gProcess.iThread.iActiveScheduler;
474 __EXECDECL__ void Exec::SetActiveScheduler(CActiveScheduler* aActiveScheduler)
476 FAST_EXEC1(EFastExecSetActiveScheduler);
477 //gProcess.iThread.iActiveScheduler=aActiveScheduler;
480 __EXECDECL__ TTimerLockSpec Exec::LockPeriod()
482 FAST_EXEC0(EFastExecLockPeriod);
485 __EXECDECL__ TTrapHandler* Exec::TrapHandler()
487 FAST_EXEC0(EFastExecTrapHandler);
488 //return gProcess.iThread.iHandler;
491 __EXECDECL__ TTrapHandler* Exec::SetTrapHandler(TTrapHandler* aHandler)
493 FAST_EXEC1(EFastExecSetTrapHandler);
494 //TTrapHandler* prev=gProcess.iThread.iHandler;
495 //gProcess.iThread.iHandler=aHandler;
499 __EXECDECL__ TUint32 Exec::DebugMask()
501 FAST_EXEC0(EFastExecDebugMask);
504 __EXECDECL__ TUint32 Exec::DebugMaskIndex(TUint)
506 FAST_EXEC1(EFastExecDebugMaskIndex);
509 __EXECDECL__ void Exec::SetDebugMask(TUint32)
511 FAST_EXEC1(EFastExecSetDebugMask);
514 __EXECDECL__ TUint32 Exec::FastCounter()
516 FAST_EXEC0(EFastExecFastCounter);
519 __EXECDECL__ TUint32 Exec::NTickCount()
521 FAST_EXEC0(EFastExecNTickCount);
524 EXPORT_C __EXECDECL__ void UserSvr::LockRamDrive()
526 FAST_EXEC0(EFastExecLockRamDrive);
529 EXPORT_C __EXECDECL__ void UserSvr::UnlockRamDrive()
531 FAST_EXEC0(EFastExecUnlockRamDrive);
534 EXPORT_C __EXECDECL__ TLinAddr UserSvr::RomHeaderAddress()
536 FAST_EXEC0(EFastExecRomHeaderAddress);
539 EXPORT_C __EXECDECL__ TLinAddr UserSvr::RomRootDirectoryAddress()
541 FAST_EXEC0(EFastExecRomRootDirectoryAddress);
544 __EXECDECL__ void Exec::SetReentryPoint(TLinAddr)
546 FAST_EXEC1(EFastExecSetReentryPoint);
549 __EXECDECL__ TUint32 Exec::KernelConfigFlags()
551 FAST_EXEC0(EFastExecKernelConfigFlags);
554 __EXECDECL__ TInt Exec::UTCOffset()
556 FAST_EXEC0(EFastExecUTCOffset);
559 __EXECDECL__ TInt Exec::GetGlobalUserData(TInt)
561 FAST_EXEC1(EFastExecGetGlobalUserData);
564 EXPORT_C __EXECDECL__ TBool BTrace::CheckFilter(TUint32)
566 FAST_EXEC1(EFastExecCheckFilter);
569 __EXECDECL__ TInt Exec::ObjectNext(TObjectType, TBuf8<KMaxFullName>&, TFindHandle&)
571 SLOW_EXEC3(EExecObjectNext);
574 __EXECDECL__ TUint8* Exec::ChunkBase(TInt)
576 SLOW_EXEC1(EExecChunkBase);
579 __EXECDECL__ TInt Exec::ChunkSize(TInt)
581 SLOW_EXEC1(EExecChunkSize);
584 __EXECDECL__ TInt Exec::ChunkMaxSize(TInt)
586 SLOW_EXEC1(EExecChunkMaxSize);
589 __EXECDECL__ TUint Exec::HandleAttributes(TInt)
591 SLOW_EXEC1(EExecHandleAttributes);
594 __EXECDECL__ TUint Exec::TickCount()
596 SLOW_EXEC0(EExecTickCount);
599 __EXECDECL__ void Exec::LogicalDeviceGetCaps(TInt, TDes8&)
601 SLOW_EXEC2(EExecLogicalDeviceGetCaps);
604 __EXECDECL__ TBool Exec::LogicalDeviceQueryVersionSupported(TInt, const TVersion&)
606 SLOW_EXEC2(EExecLogicalDeviceQueryVersionSupported);
609 __EXECDECL__ TBool Exec::LogicalDeviceIsAvailable(TInt, TInt, const TDesC8*, const TDesC8*)
611 SLOW_EXEC4(EExecLogicalDeviceIsAvailable);
614 EXPORT_C __EXECDECL__ TInt E32Loader::LocaleExports(TAny*, TLibraryFunction*)
616 SLOW_EXEC2(EExecLocaleExports);
619 __EXECDECL__ TInt Exec::ChannelRequest(TInt, TInt, TAny*, TAny*)
621 SLOW_EXEC4(EExecChannelRequest);
624 __EXECDECL__ TUint32 Exec::MathRandom()
626 SLOW_EXEC0(EExecMathRandom);
629 __EXECDECL__ void Exec::IMB_Range(TAny*, TUint)
631 SLOW_EXEC2(EExecIMBRange);
634 __EXECDECL__ TInt Exec::ResetMachine(TMachineStartupType)
636 SLOW_EXEC1(EExecResetMachine);
639 __EXECDECL__ TLibraryFunction Exec::LibraryLookup(TInt, TInt)
641 SLOW_EXEC2(EExecLibraryLookup);
644 __EXECDECL__ void Exec::LibraryFileName(TInt, TDes8&)
646 SLOW_EXEC2(EExecLibraryFileName);
649 EXPORT_C __EXECDECL__ TInt UserSvr::ExecuteInSupervisorMode(TSupervisorFunction, TAny*)
651 SLOW_EXEC2(EExecExecuteInSupervisorMode);
654 __EXECDECL__ void Exec::MutexWait(TInt)
656 SLOW_EXEC1(EExecMutexWait);
659 __EXECDECL__ void Exec::MutexSignal(TInt)
661 SLOW_EXEC1(EExecMutexSignal);
664 __EXECDECL__ TInt Exec::ProcessId(TInt)
666 SLOW_EXEC1(EExecProcessId);
669 __EXECDECL__ void Exec::DllFileName(TInt, TDes8&)
671 SLOW_EXEC2(EExecDllFileName);
674 __EXECDECL__ void Exec::ProcessResume(TInt)
676 SLOW_EXEC1(EExecProcessResume);
679 __EXECDECL__ void Exec::ProcessFileName(TInt, TDes8&)
681 SLOW_EXEC2(EExecProcessFileName);
684 __EXECDECL__ void Exec::ProcessCommandLine(TInt, TDes8&)
686 SLOW_EXEC2(EExecProcessCommandLine);
689 __EXECDECL__ TExitType Exec::ProcessExitType(TInt)
691 SLOW_EXEC1(EExecProcessExitType);
694 __EXECDECL__ TInt Exec::ProcessExitReason(TInt)
696 SLOW_EXEC1(EExecProcessExitReason);
699 __EXECDECL__ void Exec::ProcessExitCategory(TInt, TDes8&)
701 SLOW_EXEC2(EExecProcessExitCategory);
704 __EXECDECL__ TProcessPriority Exec::ProcessPriority(TInt)
706 SLOW_EXEC1(EExecProcessPriority);
709 __EXECDECL__ TInt Exec::ProcessSetPriority(TInt, TProcessPriority)
711 SLOW_EXEC2(EExecProcessSetPriority);
714 __EXECDECL__ TUint Exec::ProcessFlags(TInt)
716 SLOW_EXEC1(EExecProcessFlags);
719 __EXECDECL__ void Exec::ProcessSetFlags(TInt, TUint, TUint)
721 SLOW_EXEC3(EExecProcessSetFlags);
724 __EXECDECL__ TInt Exec::SemaphoreWait(TInt aHandle, TInt aTimeout)
726 SLOW_EXEC2(EExecSemaphoreWait);
729 DWORD dwMilliseconds=INFINITE;
730 if (aTimeout!=0) //0 means infinite apparently on symbian
732 //Timeout is not infinite convert it from micro to milliseconds
733 dwMilliseconds=aTimeout/1000;
737 WaitForSingleObject((HANDLE)aHandle,dwMilliseconds);
739 #error "Platform not supported"
742 //Returned value is not even checked in RSemaphore::Wait
747 __EXECDECL__ void Exec::SemaphoreSignal1(TInt aHandle)
751 ReleaseSemaphore((HANDLE)aHandle,1,NULL);
753 #error "Platform not supported"
756 SLOW_EXEC1(EExecSemaphoreSignal1);
759 __EXECDECL__ void Exec::SemaphoreSignalN(TInt aHandle, TInt aCount)
763 ReleaseSemaphore((HANDLE)aHandle,aCount,NULL);
765 #error "Platform not supported"
768 SLOW_EXEC2(EExecSemaphoreSignalN);
771 __EXECDECL__ void Exec::ServerReceive(TInt, TRequestStatus&, TAny*)
773 SLOW_EXEC3(EExecServerReceive);
776 __EXECDECL__ void Exec::ServerCancel(TInt)
778 SLOW_EXEC1(EExecServerCancel);
781 __EXECDECL__ void Exec::SetSessionPtr(TInt, const TAny*)
783 SLOW_EXEC2(EExecSetSessionPtr);
786 __EXECDECL__ TInt Exec::ThreadId(TInt)
788 SLOW_EXEC1(EExecThreadId);
791 __EXECDECL__ TInt Exec::SessionShare(TInt&, TInt)
793 SLOW_EXEC2(EExecSessionShare);
796 __EXECDECL__ void Exec::ThreadResume(TInt)
798 SLOW_EXEC1(EExecThreadResume);
801 __EXECDECL__ void Exec::ThreadSuspend(TInt)
803 SLOW_EXEC1(EExecThreadSuspend);
806 __EXECDECL__ TThreadPriority Exec::ThreadPriority(TInt)
808 SLOW_EXEC1(EExecThreadPriority);
811 __EXECDECL__ void Exec::ThreadSetPriority(TInt, TThreadPriority)
813 SLOW_EXEC2(EExecThreadSetPriority);
816 __EXECDECL__ TProcessPriority Exec::ThreadProcessPriority(TInt)
818 SLOW_EXEC1(EExecThreadProcessPriority);
821 __EXECDECL__ void Exec::ThreadSetProcessPriority(TInt, TProcessPriority)
823 SLOW_EXEC2(EExecThreadSetProcessPriority);
826 __EXECDECL__ TUint Exec::ThreadFlags(TInt)
828 SLOW_EXEC1(EExecThreadFlags);
831 __EXECDECL__ void Exec::ThreadSetFlags(TInt, TUint, TUint)
833 SLOW_EXEC3(EExecThreadSetFlags);
836 __EXECDECL__ TInt Exec::ThreadRequestCount(TInt)
838 SLOW_EXEC1(EExecThreadRequestCount);
841 __EXECDECL__ TExitType Exec::ThreadExitType(TInt)
843 SLOW_EXEC1(EExecThreadExitType);
846 __EXECDECL__ TInt Exec::ThreadExitReason(TInt)
848 SLOW_EXEC1(EExecThreadExitReason);
851 __EXECDECL__ void Exec::ThreadExitCategory(TInt, TDes8&)
853 SLOW_EXEC2(EExecThreadExitCategory);
856 __EXECDECL__ void Exec::TimerCancel(TInt)
858 SLOW_EXEC1(EExecTimerCancel);
861 __EXECDECL__ void Exec::TimerAfter(TInt, TRequestStatus&, TInt)
863 SLOW_EXEC3(EExecTimerAfter);
866 __EXECDECL__ void Exec::TimerAt(TInt, TRequestStatus&, TUint32, TUint32)
868 SLOW_EXEC4(EExecTimerAt);
871 __EXECDECL__ void Exec::TimerLock(TInt, TRequestStatus&, TTimerLockSpec)
873 SLOW_EXEC3(EExecTimerLock);
876 __EXECDECL__ TInt Exec::ChangeNotifierLogon(TInt, TRequestStatus&)
878 SLOW_EXEC2(EExecChangeNotifierLogon);
881 __EXECDECL__ TInt Exec::ChangeNotifierLogoff(TInt)
883 SLOW_EXEC1(EExecChangeNotifierLogoff);
886 __EXECDECL__ void Exec::RequestSignal(TInt)
888 SLOW_EXEC1(EExecRequestSignal);
891 __EXECDECL__ void Exec::HandleName(TInt, TDes8&)
893 SLOW_EXEC2(EExecHandleName);
896 __EXECDECL__ void Exec::HandleFullName(TInt, TDes8&)
898 SLOW_EXEC2(EExecHandleFullName);
901 __EXECDECL__ void Exec::HandleInfo(TInt, THandleInfo*)
903 SLOW_EXEC2(EExecHandleInfo);
906 __EXECDECL__ void Exec::HandleCount(TInt, TInt&, TInt&)
908 SLOW_EXEC3(EExecHandleCount);
911 __EXECDECL__ void Exec::After(TInt, TRequestStatus&)
913 SLOW_EXEC2(EExecAfter);
916 __EXECDECL__ void Exec::At(const EXEC_TIME&, TRequestStatus&)
921 __EXECDECL__ void Exec::MessageComplete(TInt, TInt)
923 SLOW_EXEC2(EExecMessageComplete);
926 __EXECDECL__ void Exec::MessageCompleteWithHandle(TInt, TInt)
928 SLOW_EXEC2(EExecMessageCompleteWithHandle);
931 __EXECDECL__ void Exec::TransferSession(TInt, TInt)
933 SLOW_EXEC2(EExecTransferSession);
936 __EXECDECL__ TInt Exec::TimeNow(EXEC_TIME&, TInt&)
938 SLOW_EXEC2(EExecTimeNow);
941 __EXECDECL__ TInt Exec::TimeNowSecure(EXEC_TIME&, TInt&)
943 SLOW_EXEC2(EExecTimeNowSecure);
946 __EXECDECL__ TInt Exec::SetUTCTimeAndOffset(const EXEC_TIME&, TInt, TUint, TUint)
948 SLOW_EXEC4(EExecSetUTCTimeAndOffset);
951 __EXECDECL__ TInt Exec::SetMachineConfiguration(const TDesC8&)
953 SLOW_EXEC1(EExecSetMachineConfiguration);
956 __EXECDECL__ void Exec::CaptureEventHook()
958 SLOW_EXEC0(EExecCaptureEventHook);
961 __EXECDECL__ void Exec::ReleaseEventHook()
963 SLOW_EXEC0(EExecReleaseEventHook);
966 __EXECDECL__ void Exec::RequestEvent(TRawEventBuf&, TRequestStatus&)
968 SLOW_EXEC2(EExecRequestEvent);
971 __EXECDECL__ void Exec::RequestEventCancel()
973 SLOW_EXEC0(EExecRequestEventCancel);
976 __EXECDECL__ TInt Exec::AddEvent(const TRawEvent&)
978 SLOW_EXEC1(EExecAddEvent);
981 __EXECDECL__ TAny* Exec::DllTls(TInt aHandle, TInt aDllUid)
983 SLOW_EXEC2(EExecDllTls);
985 if (aHandle==-1 && aDllUid==-1)
987 //No TGlobalDestructorFunc ATM
992 //No sure what to do here
998 __EXECDECL__ TInt Exec::HalFunction(TInt, TInt, TAny*, TAny*)
1000 SLOW_EXEC4(EExecHalFunction);
1003 __EXECDECL__ void Exec::WsRegisterThread()
1005 SLOW_EXEC0(EExecWsRegisterThread);
1008 __EXECDECL__ void Exec::FsRegisterThread()
1010 SLOW_EXEC0(EExecFsRegisterThread);
1013 __EXECDECL__ TInt Exec::ProcessCommandLineLength(TInt)
1015 SLOW_EXEC1(EExecProcessCommandLineLength);
1018 __EXECDECL__ void Exec::TimerInactivity(TInt, TRequestStatus&, TInt)
1020 SLOW_EXEC3(EExecTimerInactivity);
1023 __EXECDECL__ TInt Exec::UserInactivityTime()
1025 SLOW_EXEC0(EExecUserInactivityTime);
1028 __EXECDECL__ void Exec::ResetInactivityTime()
1030 SLOW_EXEC0(EExecResetInactivityTime);
1033 __EXECDECL__ void Exec::DebugPrint(TAny*, TInt)
1035 SLOW_EXEC2(EExecDebugPrint);
1038 __EXECDECL__ TInt Exec::BreakPoint()
1040 SLOW_EXEC0(EExecBreakPoint);
1043 __EXECDECL__ TInt Exec::ProfileStart(TInt)
1045 SLOW_EXEC1(EExecProfileStart);
1048 __EXECDECL__ TInt Exec::ProfileEnd(TInt)
1050 SLOW_EXEC1(EExecProfileEnd);
1053 __EXECDECL__ TExceptionHandler Exec::ExceptionHandler(TInt)
1055 SLOW_EXEC1(EExecExceptionHandler);
1058 __EXECDECL__ TInt Exec::SetExceptionHandler(TInt, TExceptionHandler, TUint32)
1060 SLOW_EXEC3(EExecSetExceptionHandler);
1063 __EXECDECL__ void Exec::ModifyExceptionMask(TInt, TUint32, TUint32)
1065 SLOW_EXEC3(EExecModifyExceptionMask);
1068 __EXECDECL__ TInt Exec::RaiseException(TInt, TExcType)
1070 SLOW_EXEC2(EExecRaiseException);
1073 __EXECDECL__ TInt Exec::IsExceptionHandled(TInt, TExcType, TBool)
1075 SLOW_EXEC3(EExecIsExceptionHandled);
1078 __EXECDECL__ TInt Exec::ProcessGetMemoryInfo(TInt, TModuleMemoryInfo&)
1080 SLOW_EXEC2(EExecProcessGetMemoryInfo);
1083 __EXECDECL__ TInt Exec::LibraryGetMemoryInfo(TInt, TModuleMemoryInfo&)
1085 SLOW_EXEC2(EExecLibraryGetMemoryInfo);
1088 __EXECDECL__ TInt Exec::MachineConfiguration(TDes8&, TInt&)
1090 SLOW_EXEC2(EExecMachineConfiguration);
1093 __EXECDECL__ TInt Exec::SetMemoryThresholds(TInt, TInt)
1095 SLOW_EXEC2(EExecSetMemoryThresholds);
1098 __EXECDECL__ void Exec::LibraryType(TInt, TUidType&)
1100 SLOW_EXEC2(EExecLibraryType);
1103 __EXECDECL__ void Exec::ProcessType(TInt, TUidType&)
1105 SLOW_EXEC2(EExecProcessType);
1108 __EXECDECL__ TInt Exec::ChunkBottom(TInt)
1110 SLOW_EXEC1(EExecChunkBottom);
1113 __EXECDECL__ TInt Exec::ChunkTop(TInt)
1115 SLOW_EXEC1(EExecChunkTop);
1118 __EXECDECL__ void Exec::ThreadContext(TInt, TDes8&)
1120 SLOW_EXEC2(EExecThreadContext);
1123 __EXECDECL__ TInt Exec::ThreadCreate(const TDesC8&, TOwnerType, SThreadCreateInfo8&)
1125 SLOW_EXEC3(EExecThreadCreate);
1128 __EXECDECL__ TInt Exec::FindHandleOpen(TOwnerType, const TFindHandle&)
1130 SLOW_EXEC2(EExecFindHandleOpen);
1133 __EXECDECL__ TInt Exec::HandleClose(TInt)
1135 SLOW_EXEC1(EExecHandleClose);
1138 __EXECDECL__ TInt Exec::ChunkCreate(TOwnerType, const TDesC8*, TChunkCreate&)
1140 SLOW_EXEC3(EExecChunkCreate);
1143 __EXECDECL__ TInt Exec::ChunkAdjust(TInt, TInt, TInt, TInt)
1145 SLOW_EXEC4(EExecChunkAdjust);
1148 __EXECDECL__ TInt Exec::OpenObject(TObjectType, const TDesC8&, TOwnerType)
1150 SLOW_EXEC3(EExecOpenObject);
1153 __EXECDECL__ TInt Exec::HandleDuplicate(TInt, TOwnerType, TInt&)
1155 SLOW_EXEC3(EExecHandleDuplicate);
1158 __EXECDECL__ TInt Exec::MutexCreate(const TDesC8*, TOwnerType)
1160 SLOW_EXEC2(EExecMutexCreate);
1163 __EXECDECL__ TInt Exec::SemaphoreCreate(const TDesC8* aName, TInt aCount, TOwnerType aType)
1165 //__asm lea edx, [esp + 0x4]
1166 //__asm mov ecx, (EExecSemaphoreCreate)
1167 //__asm jmp [TheDispatcher]
1169 SLOW_EXEC3(EExecSemaphoreCreate);
1173 HANDLE semaphore = CreateSemaphore(
1174 NULL, // default security attributes
1177 //TODO: use the name
1178 NULL); // unnamed mutex
1183 return (TInt)semaphore;
1189 //TODO: pthread implementation
1190 Panic(ESymcExecPanicNotSupported);
1195 __EXECDECL__ TInt Exec::ThreadOpenById(TUint, TOwnerType)
1197 SLOW_EXEC2(EExecThreadOpenById);
1200 __EXECDECL__ TInt Exec::ProcessOpenById(TUint, TOwnerType)
1202 SLOW_EXEC2(EExecProcessOpenById);
1205 __EXECDECL__ void Exec::ThreadKill(TInt aThreadHandle, TExitType aType, TInt aReason, const TDesC8* aCategory)
1207 SLOW_EXEC4(EExecThreadKill);
1209 if (aThreadHandle!=KCurrentThreadHandle)
1211 //Not sure how to do that yet
1216 if (aType==EExitPanic)
1221 buf.Copy(*aCategory);
1222 char errstr[256]; sprintf(errstr, "Category: %s\nReason: %d",buf.PtrZ(),aReason);
1223 MessageBoxA(NULL,errstr, "PANIC", MB_OK | MB_ICONERROR);
1232 __EXECDECL__ void Exec::ThreadLogon(TInt, TRequestStatus*, TBool)
1234 SLOW_EXEC3(EExecThreadLogon);
1237 __EXECDECL__ TInt Exec::ThreadLogonCancel(TInt, TRequestStatus*, TBool)
1239 SLOW_EXEC3(EExecThreadLogonCancel);
1242 __EXECDECL__ TInt Exec::DllSetTls(TInt, TInt, TAny*)
1244 SLOW_EXEC3(EExecDllSetTls);
1247 __EXECDECL__ void Exec::DllFreeTls(TInt)
1249 SLOW_EXEC1(EExecDllFreeTls);
1252 __EXECDECL__ TInt Exec::ThreadRename(TInt, const TDesC8&)
1254 SLOW_EXEC2(EExecThreadRename);
1257 __EXECDECL__ TInt Exec::ProcessRename(TInt, const TDesC8&)
1259 SLOW_EXEC2(EExecProcessRename);
1262 __EXECDECL__ void Exec::ProcessKill(TInt, TExitType, TInt, const TDesC8*)
1264 SLOW_EXEC4(EExecProcessKill);
1267 __EXECDECL__ void Exec::ProcessLogon(TInt, TRequestStatus*, TBool)
1269 SLOW_EXEC3(EExecProcessLogon);
1272 __EXECDECL__ TInt Exec::ProcessLogonCancel(TInt, TRequestStatus*, TBool)
1274 SLOW_EXEC3(EExecProcessLogonCancel);
1277 __EXECDECL__ TInt Exec::ThreadProcess(TInt)
1279 SLOW_EXEC1(EExecThreadProcess);
1282 __EXECDECL__ TInt Exec::ServerCreate(const TDesC8*, TInt)
1284 SLOW_EXEC2(EExecServerCreate);
1287 __EXECDECL__ TInt Exec::ServerCreateWithOptions(const TDesC8*, TInt, TInt, TInt)
1289 SLOW_EXEC4(EExecServerCreateWithOptions);
1292 __EXECDECL__ TInt Exec::SessionCreate(const TDesC8&, TInt, const TSecurityPolicy*, TInt)
1294 SLOW_EXEC4(EExecSessionCreate);
1297 __EXECDECL__ TInt Exec::SessionCreateFromHandle(TInt, TInt, const TSecurityPolicy*, TInt)
1299 SLOW_EXEC4(EExecSessionCreateFromHandle);
1302 EXPORT_C __EXECDECL__ TInt E32Loader::DeviceLoad(TAny*, TInt)
1304 SLOW_EXEC2(EExecDeviceLoad);
1307 __EXECDECL__ TInt Exec::DeviceFree(const TDesC8&, TInt)
1309 SLOW_EXEC2(EExecDeviceFree);
1312 __EXECDECL__ TInt Exec::ChannelCreate(const TDesC8&, TChannelCreateInfo8&, TInt)
1314 SLOW_EXEC3(EExecChannelCreate);
1317 __EXECDECL__ TInt Exec::TimerCreate()
1319 SLOW_EXEC0(EExecTimerCreate);
1322 __EXECDECL__ void Exec::TimerHighRes(TInt, TRequestStatus&, TInt)
1324 SLOW_EXEC3(EExecTimerHighRes);
1327 __EXECDECL__ void Exec::AfterHighRes(TInt, TRequestStatus&)
1329 SLOW_EXEC2(EExecAfterHighRes);
1332 __EXECDECL__ TInt Exec::ChangeNotifierCreate(TOwnerType)
1334 SLOW_EXEC1(EExecChangeNotifierCreate);
1337 __EXECDECL__ TInt Exec::UndertakerCreate(TOwnerType)
1339 SLOW_EXEC1(EExecUndertakerCreate);
1342 __EXECDECL__ TInt Exec::UndertakerLogon(TInt, TRequestStatus&, TInt&)
1344 SLOW_EXEC3(EExecUndertakerLogon);
1347 __EXECDECL__ TInt Exec::UndertakerLogonCancel(TInt)
1349 SLOW_EXEC1(EExecUndertakerLogonCancel);
1352 __EXECDECL__ void Exec::KernelHeapDebug(TInt, TInt, TAny*)
1354 SLOW_EXEC3(EExecKernelHeapDebug);
1357 __EXECDECL__ TInt Exec::ThreadGetCpuTime(TInt, EXEC_INT64&)
1359 SLOW_EXEC2(EExecThreadGetCpuTime);
1362 EXPORT_C __EXECDECL__ TInt E32Loader::CodeSegCreate(TCodeSegCreateInfo&)
1364 SLOW_EXEC1(EExecCodeSegCreate);
1367 EXPORT_C __EXECDECL__ TInt E32Loader::CodeSegLoaded(TCodeSegCreateInfo&)
1369 SLOW_EXEC1(EExecCodeSegLoaded);
1372 EXPORT_C __EXECDECL__ TInt E32Loader::LibraryCreate(TLibraryCreateInfo&)
1374 SLOW_EXEC1(EExecLibraryCreate);
1377 EXPORT_C __EXECDECL__ TInt E32Loader::CodeSegOpen(TAny*, TInt)
1379 SLOW_EXEC2(EExecCodeSegOpen);
1382 EXPORT_C __EXECDECL__ void E32Loader::CodeSegClose(TAny*)
1384 SLOW_EXEC1(EExecCodeSegClose);
1387 EXPORT_C __EXECDECL__ void E32Loader::CodeSegNext(TAny*&, const TFindCodeSeg&)
1389 SLOW_EXEC2(EExecCodeSegNext);
1392 EXPORT_C __EXECDECL__ void E32Loader::CodeSegInfo(TAny*, TCodeSegCreateInfo&)
1394 SLOW_EXEC2(EExecCodeSegInfo);
1397 EXPORT_C __EXECDECL__ TInt E32Loader::CodeSegAddDependency(TAny*, TAny*)
1399 SLOW_EXEC2(EExecCodeSegAddDependency);
1402 EXPORT_C __EXECDECL__ void E32Loader::CodeSegDeferDeletes()
1404 SLOW_EXEC0(EExecCodeSegDeferDeletes);
1407 EXPORT_C __EXECDECL__ void E32Loader::CodeSegEndDeferDeletes()
1409 SLOW_EXEC0(EExecCodeSegEndDeferDeletes);
1412 EXPORT_C __EXECDECL__ TInt E32Loader::ProcessCreate(TProcessCreateInfo&, const TDesC8*)
1414 SLOW_EXEC2(EExecProcessCreate);
1417 EXPORT_C __EXECDECL__ TInt E32Loader::ProcessLoaded(TProcessCreateInfo&)
1419 SLOW_EXEC1(EExecProcessLoaded);
1422 EXPORT_C __EXECDECL__ TInt E32Loader::CheckClientState(TInt)
1424 SLOW_EXEC1(EExecCheckLoaderClientState);
1427 EXPORT_C __EXECDECL__ TAny* E32Loader::ThreadProcessCodeSeg(TInt)
1429 SLOW_EXEC1(EExecThreadProcessCodeSeg);
1432 EXPORT_C __EXECDECL__ void E32Loader::ReadExportDir(TAny*, TLinAddr*)
1434 SLOW_EXEC2(EExecCodeSegReadExportDir);
1437 __EXECDECL__ TInt E32Loader::WaitDllLock()
1439 SLOW_EXEC0(EExecWaitDllLock);
1442 __EXECDECL__ TInt E32Loader::ReleaseDllLock()
1444 SLOW_EXEC0(EExecReleaseDllLock);
1447 __EXECDECL__ TInt E32Loader::LibraryAttach(TInt, TInt&, TLinAddr*)
1449 SLOW_EXEC3(EExecLibraryAttach);
1452 __EXECDECL__ TInt E32Loader::LibraryAttached(TInt)
1454 SLOW_EXEC1(EExecLibraryAttached);
1457 __EXECDECL__ TInt E32Loader::StaticCallList(TInt& /*aEntryPointCount*/, TLinAddr* /*aUnused*/)
1459 SLOW_EXEC2(EExecStaticCallList);
1460 //SL: We hijack this function for initializing our process see User::InitProcess
1461 //aEntryPointCount=0; //Tell the caller we don't have any DLL entry point
1462 //gProcess.CreateHeap();
1466 __EXECDECL__ TInt E32Loader::LibraryDetach(TInt&, TLinAddr*)
1468 SLOW_EXEC2(EExecLibraryDetach);
1471 __EXECDECL__ TInt E32Loader::LibraryDetached()
1473 SLOW_EXEC0(EExecLibraryDetached);
1476 __EXECDECL__ TInt Exec::LastThreadHandle()
1478 SLOW_EXEC0(EExecLastThreadHandle);
1479 //Not sure what to do with that returning 0 seams appropriate for now
1483 __EXECDECL__ void Exec::ThreadRendezvous(TInt)
1485 SLOW_EXEC1(EExecThreadRendezvous);
1488 __EXECDECL__ void Exec::ProcessRendezvous(TInt)
1490 SLOW_EXEC1(EExecProcessRendezvous);
1493 __EXECDECL__ TInt Exec::MessageGetDesLength(TInt, TInt)
1495 SLOW_EXEC2(EExecMessageGetDesLength);
1498 __EXECDECL__ TInt Exec::MessageGetDesMaxLength(TInt, TInt)
1500 SLOW_EXEC2(EExecMessageGetDesMaxLength);
1503 __EXECDECL__ TInt Exec::MessageClient(TInt, TOwnerType)
1505 SLOW_EXEC2(EExecMessageClient);
1508 __EXECDECL__ TInt Exec::MessageSetProcessPriority(TInt, TProcessPriority)
1510 SLOW_EXEC2(EExecMessageSetProcessPriority);
1513 __EXECDECL__ void Exec::MessageConstructFromPtr(TInt, TAny*)
1515 SLOW_EXEC2(EExecMessageConstructFromPtr);
1518 __EXECDECL__ void Exec::MessageKill(TInt, TExitType, TInt, const TDesC8*)
1520 SLOW_EXEC4(EExecMessageKill);
1523 __EXECDECL__ TInt Exec::MessageOpenObject(TInt, TObjectType, TInt, TOwnerType)
1525 SLOW_EXEC4(EExecMessageOpenObject);
1528 __EXECDECL__ void Exec::ProcessSecurityInfo(TInt, SSecurityInfo&)
1530 SLOW_EXEC2(EExecProcessSecurityInfo);
1533 __EXECDECL__ void Exec::ThreadSecurityInfo(TInt, SSecurityInfo&)
1535 SLOW_EXEC2(EExecThreadSecurityInfo);
1538 __EXECDECL__ void Exec::MessageSecurityInfo(TInt, SSecurityInfo&)
1540 SLOW_EXEC2(EExecMessageSecurityInfo);
1543 __EXECDECL__ void Exec::CreatorSecurityInfo(SSecurityInfo&)
1545 SLOW_EXEC1(EExecCreatorSecurityInfo);
1548 __EXECDECL__ void Exec::DisabledCapabilities(SCapabilitySet&)
1550 SLOW_EXEC1(EExecDisabledCapabilities);
1553 __EXECDECL__ TInt Exec::ChunkSetRestrictions(TInt, TUint)
1555 SLOW_EXEC2(EExecChunkSetRestrictions);
1558 __EXECDECL__ TInt Exec::MsgQueueCreate(const TDesC8*, TInt, TInt, TOwnerType)
1560 SLOW_EXEC4(EExecMsgQueueCreate);
1563 __EXECDECL__ TInt Exec::MsgQueueSend(TInt, const TAny*, TInt)
1565 SLOW_EXEC3(EExecMsgQueueSend);
1568 __EXECDECL__ TInt Exec::MsgQueueReceive(TInt, TAny*, TInt)
1570 SLOW_EXEC3(EExecMsgQueueReceive);
1573 __EXECDECL__ void Exec::MsgQueueNotifySpaceAvailable(TInt, TRequestStatus&)
1575 SLOW_EXEC2(EExecMsgQueueNotifySpaceAvailable);
1578 __EXECDECL__ void Exec::MsgQueueCancelSpaceAvailable(TInt)
1580 SLOW_EXEC1(EExecMsgQueueCancelSpaceAvailable);
1583 __EXECDECL__ void Exec::MsgQueueNotifyDataAvailable(TInt, TRequestStatus&)
1585 SLOW_EXEC2(EExecMsgQueueNotifyDataAvailable);
1588 __EXECDECL__ void Exec::MsgQueueCancelDataAvailable(TInt)
1590 SLOW_EXEC1(EExecMsgQueueCancelDataAvailable);
1593 __EXECDECL__ TInt Exec::MsgQueueSize(TInt)
1595 SLOW_EXEC1(EExecMsgQueueSize);
1598 __EXECDECL__ TInt Exec::PropertyDefine(TUint, TUint, TPropertyInfo*)
1600 SLOW_EXEC3(EExecPropertyDefine);
1603 __EXECDECL__ TInt Exec::PropertyDelete(TUint, TUint)
1605 SLOW_EXEC2(EExecPropertyDelete);
1608 __EXECDECL__ TInt Exec::PropertyAttach(TUint, TUint, TOwnerType)
1610 SLOW_EXEC3(EExecPropertyAttach);
1613 __EXECDECL__ void Exec::PropertySubscribe(TInt, TRequestStatus*)
1615 SLOW_EXEC2(EExecPropertySubscribe);
1618 __EXECDECL__ void Exec::PropertyCancel(TInt)
1620 SLOW_EXEC1(EExecPropertyCancel);
1623 __EXECDECL__ TInt Exec::PropertyGetI(TInt, TInt*)
1625 SLOW_EXEC2(EExecPropertyGetI);
1628 __EXECDECL__ TInt Exec::PropertyGetB(TInt, TUint8*, TInt)
1630 SLOW_EXEC3(EExecPropertyGetB);
1633 __EXECDECL__ TInt Exec::PropertySetI(TInt, TInt)
1635 SLOW_EXEC2(EExecPropertySetI);
1638 __EXECDECL__ TInt Exec::PropertySetB(TInt, const TUint8*, TInt)
1640 SLOW_EXEC3(EExecPropertySetB);
1643 __EXECDECL__ TInt Exec::PropertyFindGetI(TUint, TUint, TInt*)
1645 SLOW_EXEC3(EExecPropertyFindGetI);
1648 __EXECDECL__ TInt Exec::PropertyFindGetB(TUint, TUint, TUint8*, TInt)
1650 SLOW_EXEC4(EExecPropertyFindGetB);
1653 __EXECDECL__ TInt Exec::PropertyFindSetI(TUint, TUint, TInt)
1655 SLOW_EXEC3(EExecPropertyFindSetI);
1658 __EXECDECL__ TInt Exec::PropertyFindSetB(TUint, TUint, TUint8*, TInt)
1660 SLOW_EXEC4(EExecPropertyFindSetB);
1663 __EXECDECL__ TInt Exec::PowerEnableWakeupEvents(TPowerState)
1665 SLOW_EXEC1(EExecPowerEnableWakeupEvents);
1668 __EXECDECL__ void Exec::PowerDisableWakeupEvents()
1670 SLOW_EXEC0(EExecPowerDisableWakeupEvents);
1673 __EXECDECL__ void Exec::PowerRequestWakeupEventNotification(TRequestStatus*)
1675 SLOW_EXEC1(EExecPowerRequestWakeupEventNotification);
1678 __EXECDECL__ void Exec::PowerCancelWakeupEventNotification()
1680 SLOW_EXEC0(EExecPowerCancelWakeupEventNotification);
1683 __EXECDECL__ TInt Exec::PowerDown()
1685 SLOW_EXEC0(EExecPowerDown);
1688 __EXECDECL__ TInt Exec::ProcessSetHandleParameter(TInt, TInt, TInt)
1690 SLOW_EXEC3(EExecProcessSetHandleParameter);
1693 __EXECDECL__ TInt Exec::ProcessSetDataParameter(TInt, TInt, const TUint8*, TInt)
1695 SLOW_EXEC4(EExecProcessSetDataParameter);
1698 __EXECDECL__ TInt Exec::ProcessGetHandleParameter(TInt, TObjectType, TOwnerType)
1700 SLOW_EXEC3(EExecProcessGetHandleParameter);
1703 __EXECDECL__ TInt Exec::ProcessGetDataParameter(TInt, TUint8*, TInt)
1705 SLOW_EXEC3(EExecProcessGetDataParameter);
1708 __EXECDECL__ TInt Exec::ProcessDataParameterLength(TInt)
1710 SLOW_EXEC1(EExecProcessDataParameterLength);
1713 __EXECDECL__ TUint Exec::MessageClientProcessFlags(TInt)
1715 SLOW_EXEC1(EExecMessageClientProcessFlags);
1718 __EXECDECL__ TInt Exec::ThreadStackInfo(TInt, TThreadStackInfo&)
1720 SLOW_EXEC2(EExecThreadStackInfo);
1723 __EXECDECL__ RAllocator* Exec::ThreadGetHeap(TInt)
1725 SLOW_EXEC1(EExecThreadGetHeap);
1728 __EXECDECL__ TInt Exec::ThreadAsProcess(TInt, TInt)
1730 SLOW_EXEC2(EExecThreadAsProcess);
1733 __EXECDECL__ TInt Exec::CondVarCreate(const TDesC8*, TOwnerType)
1735 SLOW_EXEC2(EExecCondVarCreate);
1738 __EXECDECL__ TInt Exec::CondVarWait(TInt, TInt, TInt)
1740 SLOW_EXEC3(EExecCondVarWait);
1743 __EXECDECL__ void Exec::CondVarSignal(TInt)
1745 SLOW_EXEC1(EExecCondVarSignal);
1748 __EXECDECL__ void Exec::CondVarBroadcast(TInt)
1750 SLOW_EXEC1(EExecCondVarBroadcast);
1753 __EXECDECL__ TInt Exec::PlatSecDiagnostic(TPlatSecDiagnostic*)
1755 SLOW_EXEC1(EExecPlatSecDiagnostic);
1758 __EXECDECL__ TLinAddr Exec::ExceptionDescriptor(TLinAddr)
1760 SLOW_EXEC1(EExecExceptionDescriptor);
1763 __EXECDECL__ void Exec::ThreadRequestSignal(TInt)
1765 SLOW_EXEC1(EExecThreadRequestSignal);
1766 //TODO: look our thread per handle
1767 //gProcess.iThread.iRequestSemaphore.Signal();
1770 __EXECDECL__ TBool Exec::MutexIsHeld(TInt)
1772 SLOW_EXEC1(EExecMutexIsHeld);
1775 __EXECDECL__ TTrapHandler* Exec::LeaveStart()
1777 SLOW_EXEC0(EExecLeaveStart);
1778 //return gProcess.iThread.iHandler;
1781 __EXECDECL__ void Exec::LeaveEnd()
1783 SLOW_EXEC0(EExecLeaveEnd);
1786 __EXECDECL__ void Exec::SetDebugMaskIndex(TUint32, TUint)
1788 SLOW_EXEC2(EExecSetDebugMaskIndex);
1791 __EXECDECL__ TInt Exec::GetModuleNameFromAddress(TAny*, TDes8&)
1793 SLOW_EXEC2(EExecGetModuleNameFromAddress);
1796 __EXECDECL__ void Exec::NotifyChanges(TUint)
1798 SLOW_EXEC1(EExecNotifyChanges);
1801 __EXECDECL__ TInt Exec::SetGlobalUserData(TInt, TInt)
1803 SLOW_EXEC2(EExecSetGlobalUserData);
1806 __EXECDECL__ TInt Exec::SessionSecurityInfo(TInt, SSecurityInfo&)
1808 SLOW_EXEC2(EExecSessionSecurityInfo);
1811 __EXECDECL__ const TRequestStatus* Exec::MessageClientStatus(TInt)
1813 SLOW_EXEC1(EExecMessageClientStatus);
1816 __EXECDECL__ TInt Exec::SetFloatingPointMode(TFloatingPointMode, TFloatingPointRoundingMode)
1818 SLOW_EXEC2(EExecSetFloatingPointMode);
1821 EXPORT_C __EXECDECL__ TBool BTrace::CheckFilter2(TUint32, TUint32)
1823 SLOW_EXEC2(EExecCheckFilter2);
1826 __EXECDECL__ TAny* Exec::ProcessExeExportData()
1828 SLOW_EXEC0(EExecProcessExeExportData);
1831 EXPORT_C __EXECDECL__ TInt E32Loader::NotifyIfCodeSegDestroyed(TRequestStatus&)
1833 SLOW_EXEC1(EExecNotifyIfCodeSegDestroyed);
1836 EXPORT_C __EXECDECL__ TInt E32Loader::GetDestroyedCodeSegInfo(TCodeSegLoaderCookie&)
1838 SLOW_EXEC1(EExecGetDestroyedCodeSegInfo);
1841 EXPORT_C __EXECDECL__ TInt Exec::SetWin32RuntimeHook(TAny*)
1843 SLOW_EXEC1(EExecSetWin32RuntimeHook);
1846 __EXECDECL__ TInt Exec::GetBTraceId(TInt)
1848 SLOW_EXEC1(EExecGetBTraceId);
1851 __EXECDECL__ void Exec::NotifyOnIdle(TRequestStatus*)
1853 SLOW_EXEC1(EExecNotifyOnIdle);
1856 __EXECDECL__ void Exec::CancelMiscNotifier(TRequestStatus*)
1858 SLOW_EXEC1(EExecCancelMiscNotifier);
1861 __EXECDECL__ void Exec::NotifyObjectDestruction(TInt, TRequestStatus*)
1863 SLOW_EXEC2(EExecNotifyObjectDestruction);
1866 __EXECDECL__ void Exec::RegisterTrustedChunk(TInt)
1868 SLOW_EXEC1(EExecRegisterTrustedChunk);
1872 Notify the kernel a thread is exiting.
1875 @return ETrue if this is the last thread in the process, EFalse otherwise.
1877 __EXECDECL__ TBool Exec::UserThreadExiting(TInt aReason)
1879 SLOW_EXEC1(EExecUserThreadExiting);
1881 //return ETrue; //No thread support ATM so we are always the last thread
1884 __EXECDECL__ TBool Exec::ChunkIsPaged(TInt)
1886 SLOW_EXEC1(EExecChunkIsPaged);
1889 __EXECDECL__ TBool Exec::ProcessDefaultDataPaged(TInt)
1891 SLOW_EXEC1(EExecProcessDefaultDataPaged);
1894 __EXECDECL__ TUint Exec::MessageClientThreadFlags(TInt)
1896 SLOW_EXEC1(EExecMessageClientThreadFlags);
1899 __EXECDECL__ TInt Exec::ShPoolCreate(const TShPoolInfo&, TUint)
1901 SLOW_EXEC2(EExecShPoolCreate);
1904 __EXECDECL__ TInt Exec::ShPoolAlloc(TInt, TUint, SShBufBaseAndSize&)
1906 SLOW_EXEC3(EExecShPoolAlloc);
1909 __EXECDECL__ void Exec::ShPoolGetInfo(TInt, TShPoolInfo&)
1911 SLOW_EXEC2(EExecShPoolGetInfo);
1914 __EXECDECL__ TUint Exec::ShPoolFreeCount(TInt)
1916 SLOW_EXEC1(EExecShPoolFreeCount);
1919 __EXECDECL__ TInt Exec::ShPoolNotification(TInt, TShPoolNotifyType, TUint, TRequestStatus&)
1921 SLOW_EXEC4(EExecShPoolNotification);
1924 __EXECDECL__ TInt Exec::ShPoolNotificationCancel(TInt, TShPoolNotifyType, TRequestStatus&)
1926 SLOW_EXEC3(EExecShPoolNotificationCancel);
1929 __EXECDECL__ TInt Exec::ShPoolBufferWindow(TInt, TInt, TBool)
1931 SLOW_EXEC3(EExecShPoolBufferWindow);
1934 __EXECDECL__ TInt Exec::ShBufMap(TInt, TBool, SShBufBaseAndSize&)
1936 SLOW_EXEC3(EExecShBufMap);
1939 __EXECDECL__ TInt Exec::ShBufUnMap(TInt)
1941 SLOW_EXEC1(EExecShBufUnMap);
1944 __EXECDECL__ TInt Exec::ShBufBaseAndSize(TInt, SShBufBaseAndSize&)
1946 SLOW_EXEC2(EExecShBufBaseAndSize);